zoukankan      html  css  js  c++  java
  • 第三十九节,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__ 【重点】内置函数在这里面

  • 相关阅读:
    《结对-航空购票系统-测试过程》
    《结对-航空购票系统-开发过程》
    课后作业-阅读任务-阅读提问-2
    《1005-构建之法:现代软件工程-阅读笔记》
    《团队-记事本程序-代码设计规范》
    Python作业:jieba库
    Python第四周作业:青蛙跳台阶、欧式距离、验证码校验、大小写互换、凯撒加密、身份证号处理
    Python汉诺塔问题
    第四周(1):利用Python计算π的值,并显示进度条
    Python第二周(1):凯撒密码B,括号配对测试,字符串反码,计算矩形面积,快乐的数字
  • 原文地址:https://www.cnblogs.com/adc8868/p/5811566.html
Copyright © 2011-2022 走看看