当前位置: 首页 > news >正文

说说变量 __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 1print('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

http://www.lryc.cn/news/12851.html

相关文章:

  • 软考高级-信息系统管理师之整体管理(最新版)
  • JVM学习篇垃圾收集器ParNewCMS与底层三色标记算法详解
  • 基于FFmpeg和Screen Capturer Recorder实现屏幕和声音的录制
  • 猿人学14题详解
  • Allegro如何快速把推挤的走线变平滑操作指导
  • nginx基础学习
  • 【HDFS】FsDatasetImpl#recoverClose方法
  • 加油站会员管理小程序实战开发教程15 完结篇
  • 学习 Python 之 Pygame 开发坦克大战(五)
  • 【ROS】Windows系统安装ROS体验
  • 第1讲-初步认识数据库系统(测试题总结)
  • 进程-操作系统结构
  • 【网络原理6】数据链路层协议——以太网
  • 组合数学原理与例题
  • 【机器学习 深度学习】通俗讲解集成学习算法
  • 汉字----dgfont
  • C# chart绘图 鼠标响应
  • 结构体与引用
  • 13.罗马数字转整数
  • JVM垃圾回收机制
  • Java File类、IO流、Properties属性类
  • MySQL备份恢复(十二)
  • 【Java|golang】1792. 最大平均通过率---封装最小堆
  • PHP 页面静态化
  • 【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法
  • 基于android的无人健身房
  • 带你Java基础入门
  • VNCTF 2023 - Web 象棋王子|电子木鱼|BabyGo Writeups
  • 「JVM 编译优化」插入式注解处理器(自定义代码编译检查)
  • 一文彻底理解大小端和位域 BIGENDIAN LITTLEENDIAN