Python预定义宏

在Python中,预定义宏是指在编译时由解释器定义的一些常量或全局变量。这些宏可以提供有关Python解释器和环境的信息,帮助我们更好地理解和优化代码。本文将介绍几个常用的Python预定义宏,并提供相应的代码示例。

1. __name__

__name__是一个预定义宏,它是一个字符串,表示当前模块的名称。当直接运行一个脚本时,__name__的值为__main__;当一个脚本被作为模块导入时,__name__的值为模块的名称。

以下是一个示例代码:

# example.py
def greet():
    print("Hello, World!")

if __name__ == "__main__":
    greet()

在上面的代码中,如果直接运行example.pygreet()函数将被调用并输出"Hello, World!"。但如果将example.py作为模块导入到另一个脚本中,greet()函数将不会被调用。

2. __file__

__file__是一个预定义宏,它是一个字符串,表示当前脚本的文件路径。这个宏对于定位脚本所在目录非常有用。

以下是一个示例代码:

# example.py
import os

print("Script path:", __file__)
print("Script directory:", os.path.dirname(__file__))

在上面的代码中,__file__表示当前脚本的文件路径。os.path.dirname(__file__)表示当前脚本所在的目录。

3. __doc__

__doc__是一个预定义宏,它是一个字符串,表示当前模块、类或函数的文档字符串。文档字符串是在定义时写在代码块中的注释,用于描述模块、类或函数的功能和使用方法。

以下是一个示例代码:

# example.py
def add(a, b):
    """
    This function adds two numbers.
    """
    return a + b

print(add.__doc__)

在上面的代码中,add.__doc__表示add()函数的文档字符串。通过print()函数可以将文档字符串输出到控制台上。

4. __builtins__

__builtins__是一个预定义宏,它是一个字典,包含了Python解释器中的内建函数和异常。我们可以通过__builtins__来访问这些内建函数和异常。

以下是一个示例代码:

# example.py
print("Built-in functions:", dir(__builtins__))
print("Exception classes:", dir(__builtins__.__class__))

在上面的代码中,dir(__builtins__)表示获取所有内建函数的名称列表,dir(__builtins__.__class__)表示获取所有异常类的名称列表。

5. __debug__

__debug__是一个预定义宏,它是一个布尔值,表示当前是否处于调试模式。调试模式通常用于在开发过程中进行代码调试和错误追踪。

以下是一个示例代码:

# example.py
def divide(a, b):
    # Only divide when in debug mode
    assert __debug__, "Debug mode is off"
    return a / b

print(divide(10, 2))

在上面的代码中,assert __debug__, "Debug mode is off"表示仅在调试模式下执行除法操作。如果不在调试模式下运行,会抛出一个AssertionError异常。


以上是几个常用的Python预定义宏的介绍。通过使用这些预定义宏,我们可以更好地理解和优化Python代码。希望本文对你有所帮助。

类图如下所示:

classDiagram
    class __builtins__
    class example
    __builtins__ "1" -- "1" example

Reference:

  • [Python 官方文档](