1. 程式人生 > >python3 模組內建變數

python3 模組內建變數

print(dir()) 打印出來模組的內建變數

d:\PythonStudy\seven>python c10.py
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
'''
asdads
'''
print(__name__)                 //打印出完整的 名稱空間
print(__package__)              //包
print(__doc__)                  //註釋
print(_
_file__) //檔案路徑

python 的入口模組執行出來的內建變數和引入模組執行出來的取值是不同的。

入口模組直接執行

print(__name__)
print(__package__)
print(__doc__)
print(__file__)
d:\PythonStudy\seven\t>python c9.py
__main__
None
None
c9.py

引入模組執行

c9.py
print(__name__)
print(__package__)
print(__doc__)
print(__file__)
c10.py
import t.c9
d:\PythonStudy\seven>python c10.py
t.c9
t
None
d:\PythonStudy\seven\t\c9.py

如果想看某個模組下或者某個類 的函式或者變數 只需要 把該模組傳入 dir()即可

import sys
print(dir(sys))

__name__的妙用

__name__ 如果是 __main__ 那麼代表他是一個入口檔案,直接執行的。

if __name__ == '__main__':
        print("這是入口")
print('這是模組')

作為可執行檔案 兩個都能打印出來
作為模組 只能打印出來 “這是模組”

把可執行檔案當做模組來執行

python -m c15.py //這樣是不行的

python -m seven.c15.py

最大的區別在於 __package__ 是否存在,如果是普通模組 那必須要有一個包,如果沒有包,那就是一個可執行檔案。