Python 中的 `__name__` 变量

Python 中的 __name__ 变量

在 Python 中,__name__ 是一个特殊的内置变量,用于表示当前模块的名称。它的值取决于模块是如何被使用的。如果模块是被直接执行的,__name__ 的值为 "__main__";如果模块是被导入的,__name__ 的值为模块的名称。

  1. 直接执行模块:当一个 Python 文件被直接执行时,__name__ 的值为 "__main__"
  2. 导入模块:当一个 Python 文件被作为模块导入时,__name__ 的值为模块的名称(即文件名,不包括 .py 扩展名)。
示例
示例1:直接执行模块

假设我们有一个名为 mymodule.py 的文件,内容如下:

# 文件名: mymodule.py

def greet(name):
    return f"Hello, {name}!"

if __name__ == "__main__":
    print("This module is being run directly.")
    print(greet("Alice"))

在这个例子中,如果直接执行 mymodule.py__name__ 的值为 "__main__",因此会执行 if 语句块中的代码:

python mymodule.py

输出:

This module is being run directly.
Hello, Alice!
示例2:导入模块

假设我们有一个名为 main.py 的文件,内容如下:

# 文件名: main.py

import mymodule

print("This module is being imported.")
print(mymodule.greet("Bob"))

在这个例子中,如果执行 main.pymymodule 模块被导入,__name__ 的值为 "mymodule",因此不会执行 mymodule.py 中的 if 语句块:

python main.py

输出:

This module is being imported.
Hello, Bob!
使用场景

__name__ 变量常用于以下场景:

  1. 模块测试:在模块中编写测试代码,只在直接执行模块时运行测试。
  2. 避免重复执行:确保某些代码只在模块被直接执行时运行,而不是在被导入时运行。
示例3:模块测试

假设我们有一个名为 calculator.py 的文件,内容如下:

# 文件名: calculator.py

def add(a, b):
    return a + b

def subtract(a, b):
    return a - b

def multiply(a, b):
    return a * b

def divide(a, b):
    if b == 0:
        raise ValueError("Cannot divide by zero.")
    return a / b

if __name__ == "__main__":
    print("Running tests...")
    assert add(2, 3) == 5
    assert subtract(5, 2) == 3
    assert multiply(3, 4) == 12
    assert divide(10, 2) == 5
    print("All tests passed.")

在这个例子中,如果直接执行 calculator.py,会运行测试代码:

python calculator.py

输出:

Running tests...
All tests passed.

如果 calculator.py 被导入到其他模块中,测试代码不会被执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值