建立两个py文件,分别命名first_module.py,second_module.py
代码如下:
first_module.py
# -*- coding: UTF-8 -*-
print('hello world')
def print_name():
print(__name__)
if __name__ == '__main__':
print(__name__)
执行结果如下:
second_module.py
# -*- coding: UTF-8 -*- import first_module first_module.print_name() print(__name__)
执行结果如下:
导入模块底层做的事:
- 在自己原有的命名空间中执行所有代码
- 创建一个对象,并将模块内所有顶级变量以属性的形式绑定在模块对象上
- 在导入位置,引入import后面的变量名称到当前命名空间
补充解释:
运行第一个文件时__name__= “main”,if条件为真,执行后面代码。
运行第二个文件时,import first_module后会在原有的命名空间执行第一个文件的所有代码,此时第一个文件的__name__= “first_module”,所以if条件为假,后面的内容不执行。接着first_module.print_name()这行代码调用一文件中的print_name函数,输出是first_module(注意是原有空间),最后print(__name__)这行代码输出是__main__
我们会发现运行哪个文件,其__name__ = “__main__”



