python内置变量详解

Python 内置变量是 Python 解释器自动定义的一些特殊变量和对象。这些内置变量包含了 Python 语言的核心功能、类型、异常等,用户不需要显式定义它们。以下是 Python 中常见的内置变量的详细介绍:

  1. name
    用途:表示模块的名称。

用法:

当模块被直接运行时,name 的值为 “main”。
当模块被导入到其他模块中时,name 的值为模块的名称。

# module.py
if __name__ == "__main__":
    print("模块被直接运行")
else:
    print("模块被导入")

  1. doc
    用途:表示模块、类、方法或函数的文档字符串(docstring)。

用法:

通过 .doc 属性访问文档字符串。

def foo():
    """这是函数 foo 的文档字符串"""
    pass

print(foo.__doc__)  # 输出: 这是函数 foo 的文档字符串

  1. file
    用途:表示当前模块的文件路径。

用法:

可以用来获取模块的文件路径。

import os
print(__file__)  # 输出当前模块的文件路径

  1. dict
    用途:用于访问对象的属性字典。

用法:

通过 .dict 属性获取类或实例的属性字典。

class MyClass:
    a = 1

print(MyClass.__dict__)  # 输出: {'__module__': '__main__', 'a': 1, ...}

  1. builtins
    用途:表示 Python 内置的所有名称(如 int、str、len 等)。

用法:

通过 builtins 可以访问内置的模块和函数。

import builtins
print(builtins.__dict__)  # 输出所有内置函数和类型

  1. import
    用途:表示内置的 import 函数。

用法:

可以用来动态导入模块。

math = __import__('math')
print(math.sqrt(4))  # 输出: 2.0

  1. annotations
    用途:表示函数或方法的注解。

用法:

可以通过 .annotations 属性访问函数的注解。

def func(a: int, b: str) -> None:
    pass

print(func.__annotations__)  # 输出: {'a': <class 'int'>, 'b': <class 'str'>, 'return': <class 'NoneType'>}

  1. class
    用途:表示对象的类。

用法:

可以用来获取实例对象的类。

class MyClass:
    pass

obj = MyClass()
print(obj.__class__)  # 输出: <class '__main__.MyClass'>

  1. repr
    用途:表示对象的字符串表示形式,用于调试和开发。

用法:

通过 .repr() 方法获取对象的字符串表示。

class MyClass:
    def __repr__(self):
        return "MyClass()"

obj = MyClass()
print(repr(obj))  # 输出: MyClass()

  1. str
    用途:表示对象的用户友好的字符串表示形式。

用法:

通过 .str() 方法获取对象的字符串表示。

class MyClass:
    def __str__(self):
        return "This is MyClass"

obj = MyClass()
print(str(obj))  # 输出: This is MyClass

  1. 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

  1. call
    用途:使对象可以像函数一样被调用。

用法:

通过实现 call 方法,可以使实例像函数一样被调用。

class MyClass:
    def __call__(self, x):
        return x * 2

obj = MyClass()
print(obj(5))  # 输出: 10

  1. enter, exit
    用途:用于实现上下文管理器,使对象能够用于 with 语句。

用法:

实现 enterexit 方法可以使类实例作为上下文管理器使用。

class MyContext:
    def __enter__(self):
        print("进入上下文")
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print("退出上下文")

with MyContext() as context:
    print("在上下文中")

  1. 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

  1. iter, next
    用途:用于实现迭代器协议,使对象可以被迭代。

用法:

实现 iternext 方法可以使对象成为迭代器。

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

  1. 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

  1. 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

  1. repr, str
    用途:这两个方法用于定义对象的字符串表示形式。repr 更加详细,通常用于调试;str 更加用户友好。

用法:

reprstr 方法可以定义对象如何转化为字符串。

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

  1. hash
    用途:用于获取对象的哈希值。

用法:

通过实现 hash 方法,可以定义对象如何处理哈希操作。

class MyClass:
    def __init__(self, value):
        self.value = value

    def __hash__(self):
        return hash(self.value)

obj = MyClass(10)
print(hash(obj))  # 输出对象的哈希值

  1. 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 的高级功能和编程技巧。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值