python中的__name__是哪个对象的属性?相当于self.__name__么?

print(__name__,type(__name__))

结果:__main__ <class 'str'>
我的疑问是__name__是哪个对象的属性?相当于self.__name__么?还是thismodule.__name__?

经起风了大神点拨,果然

import pandas as pd
print(pd.__name__)

pandas

阅读 2.4k
2 个回答

__name__ 是一个built-in变量,它的值是评估模块/包的名字得到的。所以如果你import一个模块/包,那自然就是模块/包的名字。但如果你直接运行某个python文件,那么作为顶层脚本运行时,__name__就是__main__。所以会经常看到

if __name__ == '__main__':
 code_block

约定俗成上来说,如果你设计的是一个功能性的模块,换言之,希望被用户导入使用的话,那么你应该在上面code_block中实现简单的单元测试或sanity check。因为这部分代码在import时不会触发。只有在直接运行时才会触发。

经起风了大神提示又做了测试,果然:

import pandas as pd
print(pd.__name__)

pandas

当前主程序的名字

推荐问题
宣传栏