Python模块中直接定义的函数、变量属性及术语相关技术咨询
Python模块级对象与类变量相关问题解答
一、模块级函数和变量的性质
直接定义在.py文件(模块)中的函数和变量不属于"静态"范畴,它们的官方术语是模块级对象,隶属于所在模块的命名空间:
- 这类对象的生命周期和模块绑定:模块被导入时加载,直到Python解释器退出才会被回收。
- 任何导入该模块的代码都可以通过
模块名.变量名/函数名访问,也可通过from 模块名 import ...直接引入使用。
举个简单例子:
# demo.py module_str = "这是模块级变量" def module_print(): print("这是模块级函数")
在其他文件中导入后即可直接调用:
import demo print(demo.module_str) # 输出:这是模块级变量 demo.module_print() # 输出:这是模块级函数
二、类变量与"静态变量"的关系
在Python中没有独立的"static variables"(静态变量)术语,开发者常说的"静态变量"其实就是class variables(类变量),二者指向同一概念:
- 类变量是定义在类内部、所有方法之外的变量,属于类本身,会被该类的所有实例共享。
- 它和实例变量的核心区别是:类变量存储在类的命名空间中,修改类变量会影响所有未自行绑定同名变量的实例;而实例变量存储在单个实例的命名空间中,仅对当前实例生效。
示例代码:
class Counter: count = 0 # 这就是类变量(常被称为"静态变量") def __init__(self): Counter.count += 1 # 修改类变量 # 创建实例 c1 = Counter() c2 = Counter() print(Counter.count) # 输出:2,所有实例共享这个值
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

