1. __name__:
作用:用于标识当前模块的名称。当一个 Python 文件被直接运行时,__name__ 的值为 "__main__";当该文件作为模块被其他文件导入时,__name__ 的值为该文件的文件名(不包含 .py 后缀)。
-
若模块被直接运行,值为 "__main__"。
-
若模块被导入,值为模块的文件名(不含 .py 后缀)
# test.py print(f"当前模块的 __name__ 是: {__name__}") if __name__ == "__main__": print("此文件正在被直接运行") else: print("此文件作为模块被导入")
2. __file__ :
作用:对于脚本文件,它返回该脚本文件的完整路径(包含文件名);对于交互式解释器或嵌入式环境,__file__ 可能未定义。
print(__file__)
# 运行此脚本,会输出该脚本文件的完整路径。
3. __doc__:
作用:用于获取对象的文档字符串。文档字符串是位于模块、类、函数或方法开头的字符串,用于描述该对象的用途和功能。
def add(a, b):
"""
此函数用于计算两个数的和
:param a: 第一个数
:param b: 第二个数
:return: 两数之和
"""
return a + b
print(add.__doc__)# 输出结果为函数 add 的文档字符串内容。
4. __package__:
作用:用于标识当前模块所属的包。如果当前模块是顶级模块(即不在任何包中),__package__ 的值为 None;如果在包中,__package__ 的值为包的名称。
my_package/
__init__.py
module.py
print(__package__)
# 输出为 "my_package"。
5.__class__ :
作用:用于获取对象所属的类。
class MyClass:
pass
obj = MyClass()
print(obj.__class__)
# 输出为 <class '__main__.MyClass'>。
6.__all__:作用:定义模块的公开接口(通过 from module import * 导出的内容)。
# module.py__all__ = ["func1", "func2"]
def func1(): pass
def func2(): pass
def _private_func(): pass # 不会被导出
类与对象级内置变量
01__dict__ 作用:存储对象或类的属性字典。
class MyClass:
x = 1
obj = MyClass()
print(MyClass.__dict__) # 输出类的属性(包括方法)
print(obj.__dict__) # 输出实例的属性(默认为空)
02__class__作用:返回对象所属的类。
num = 42
print(num.__class__) # 输出:<class 'int'>
03__bases__作用:返回类的父类元组。
class Parent: pass
class Child(Parent): pass
print(Child.__bases__) # 输出:(<class '__main__.Parent'>,)
04__slots__ 作用:限制类的实例属性,优化内存使用。
class Point:
__slots__ = ('x', 'y') # 只允许实例有 x 和 y 属性
p = Point()
p.x = 1 # 合法
p.z = 2 # 报错:AttributeError
05__traceback__ 作用:存储异常的调用堆栈信息。
try:
1 / 0
except Exception as e:
print(e.__traceback__) # 输出堆栈跟踪对象
06__builtins__ 作用:指向内置函数和类型的命名空间(如 len, str, dict 等)。print(__builtins__.len([1,2,3])) # 输出:30
07__import__(name) 作用:动态导入模块(Python 内部使用)。
math_module = __import__('math')
print(math_module.sqrt(4)) # 输出:2.0