1.1 描述
python的_X指出不被復(fù)制的變量,all指出要復(fù)制的變量。
NO | 變量 | 描述 |
---|---|---|
1 | _X | from module import*,不復(fù)制X變量(單下劃線開(kāi)頭的變量) |
2 | all | from module import *,只復(fù)制all列表內(nèi)變量,用于模塊文件; from pkg import *,只導(dǎo)入all列表內(nèi)模塊,用于包文件init.py; |
3 | _X和all | 只針對(duì)from x import * 語(yǔ)句生效。 對(duì)非from的import語(yǔ)句無(wú)效。 |
1.2 模塊_X
文件內(nèi)容
pkgmoda.py
import os
print('run:{}'.format(os.path.abspath(__file__)))
s='梯閱線條'
_a='tyxt'
b=9555
from module import * 不復(fù)制_X變量
# cmd 執(zhí)行下面命令
C:UsersAdministrator>e:&cd E:documentsF盤(pán)
E:documentsF盤(pán)>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
# from module import * 不復(fù)制_X變量
>>> from pkg.moda import *
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmoda.py
# 復(fù)制非單下劃線開(kāi)頭變量,可訪問(wèn)
>>> s
'梯閱線條'
>>> b
9555
# 不復(fù)制單下劃線開(kāi)頭變量,不可訪問(wèn)
>>> _a
Traceback (most recent call last):
File "" , line 1, in
NameError: name '_a' is not defined
單下劃線開(kāi)頭變量,對(duì)非from的import語(yǔ)句無(wú)效,會(huì)被復(fù)制。
# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
# _X對(duì)import 語(yǔ)句無(wú)效
>>> import pkg.moda
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmoda.py
>>> pkg.moda.s
'梯閱線條'
>>> pkg.moda.b
9555
# 可訪問(wèn)_a
>>> pkg.moda._a
'tyxt'
1.3 模塊all
文件內(nèi)容
pkgmodb.py
import os
__all__=['s','b',]
print('run:{}'.format(os.path.abspath(__file__)))
s='梯閱線條'
a='tyxt'
b=9555
from module import *,只復(fù)制all列表內(nèi)變量,用于模塊文件
# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg.modb import *
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmodb.py
# 在__all__列表的變量,可訪問(wèn)
>>> s
'梯閱線條'
>>> a
# 不在__all__列表的變量,不可訪問(wèn)
Traceback (most recent call last):
File "" , line 1, in
NameError: name 'a' is not defined
>>> b
9555
all列表,對(duì)非from的import語(yǔ)句無(wú)效,不在列表內(nèi)的變量也會(huì)被復(fù)制,可訪問(wèn)。
# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pkg.modb
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmodb.py
>>> pkg.modb.s
'梯閱線條'
# 不在__all__列表的變量,也可訪問(wèn)
>>> pkg.modb.a
'tyxt'
>>> pkg.modb.b
9555
1.4 包all
文件內(nèi)容
pkg__init__.py
import os
__all__=['moda',]
print('run:{}'.format(os.path.abspath(__file__)))
from pkg import *,自動(dòng)導(dǎo)入all列表內(nèi)模塊,用于包文件 init .py;
# cmd 執(zhí)行下面命令
E:documentsF盤(pán)>d:python3python
Python 3.7.8 (tags/v3.7.8:4b47a5b6ba, Jun 28 2020, 07:55:33) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkg import *
run:E:documentsF盤(pán)pkg__init__.py
run:E:documentsF盤(pán)pkgmoda.py
# 自動(dòng)導(dǎo)入 __all__ 列表內(nèi)模塊
>>> moda.s
'梯閱線條'
# 非 __all__ 列表內(nèi)模塊不自動(dòng)導(dǎo)入,不可訪問(wèn)
>>> modb.s
Traceback (most recent call last):
File "", line 1, in
NameError: name 'modb' is not defined
>>> modc.s
Traceback (most recent call last):
File "", line 1, in
NameError: name 'modc' is not defined
-
python
+關(guān)注
關(guān)注
53文章
4753瀏覽量
84083
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論