第三十九節,python內置全局變量

vars()查看內置全局變量python

以字典方式返回內置全局變量緩存

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(vars())
#輸出
# {'__builtins__': <module 'builtins' (built-in)>, '__spec__': None, '__package__': None, '__doc__': None, '__name__': '__main__', '__cached__': None, '__file__': 'H:/py/index.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000AC32C66A58>}

 

__doc__ :獲取文件的註釋app

#!/usr/bin/env python
# -*- coding:utf8 -*-
"""
這裏是文件的註釋
"""
print(__doc__)  #__doc__    :獲取文件的註釋
#輸出
# 這裏是文件的註釋

 

__file__ 【重點】獲取當前文件的路徑函數

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__file__)  #__file__ :獲取當前文件的路徑
#輸出
# H:/py/index.py

會常常用到__file__ ,通常配合os模塊的os.path.dirname(),os.path.basename() ,os.path.join() 模塊函數來使用ui

#!/usr/bin/env python
# -*- coding:utf8 -*-
import os
a = __file__    # __file__全局變量獲取當前文件路徑
print(a)

b = os.path.dirname(a) #獲取文件當前目錄:注意:os.path.dirname()疊加一次向上找一次 以下
print(b)

b2 = os.path.dirname(b) #獲取文件當前目錄的上級目錄,注意:os.path.dirname()疊加一次向上找一次
print(b2)

c = os.path.basename(a) #獲取文件名稱
print(c)
#輸出
# H:/py/lib/ska/mk.py
# H:/py/lib/ska
# H:/py/lib
# mk.py

 用__file__獲取模塊路徑,添加到解釋器模塊路徑裏spa

#!/usr/bin/env python
# -*- coding:utf8 -*-
import sys
import os
a = __file__    # __file__全局變量獲取當前文件路徑
print(a)
b = os.path.dirname(a) #獲取文件當前目錄
print(b)
c = "lib" #自定義文件目錄名稱
d = os.path.join(b,c) #將獲取文件當前目錄,與自定義文件目錄名稱,拼接成完整的路徑
print(d)
print("\n")

sys.path.append(d) #將拼接好的路徑,添加到解釋器模塊路徑中

for i in sys.path:  #
    print(i)
#輸出
# H:/py/index.py
# H:/py
# H:/py\lib
#
#
# H:\py
# C:\Users\admin\AppData\Local\Programs\Python\Python35\lib\site-packages\pip-8.1.2-py3.5.egg
# H:\py
# C:\Users\admin\AppData\Local\Programs\Python\Python35\python35.zip
# C:\Users\admin\AppData\Local\Programs\Python\Python35\DLLs
# C:\Users\admin\AppData\Local\Programs\Python\Python35\lib
# C:\Users\admin\AppData\Local\Programs\Python\Python35
# C:\Users\admin\AppData\Local\Programs\Python\Python35\lib\site-packages
# H:/py\lib

 

 

__package__ :獲取導入文件的路徑,多層目錄以點分割,注意:對當前文件返回Nonecode

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__package__)  #注意:對當前文件返回None
from lib.ska import mk  #導入mk模塊文件
print(mk.__package__) #__package__ :獲取導入文件的路徑,多層目錄以點分割,注意:對當前文件返回None
#輸出
# None
# lib.ska
# lib.ska

 

__cached__ :獲取導入文件的緩存路徑blog

#!/usr/bin/env python
# -*- coding:utf8 -*-
from lib.ska import mk  #導入mk模塊文件
print(mk.__cached__) #__cached__ :獲取導入文件的緩存路徑
#輸出
# H:\py\lib\ska\__pycache__\mk.cpython-35.pyc

 

__name__ 【重點】獲取導入文件的路徑加文件名稱,路徑以點分割,注意:獲取當前文件返回__main__ ip

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__name__) #注意:獲取當前文件返回__main__
from lib.ska import mk  #導入mk模塊文件
print(mk.__name__)  #獲取導入文件的路徑加文件名稱,路徑以點分割
#輸出
# __main__
# lib.ska.mk

__name__  全局變量寫在入口文件裏,只有執行入口文件時的返回值纔是__main__  ,若是入口文件被導入到別的文件裏,此時入口文件的__name__返回值就不在是__main__,而是若是文件的路徑加入口文件名稱,因此咱們能夠用__name__全局變量來防止別人盜鏈入口文件it

#!/usr/bin/env python
# -*- coding:utf8 -*-
if __name__ == "__main__": #__name__  全局變量寫在入口文件裏,只有執行入口文件時的返回值纔是__main__  ,若是入口文件被導入到別的文件裏,此時入口文件的__name__返回值就不在是__main__,而是若是文件的路徑加入口文件名稱,因此咱們能夠用__name__全局變量來防止別人盜鏈入口文件
    print("執行")
#這樣只有執行index文件時才執行判斷裏的,index被導入到到別的文件,就不會執行判斷裏的

 

__builtins__ 【重點】內置函數在這裏面

相關文章
相關標籤/搜索