• 第三十九节,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 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__获取模块路径,添加到解释器模块路径里

    #!/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("
    ")
    
    sys.path.append(d) #将拼接好的路径,添加到解释器模块路径中
    
    for i in sys.path:  #
        print(i)
    #输出
    # H:/py/index.py
    # H:/py
    # H:/pylib
    #
    #
    # H:py
    # C:UsersadminAppDataLocalProgramsPythonPython35libsite-packagespip-8.1.2-py3.5.egg
    # H:py
    # C:UsersadminAppDataLocalProgramsPythonPython35python35.zip
    # C:UsersadminAppDataLocalProgramsPythonPython35DLLs
    # C:UsersadminAppDataLocalProgramsPythonPython35lib
    # C:UsersadminAppDataLocalProgramsPythonPython35
    # C:UsersadminAppDataLocalProgramsPythonPython35libsite-packages
    # H:/pylib

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

    #!/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__ :获取导入文件的缓存路径

    #!/usr/bin/env python
    # -*- coding:utf8 -*-
    from lib.ska import mk  #导入mk模块文件
    print(mk.__cached__) #__cached__ :获取导入文件的缓存路径
    #输出
    # H:pylibska\__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被导入到到别的文件,就不会执行判断里的

    __builtins__ 【重点】内置函数在这里面

  • 相关阅读:
    关于数据库,程序员应该了解的那些事
    Kafka实战宝典:如何跨机房传输数据
    数据挖掘从入门到放弃(三):朴素贝叶斯
    面试官:数据库自增ID用完了会怎么样?
    《我想进大厂》之网络篇夺命连环12问
    面试官:缓存一致性问题怎么解决?
    空指针的传说
    淘宝|蚂蚁|菜鸟|盒马|嘀嘀|饿了么面经(已拿多个offer)
    苦修月余,斩获bigo、腾讯offer,面经奉上!
    《我想进大厂》之Spring夺命连环10问
  • 原文地址:https://www.cnblogs.com/adc8868/p/5811566.html
Copyright © 2020-2023  润新知