18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > 【python】python中的__name__到底是个什么东西?

【python】python中的__name__到底是个什么东西?

时间:2023-02-20 05:22:01 | 来源:建站知识

时间:2023-02-20 05:22:01 来源:建站知识

【python】python中的__name__到底是个什么东西?:

1. 概述

在python中,每个.py文件称为一个模块(module),每个module又会有它自己的attribute(官方文档翻译为“属性”)。对于一个空的.py文件,它也至少包含9个内置attribute,这9个内置attribute如下

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

1.1 内置attribute

比如,一个最简单的demo.py文件如下

# demo.pyprint(dir()) # dir()函数用以查看该module的所有attribute执行以后得到如下输出结果

$ python demo.py['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']

1.2 定义一个新的变量

如果在demo.py中定义一个变量a,那么该module的attribute就会多一个:

# demo.pya = 1 # 定义一个变量aprint(dir())执行结果如下(注意列表最后多了个'a')

$ python demo.py['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a']

2. 执行当前文件

如果当前文件被当做主程序(main program)执行时(注意python没有main方法),那么当前文件/模块的__name__就会被定义为"__main__",如

# demo.pyprint(__name__)结果:

$ python demo.py__main__

3. 作为被import的module

3.1 同级文件import

如果某.py文件/module作为被import的模块,那么该module的__name__将被定义为module的名字,如

# demo.py""".├── demo.py├── module.py"""from module import print_nameprint_name()

# module.py""".├── demo.py├── module.py"""def print_name(): print(__name__)执行结果如下

$ python demo.pymodule

3.2 不同级文件import

如果不同级某.py文件/module作为被import的模块,那么该module的__name__将被定义为module的名字,同时加上路径,如

# demo.py""".├── demo.py├── trash| ├── module.py"""from trash.module import print_nameprint_name()

# module.py""".├── demo.py├── trash| ├── module.py"""def print_name(): print(__name__)执行结果如下

$ python demo.pytrash.module

关键词:

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭