目录
"__name__"是 Python 中的一个特殊属性,它表示当前文件或模块的名称。
当一个 Python 脚本作为主文件或者主模块被直接运行时,"__name__" 的值就是 "__main__"。
而当该脚本被其他模块导入时,即"__name__"位于次文件(被导入的文件)中,则执行"__name__"时返回的值就是导入的文件名。
这个属性有以下常见用途:
1. 用于判断当前模块是否作为主模块运行,从而执行不同的逻辑。
2. 在被导入的模块中,根据 "__name__" 的值来控制某些代码是否执行,例如只在模块自身运行时执行一些测试或示例代码。
下面是一个简单的示例代码:
if __name__ == '__main__':
print("This code is running as the main module.")
else:
print("This code is being imported by another module.")
在这个示例中,根据 "__name__"的值来决定执行不同的打印语句。
实例演示:
子文件first.py:
def hua():
print("第一个函数成功调用")
def shu():
print("第二个函数成功调用")
def cao():
print("第三个函数成功调用")
def fun(n):
print("first.py的name属性返回值:",__name__)
return n
if __name__=="__main__":#如果__name__属性返回值是主文件名为True,则调用fun(n)函数,n=8,并打印出来-->利用if来判断当前文件是否为主文件
print(fun(8))
主文件second.py
import first#导入子文件模块
def fun2(n):
return n*n
first.hua()#调用子模块的函数
first.shu()
first.cao()
print("second.py的name属性返回值:",__name__)#打印当前文件的__name__属性
if __name__=="__main__":#用if判断当前文件是否为主文件
print(fun2(6))
主文件second.py的运行结果:
运行结果分析:
第1行代码导入子文件first.py,则开始执行子文件,由于first.py前9行代码都是定义函数,代码从第10行开始执行,而当前文件不属于主文件,if语句不满足条件返回False,程序不会执行if包含的代码块。
第2、3行代码为定义函数,不执行。
第4、5、6行代码是主文件调用子文件里的函数,依次跳到对应的位置执行。
第7行代码,直接打印当前文件的__name__属性,直观体现second.py文件是不是主文件,即看它的执行结果是不是“__main__”。
第8、9行代码用if语句判断当前文件是不是主文件,True的话执行下面的代码块,即调用fun2()函数,并传入参数6,返回函数值;False的话直接结束。
实际的运行结果也能证明:first.py作为子文件被主文件second.py导入使用。
~希望这个介绍对你有帮助! ~~ 请注意消化吸收!!!
如果你还有其他关于 "__name__"属性的问题,请随时评论区提问......
xue