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

print(__name__,type(__name__))

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

经起风了大神点拨,果然

import pandas as pd
print(pd.__name__)

pandas

阅读 469
评论 更新于 2019-01-22
    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

    评论 赞赏 2019-01-25