213

一、.py文件里面包含全局变量

print(vars())输出结果如下:

{'__name__': '__main__',
'__doc__': None,
'__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000014BE5CBA470>,
'__spec__': None,
'__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'__file__': 'E:/python_code/2/13day/index.py',
'__cached__': None}

其中比较常用的是:

__doc__    打印文件注释,.py文件中开头的三个引号中的内容

__file__     打印当前py文件的全路径名称

__package__   导入文件所在的包,即导入py文件所在的文件夹名,文件夹层级用.间隔,例如 lib.test

__cached__   python3中才有,缓存文件,导入文件执行的.pyc文件全路径

__name__   如果是当前py文件运行则返回__main__,如果其他文件导入运行,则返回当前导入文件所在的文件夹路径

__builtins__  内置函数是存放在__builtins__中

python var变量 python vars_相对路径

python var变量 python vars_路径名_02

所以为防止导入模块后直接运行,可以用 __name__ == __main__ 进行判断:

python var变量 python vars_python_03

 二、利用__file__给sys.path中添加相对路径

1、相对路径可以把整体文件拷贝到任何目录运行

2、当文件名修改不影响添加的相对路径

#!usr/bin/env python
# -*- coding:utf-8 -*-
import sys,os
p1 = os.path.dirname(__file__) #__file__获取当前运行文件的路径,dirname是去掉.py文件后的路径
py_path = os.path.join(p1,'lib') #将去掉.py文件后的路径连接上lib,E:/python_code/2/day14\lib
sys.path.append(py_path) #将组合后的文件路径加入到sys.path列表中
from lib import fuc1
print(fuc1.f1())