优秀的编程知识分享平台

网站首页 > 技术文章 正文

python学习——035python里if __name__ == "__main__"语句的作用

nanyue 2025-05-26 17:49:30 技术文章 9 ℃

在标准的 Python 执行环境中,if __name__ == "__main__" 语句块就是专门用于判断脚本是否作为主程序直接运行的。

示例一:简单的函数定义与测试

def add_numbers(a, b):
    """
    两个数相加的函数
    """
    return a + b

if __name__ == "__main__":
    num1 = 5
    num2 = 3
    result = add_numbers(num1, num2)
    print(f"{num1} + {num2} 的结果是: {result}")

在这个示例中,add_numbers 函数定义了两个数相加的功能。if __name__ == "__main__" 块中的代码用于测试这个函数,当直接运行该脚本时,会执行测试代码并输出结果。如果该脚本被其他脚本导入,add_numbers 函数可以被使用,但测试代码不会执行。

示例二:类的定义与实例化测试

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"我叫 {self.name},今年 {self.age} 岁。")

if __name__ == "__main__":
    person = Person("Alice", 25)
    person.introduce()

这里定义了 Person 类,包含构造函数 __init__ 和方法 introduce。if __name__ == "__main__" 块用于创建 Person 类的实例并调用 introduce 方法进行测试。当该脚本被导入到其他脚本中时,Person 类可以被实例化和使用,但测试代码不会运行。

示例三:模块之间的导入与使用
假设有两个脚本文件,module1.py 和 module2.py。

module1.py 的内容如下:

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

if __name__ == "__main__":
    num1 = 4
    num2 = 6
    result = multiply_numbers(num1, num2)
    print(f"{num1} * {num2} 的结果是: {result}")

module2.py 的内容如下:

import module1

# 调用 module1 中的函数
product = module1.multiply_numbers(3, 5)
print(f"在 module2 中调用的结果是: {product}")

在这个例子中,module1 定义了一个函数 multiply_numbers 并在 if __name__ == "__main__" 块中进行了测试。module2 导入了 module1 并调用了其中的函数。当运行 module1.py 时,测试代码会执行;当运行 module2.py 时,module1 中的测试代码不会执行,只会执行 module2 中调用函数的相关代码。

在正常的 Python 代码执行逻辑中,只有当脚本被直接运行时,if __name__ == "__main__" 语句块内的代码才会被执行,没有其他常规情况下会执行该语句块 。

__name__ 是 Python 中每个模块都有的内置属性。当一个 Python 脚本作为主程序直接运行时,Python 会将该脚本的 __name__ 属性设置为 "__main__"。而当一个脚本被导入作为模块使用时,__name__ 的值会被设置为该模块的名称(即文件名去掉 .py 后缀),因此 if __name__ == "__main__" 条件不成立,其内部代码块不会被执行。

Tags:

最近发表
标签列表