Python 内置变量是 Python 解释器自动定义的一些特殊变量和对象。这些内置变量包含了 Python 语言的核心功能、类型、异常等,用户不需要显式定义它们。以下是 Python 中常见的内置变量的详细介绍:
- name
用途:表示模块的名称。
用法:
当模块被直接运行时,name 的值为 “main”。
当模块被导入到其他模块中时,name 的值为模块的名称。
# module.py
if __name__ == "__main__":
print("模块被直接运行")
else:
print("模块被导入")
- doc
用途:表示模块、类、方法或函数的文档字符串(docstring)。
用法:
通过 .doc 属性访问文档字符串。
def foo():
"""这是函数 foo 的文档字符串"""
pass
print(foo.__doc__) # 输出: 这是函数 foo 的文档字符串
- file
用途:表示当前模块的文件路径。
用法:
可以用来获取模块的文件路径。
import os
print(__file__) # 输出当前模块的文件路径
- dict
用途:用于访问对象的属性字典。
用法:
通过 .dict 属性获取类或实例的属性字典。
class MyClass:
a = 1
print(MyClass.__dict__) # 输出: {'__module__': '__main__', 'a': 1, ...}
- builtins
用途:表示 Python 内置的所有名称(如 int、str、len 等)。
用法:
通过 builtins 可以访问内置的模块和函数。
import builtins
print(builtins.__dict__) # 输出所有内置函数和类型
- import
用途:表示内置的 import 函数。
用法:
可以用来动态导入模块。
math = __import__('math')
print(math.sqrt(4)) # 输出: 2.0
- annotations
用途:表示函数或方法的注解。
用法:
可以通过 .annotations 属性访问函数的注解。
def func(a: int, b: str) -> None:
pass
print(func.__annotations__) # 输出: {'a': <class 'int'>, 'b': <class 'str'>, 'return': <class 'NoneType'>}
- class
用途:表示对象的类。
用法:
可以用来获取实例对象的类。
class MyClass:
pass
obj = MyClass()
print(obj.__class__) # 输出: <class '__main__.MyClass'>
- repr
用途:表示对象的字符串表示形式,用于调试和开发。
用法:
通过 .repr() 方法获取对象的字符串表示。
class MyClass:
def __repr__(self):
return "MyClass()"
obj = MyClass()
print(repr(obj)) # 输出: MyClass()
- str
用途:表示对象的用户友好的字符串表示形式。
用法:
通过 .str() 方法获取对象的字符串表示。
class MyClass:
def __str__(self):
return "This is MyClass"
obj = MyClass()
print(str(obj)) # 输出: This is MyClass
- eq, ne, lt, le, gt, ge
用途:这些方法用于实现对象的比较操作。
用法:
通过重载这些特殊方法,可以定义对象的比较行为。
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
return self.value == other.value
obj1 = MyClass(10)
obj2 = MyClass(10)
print(obj1 == obj2) # 输出: True
- call
用途:使对象可以像函数一样被调用。
用法:
通过实现 call 方法,可以使实例像函数一样被调用。
class MyClass:
def __call__(self, x):
return x * 2
obj = MyClass()
print(obj(5)) # 输出: 10
- enter, exit
用途:用于实现上下文管理器,使对象能够用于 with 语句。
用法:
实现 enter 和 exit 方法可以使类实例作为上下文管理器使用。
class MyContext:
def __enter__(self):
print("进入上下文")
return self
def __exit__(self, exc_type, exc_value, traceback):
print("退出上下文")
with MyContext() as context:
print("在上下文中")
- getitem, setitem, delitem
用途:用于实现对象的索引操作。
用法:
通过实现这些方法,可以定义对象如何处理索引操作。
class MyClass:
def __init__(self):
self.data = [1, 2, 3]
def __getitem__(self, index):
return self.data[index]
obj = MyClass()
print(obj[1]) # 输出: 2
- iter, next
用途:用于实现迭代器协议,使对象可以被迭代。
用法:
实现 iter 和 next 方法可以使对象成为迭代器。
class MyIterator:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current < self.max:
self.current += 1
return self.current
else:
raise StopIteration
it = MyIterator(3)
for value in it:
print(value) # 输出: 1 2 3
- contains
用途:用于检查对象是否包含某个元素。
用法:
通过实现 contains 方法,可以定义对象如何处理 in 操作符。
class MyClass:
def __init__(self):
self.items = [1, 2, 3]
def __contains__(self, item):
return item in self.items
obj = MyClass()
print(2 in obj) # 输出: True
- len
用途:用于获取对象的长度或大小。
用法:
通过实现 len 方法,可以定义对象如何处理 len() 函数。
class MyClass:
def __init__(self):
self.items = [1, 2, 3]
def __len__(self):
return len(self.items)
obj = MyClass()
print(len(obj)) # 输出: 3
- repr, str
用途:这两个方法用于定义对象的字符串表示形式。repr 更加详细,通常用于调试;str 更加用户友好。
用法:
repr 和 str 方法可以定义对象如何转化为字符串。
class MyClass:
def __repr__(self):
return "MyClass()"
def __str__(self):
return "This is MyClass"
obj = MyClass()
print(repr(obj)) # 输出: MyClass()
print(str(obj)) # 输出: This is MyClass
- hash
用途:用于获取对象的哈希值。
用法:
通过实现 hash 方法,可以定义对象如何处理哈希操作。
class MyClass:
def __init__(self, value):
self.value = value
def __hash__(self):
return hash(self.value)
obj = MyClass(10)
print(hash(obj)) # 输出对象的哈希值
- eq, ne, lt, le, gt, ge
用途:这些方法用于实现对象的比较操作。
用法:
通过重载这些特殊方法,可以定义对象的比较行为。
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
return self.value == other.value
def __lt__(self, other):
return self.value < other.value
obj1 = MyClass(10)
obj2 = MyClass(20)
print(obj1 < obj2) # 输出: True
小结
Python 内置变量和特殊方法提供了丰富的功能和灵活性,使得 Python 的对象和模块可以实现自定义行为,方便进行复杂的数据处理和程序控制。通过理解和使用这些内置变量,你可以更好地掌握 Python 的高级功能和编程技巧。