python全栈之路:vars():__name__,__file__,__package__,__doc__ vars()

1、vars():返回对象object的属性及其值的字典关系表

class Foo:
    a = 1
 
    def __init__(self):
        self.name = 'wuwen'
        self.gender = "male"
        self.age = 23
 
 
foo = Foo()
print(vars())
print(vars(Foo))
print(vars(foo))
'''
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x005B84D0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/pythonProject/2.py', '__cached__': None, 'Foo': <class '__main__.Foo'>, 'foo': <__main__.Foo object at 0x02141410>}
{'__module__': '__main__', 'a': 1, '__init__': <function Foo.__init__ at 0x02144588>, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>, '__doc__': None}
{'name': 'wuwen', 'gender': 'male', 'age': 23}
'''

2.当vars()参数为空的时候,我们可以认为它返回的是当前.py文件的全局变量的字典关系表,其中有几个尤为重要

__name__:

      在主文件中值等于__main__,其他时候,等于模块名

      常用于在主文件调用主函数加的条件判读 if __name__ =='__main__':

      例1:在程序入口文件中,正常执行了execute函数,通过导入模块的方法并不能执行该函数

 

__file__  :

      获取文件自己的路径

from lib.xx import bbbb

print(__file__)

#D:/pythonProject/test.py


print(bbbb.__file__)

#D:\pythonProject\lib\xx\bbbb.py

print(__file__)


#D:/pythonProject/test.py


import os

print(os.path.dirname(__file__))

#D:/pythonProject


print(os.path.basename(__file__))

#test.py

print(os.path.dirname(os.path.dirname(__file__)))

#D:/

  __file__的应用场景

      

 

__package__ :

         指定文件所在包路径,用.划分

           当前文件为None

           其它文件为所在包路径

from lib.xx import bbbb
 
print(__package__)
print(bbbb.__package__)

#None
#lib.xx

__doc__   :

         获取py文件的注释

from lib.xx import bbbb
 
print(__doc__)
print(bbbb.__doc__)

    #这里是当前文件的注释部分
    #这里是当前文件的注释部分
    #这里是当前文件的注释部分
    #这里是当前文件的注释部分
 
 
    #这里是bbbb文件的注释部分
    #这里是bbbb文件的注释部分
    #这里是bbbb文件的注释部分
    #这里是bbbb文件的注释部分

 

posted @ 2017-09-01 21:38  爱吃西红柿的猫  阅读(1028)  评论(0编辑  收藏  举报