每个模块之间的变量都是独立的命名空间
而命名空间又有globals() 与locals()
所以使用global去定义全局变量是无法再模块之间去调用的 (已经通过实验证实)
当一行代码要使用变量 x 的值时,Python会到所有可用的名字空间去查找变量,按照如下顺序:
1.局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x,Python将使用这个变量,然后停止搜索。
2.全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python
将使用这个变量然后停止搜索。
3.内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python将假设 x 是内置函数或变量。
所以只能通过以下方法实现:
1: import sys
2: sys.module['__main__'].vars
if __name__ = '__main__': 作用:
在模块测试代码的时候就用使用
如果在它之后的代码被运行,说明该模块是直接运行的,也就说主模块
如果在它之后的代码没有被运行,说明该模块是被模块调用的
比如有一个varmain.py脚本
varmain.py实际上是两个模块,一个是__main__,一个是varmain,也就是说,这个文件会被载入两次。
你设置的是__main__中的hello,不是varmain中的hello。
如果一个文件夹下面有这个文件,说明它被档次package使用了
当用该package的时候,这个文件就会被执行一遍
1: 附:模块查找的顺序
2: sys.path 可以查看到
3: sys.path.append 可以增加搜索路径
4: 先是查找当前路径下
5: 再去查找lib目录
6: 最后是 site-packages
Question:
还有python的原始关键字如何打印与保存,并且用于正则表达式的测试
参考链接:
1. python实现调用其他python脚本的方法,实现调用python脚本
2. Python脚本报错AttributeError: ‘module’ object has no attribute’xxx’解决方法
3. Python 中的模块和包
4. Python导入模块的几种姿势
5. [Python学习] 专题六.局部变量、全局变量global、导入模块变量
没有评论:
发表评论