python不同文件、不同文件夹间代码调用

ref:

https://python3-cookbook.readthedocs.io/zh_CN/latest/chapters/p10_modules_and_packages.html

https://blog.csdn.net/u010013191/article/details/89071785

 

目录

模块、包、库:

同文件夹内调用模块

文件结构:

功能及目的:

实现过程:

1)设置根目录为Sources root

2)import代码

注意事项:

跨文件夹调用模块:

文件结构:

功能及目的:

实现过程:

1)设置根目录为Sources root

2)建立__init__.py

3)在其他文件中import代码

注意事项:


 

之前代码都是在一个文件中编写运行,最近编写的代码涉及功能较多,需要模块化处理,涉及不同文件间的调用

简单学习了下 在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;

python不同文件、不同文件夹间代码调用_第1张图片

 

功能及目的:

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()

 

注意事项:

  • 文件名与文件夹名不要以数字开头
  • 文件名不要与文件夹名重名
  • 使用. 或者..的相对路径方式进行引用,在编写代码时不报错,但运行时可能出错,建议使用 根目录名.子包名.模块名 的绝对路径方式进行引用

 

你可能感兴趣的:(计算机杂谈,python,pycharm,代码调用,代码规范)