獲取當前模塊的變量
#!usr/bin/env python # -*- coding:utf-8 _*- """ # author: 小菠蘿測試筆記 # blog: https://www.cnblogs.com/poloyy/ # time: 2021/7/21 11:29 下午 # file: 5_list 列表.py """ import keyword from pprint import pprint print(keyword.kwlist) print(type) type = 2 print(type) # 內置變量 pprint(vars())
輸出結果
{'__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__doc__': '\n' '# author: 小菠蘿測試筆記\n' '# blog: https://www.cnblogs.com/poloyy/\n' '# time: 2021/7/21 11:29 下午\n' '# file: 5_list 列表.py\n', '__file__': '/Users/polo/Documents/pylearn/第一章:python 基本類型/4_變量.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1085aafd0>, '__name__': '__main__', '__package__': None, '__spec__': None, 'keyword': <module 'keyword' from '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/keyword.py'>, 'pprint': <function pprint at 0x108663430>, 'type': 2}
前面 9 個有 __var__ 包着的變量都是內置變量,后面三個是模塊中自己聲明的變量
vars()
Python內置函數,可以返回當前模塊的所有內置變量
__file__
所在模塊:os
變量作用:獲取當前文件的絕對路徑,一般配合下面的函數來使用
當前文件的完整路徑: os.path.realpath(__file__)
當前文件所屬目錄: os.path.dirname(os.path.realpath(__file__))
當前文件所屬目錄的上級目錄: os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
__package__
""" 內置變量1.py """ #!/usr/bin/env python # -*- coding: utf-8 -*- print(__package__) # 輸出None
""" 內置變量2.py """ #!/usr/bin/env python # -*- coding: utf-8 -*- from test import 內置變量1.py # 會輸出 test ;輸出導入的文件的目錄
__name__(重點)
Python系統變量
場景一: if __name__ == '__main__':
最常用的場景:當你運行當前文件時, __name__ 輸出就是 __main__ ,所以可以加個 if 判斷來執行特定代碼
場景二:其他文件import
內置變量1.py 文件
#!/usr/bin/env python # -*- coding: utf-8 -*- print(__name__) if __name__ == '__main__': print("main")
運行 內置變量1.py 文件
__main__ main
內置變量2.py 文件
#!/usr/bin/env python # -*- coding: utf-8 -*- from test import 內置變量1.py
運行 內置變量2.py 文件
D10_面向對象.內置變量1
可以看到,運行內置變量2.py文件時,它因為導入了內置變量1.py,輸出__name__的值則是內置變量1.py在工程目錄下的路徑
__cached__
獲取導入文件的緩存路徑
__builtins__
內置函數都在這里面