zoukankan      html  css  js  c++  java
  • 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:pythonProjectlibxxbbb.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文件的注释部分
  • 相关阅读:
    【转】C++笔试题汇总
    【转】c++笔试题
    【M21】利用重载技术避免隐式类型转换
    【M6】区别increment/decrement操作符的前置(prefix)和后置(postfix)形式
    【M7】千万不要重载&&,||和,操作符
    【M22】考虑以操作符复合形式(op=)取代其独身形式(op)
    String类的实现
    理解 strcpy方法
    多线程笔试
    mysql中all privileges包含哪些权限
  • 原文地址:https://www.cnblogs.com/Acekr/p/7465171.html
Copyright © 2011-2022 走看看