说说变量 __name__ 和它可能取到的一个值 __main__

结合 例子 弄懂 变量__name__ 和它的值’ main’这两个东西。
首先,明白两个定义,
__name__是一个变量,
'__main__'是个普通字符串,不是变量,但可以作为变量的值。

例子:

1.py

代码如下:

if __name__=='__main__':
    print('>>>如果 aCode.py 的变量 __name__ 的值不再等于 __main__ ,那么本行及其下面的代码将不会被打印。')
    print('>>>因为 aCode.py 还没有被其他 .py 文件所引用, 变量__name__的当前值仍是 :',__name__,',所以本行及上一行可以正常被打印。')

1.py打印结果如下:
>>>如果 1.py 的变量 __name__ 的值不再等于 __main__ ,那么本行及其下面的代码将不会被打印。
>>>因为 1.py 还没有被其他 .py 文件所引用, 变量__name__的当前值是 : __main__ ,所以本行及上一行可以正常被打印。

2.py

代码如下:

import 1

print('2.py 的变量 __name__, 当前值是 :',__name__)
print('而在当前文件 2.py中, 1.py代码的变量 __name__ 的值发生了变化,变成:',1.__name__)
print('所以,在 2.py里, 1.py代码中的部分语句没有执行。也就是1.py 的两条 print语句没有打印。')

2.py 的代码打印结果如下:
>>>2.py 的变量 __name__, 当前值是 : __main__
>>>而在当前文件 2.py, 1.py代码的变量 __name__ 的值发生了变化,为: 1
>>>所以,2.py, 1.py代码中的部分语句没有执行。也就是1.py 的两条 print语句没有打印。

可以看出,__name__ 这个变量是会变化的,
当一个 .py 文件的__name__ 变量为 '__main__'时,说明这个 .py 文件是独立的,没有被其他 .py 文件引用,
当一个 .py 文件的__name__变量不是 '__main__'时,说明这个 .py 文件不是独立的,被其他 .py文件引用了,此时,被引用的 .py 文件的__name__变量的值是 它的文件名

因此,我们可以通过在可能被引用的 .py 文件中设置 if __name__=='__main__':语句来控制 被引用的 .py 文件中代码可不可以在被其他 .py 文件引用时执行。

①.没有被引用, if __name__=='__main__': 条件成立,其下的代码会被执行,
②.被引用, if __name__=='__main__': 不成立,其下代码不会被执行,

还可以用 if __name__=='__main__': 来控制本 .py 在被其他 .py 引用时,本 .py 中的代码是不是要被自动执行,
因为,当导入一个模块时,被导入模块其内的所有代码都将被自动化的依次执行,
所以,我们将本.py 被别的.py 导入时,不想被自动执行的那些代码放到 if __name__=='__main__': 里面,就可以了。
因为,本.py 被别的.py 导入时,.py 的变量__name__的值 不再是 '__main__'了,而是变成了.py的文件名,所以, if __name__=='__main__': 不成立,所以,其下所有的语句将不会在被其他.py导入时被自动执行了,

February the 19th 2023 Sunday

猜你喜欢

转载自blog.csdn.net/m0_47505062/article/details/129107300
今日推荐