Python路径处理及模块导入

1.绝对路径

open文件如果不在当前路径下,就要写绝对路径(从根据目录开始)

 2.模块与包

***.py文件就是一个模块(module)

文件夹或目录就是包(package)(文件夹与目录的区别就是目录下包含__init__.py)

 dir1 就是一个文件夹,dir2 就是一个目录

2.1引入模块

如下图,在同一个包下,module.py 下定义了一个变量 name 和一个函数 hello,

想在 lianxi.py 运行 name,hello

# from 模块名 import 变量,函数,类
from module import name,hello
print(name)
print(hello())

运行结果:

zhang san
hello!

 2.2引入包

 如下图,不在同一个包下,dir1包下有个模块dir1_module.py 下定义了一个变量 age,

想在 lianxi.py 运行 age

 

# from 包名.包名.模块名 import 变量,函数,类
# 有几层包名就写几层包名
from dir1.dir1_module import name
print(name)

 运行结果:

18

 想导入整个模块的话,如下操作

# from 包名 import 模块名
from dir1 import dir1_module
# 调用模块下的内容时,模块名.变量/函数/类
print(dir1_module.age)
from demo1 import module
print(module.hello())

运行结果:

18
hello!

 若导入的模块下跟在用的模块下名字重复,如何解决,如下操作

# from ...import 变量/函数/类  as 别名
from dir1.dir1_module import age as dir1_module_age
age = 20
print(age) # 打印当前模块下定义的变量
print(dir1_module_age) #打印dir1_module模块下的age变量

运行结果:

20
18

不提倡用的一种导入方法:导入模块中所有的变量,函数,类

from module import *
print(name)
print(hello())

注意:最好每次都从项目的根目录开始查找

如:from dir1.dir1_module import age

# 查看当前系统下的路径
import sys
print(sys.path)

运行结果:

 ['E:\\lemon\\lianxi\\demo1', 'E:\\lemon\\lianxi', 'D:\\python\\PyCharm 2019.1.2\\helpers\\pycharm_display', 'D:\\python\\python38.zip', 'D:\\python\\DLLs', 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages', 'D:\\python\\PyCharm 2019.1.2\\helpers\\pycharm_matplotlib_backend']

Guess you like

Origin blog.csdn.net/weixin_40611700/article/details/120308393