Open 15175036183 opened 5 years ago
模块的定义:实质就是以.py结尾的python文件,用来从逻辑上组织python文件(函数、类、变量、实现一个功能) 导入模块的本质:就是把python文件解释一遍 包的定义:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 导入包的本质就是执行该包下面的__init__.py文件
D:\Users\hlj\PycharmProjects\untitled\day02\moudle_test\moon.py def run(): print("兔子跑得是真快!")
在moudle_main.py文件下引入moon模块
D:\Users\hlj\PycharmProjects\untitled\day02\moudle_test\moudle_main.py import moon moon.run()
D:\Users\hlj\PycharmProjects\untitled\day02\moudle.py def cat(): print("这是moudle里的cat方法")
在moudle_main.py文件里引用moudle模块
D:\Users\hlj\PycharmProjects\untitled\day02\moudle_test\moudle_main.py import sys,os print(sys.path) #打印环境变量 print(os.path.abspath(__file__))#获取当前文件的绝对路径 #要想找到导入的模块,必须要找到该模块所在的目录,D:\Users\hlj\PycharmProjects\untitled\day02 #这时就可以用os.path.dirname()函数,回退到上一级目录,直到回退到要导入模块的上一级目录 a = os.path.dirname(os.path.abspath(__file__)) x = os.path.dirname(a) print(x) #找到x目录后,引用append()追加函数,将x目录追加到环境变量里 sys.path.append(x) print(sys.path) from day02 import moudle moudle.cat()
package_test是一个包,该包下包含init.py文件和test1.py模块,导包时,就是执行init.py文件
D:\Users\hlj\PycharmProjects\untitled\day02\package_test\__init__.py # import test1 def logger(): print("这里是package_test模块") def test(): print("这个是模块中的test方法") logger() test() from .test1 import * #从当前目录下引入所有的方法
D:\Users\hlj\PycharmProjects\untitled\day02\package_test\test1.py def eat(): print("I like eat apple") def laohu(): print("I love you")
在moudle_index.py文件下要引用package_test包下的test1模块下的laohu()方法
D:\Users\hlj\PycharmProjects\untitled\day02\moudle_index.py from day02 import package_test package_test.test1.laohu()
p_test.py文件下要引入package_test包下的test1模块下的eat()方法
D:\Users\hlj\PycharmProjects\untitled\day01\p_test.py #跨目录导包和跨目录导模块原理相同 import sys,os # import package_test print(sys.path) x = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(x) sys.path.append(x) print(sys.path) from day02 import package_test package_test.test1.eat()
模块和包的介绍
导入模块
两个.py文件在同一个目录下的例子
两个.py文件不在同一目录下的例子
导入包
.py文件和要导入的包在同一目录下的例子
.py文件和要导入的包在同一目录下的例子