python不同文件、不同文件夹间代码调用
ref:https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p10_modules_and_packages.htmlhttps://blog.csdn.net/u010013191/article/details/89071785目录模块、包、库:同文件夹内调用模块文件结构:功能及目的:实现过程:1)设置根目录为Source
ref:
https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p10_modules_and_packages.html
https://blog.csdn.net/u010013191/article/details/89071785
目录
之前代码都是在一个文件中编写运行,最近编写的代码涉及功能较多,需要模块化处理,涉及不同文件间的调用
简单学习了下 在pycharm中调用不同文件代码 ,做以下整理:
模块、包、库:
模块:可以理解为代码文件,即各种py文件,模块中包括类、函数
包:即多个模块/代码文件的组合,包括多个文件或者文件夹,文件夹可以看做子包;一般为个人写的代码项目
库:已发布的包括某种特定功能的模块/代码文件的组合;一般为其他组织或个人编写的代码项目
同文件夹内调用模块
根目录make sources root, 模块名 直接引用
文件结构:
根目录为test,
文件包括hi.py、test_f.py
功能及目的:
hi.py定义了简单的函数sayhi,打印 hi 字符串,可以被其他文件调用
test_f.py实现同文件夹下的调用
实现过程:
1)设置根目录为Sources root
右击根目录,mark dirctory as -- Sources Root;
2)import代码
各文件代码如下:
hi.py
def sayhi():
print('hi')
test_f.py
import hi
hi.sayhi()
注意事项:
- 文件名与文件夹名不要以数字开头
- 文件名不要与文件夹名重名
跨文件夹调用模块:
根目录make sources root, 建立__init__.py,使用根目录名.子包名.模块名的 绝对路径方式引用
文件结构:
根目录为test,
二级目录及文件包括test_a、test_b、__init__.py、test_c.py
三级文件包括test_a下的__init__.py、hi.py、test_a.py;test_b下的__init__.py、test_b.py;
功能及目的:
hi.py定义了简单的函数sayhi,打印 hi 字符串,可以被其他文件调用
各个__init__.py用于定义模块包,如果想调用目录x中的代码,就在目录x下建立空的__init__.py文件
- test_a.py实现同目录下的调用
- test_b.py实现不同目录下文件的调用
- test_c.py实现同级文件夹下的调用
实现过程:
1)设置根目录为Sources root
右击根目录,mark dirctory as -- Sources Root;
相当于在系统路径中加入根目录,当import时,可以检索根目录中内容;
类似于sys.path.append(path)
2)建立__init__.py
__init__.py用于定义模块包,如果想调用目录中的代码,就在目录下建立__init__.py文件吧;
目前涉及内容不多,建立空文件即可
3)在其他文件中import代码
在本文中,在test_a.py、test_b.py、test.py中分别调用hi.py中代码,各文件代码如下:
hi.py
def sayhi():
print('hi')
test_a.py
from test.test_a import hi
hi.sayhi()
test_b.py
from test.test_a import hi
hi.sayhi()
test_c.py
from test.test_a import hi
hi.sayhi()
注意事项:
- 文件名与文件夹名不要以数字开头
- 文件名不要与文件夹名重名
- 使用. 或者..的相对路径方式进行引用,在编写代码时不报错,但运行时可能出错,建议使用 根目录名.子包名.模块名 的绝对路径方式进行引用
更多推荐
所有评论(0)