首页 > 代码库 > 第三十九节,python内置全局变量

第三十九节,python内置全局变量

---恢复内容开始---

vars()查看内置全局变量

以字典方式返回内置全局变量

#!/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__ :获取文件的注释

#!/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() 模块函数来使用

#!/usr/bin/env python# -*- coding:utf8 -*-import osa = __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

 

 

__package__ :获取导入文件的路径,多层目录以点分割,注意:对当前文件返回None

#!/usr/bin/env python# -*- coding:utf8 -*-print(__package__)  #注意:对当前文件返回Nonefrom lib.ska import mk  #导入mk模块文件print(mk.__package__) #__package__ :获取导入文件的路径,多层目录以点分割,注意:对当前文件返回None#输出# None# lib.ska# lib.ska

 

__cached__ :获取导入文件的缓存路径

#!/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__ 

#!/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__全局变量来防止别人盗链入口文件

#!/usr/bin/env python# -*- coding:utf8 -*-if __name__ == "__main__": #__name__  全局变量写在入口文件里,只有执行入口文件时的返回值才是__main__  ,如果入口文件被导入到别的文件里,此时入口文件的__name__返回值就不在是__main__,而是如果文件的路径加入口文件名称,所以我们可以用__name__全局变量来防止别人盗链入口文件    print("执行")#这样只有执行index文件时才执行判断里的,index被导入到到别的文件,就不会执行判断里的

 

---恢复内容结束---

第三十九节,python内置全局变量