python导入(import)文件夹下python子函数的方法

Python017

python导入(import)文件夹下python子函数的方法,第1张

(1)主程序main.py与模块程序mod1.py在同一目录下。

--src

  |--mod1.py

  |--main.py

直接在main.py中导入模块mod1.py,即 import mod1 或 from mod1 import *

(2)主程序main.py所在目录是模块程序mod.py所在目录的父目录。

--src

  |--mod1.py

  |--main.py

  ---mod2

     |--mod2.py

先需要在mod2文件夹中建立空文件__init__.py

然后在main.py中导入模块mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *

(3)主程序main.py导入上层目录中的模块或其他目录(平级)下的模块。

--src

  |--mod1.py

  ---mod2

     |--mod2.py

  ---sub

     |--main.py

先需要在mod2文件夹中建立空文件__init__.py,而src文件夹下不需要建立

然后进入主程序main.py所在的路径,执行python main.py

在main.py中导入模块mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *

执行前在main.py中加入:

import sys

sys.path.append("..")

import mod1

import mod2.mod2

模板文档导入python并创建的方法如下:

1.1 需要导入的模板在同一文件夹中

比如admin.py调用test.py模板,可以在admin.py中直接执行

因为python解释器查找模块时会找同一文件夹,所以不用导入路径名。

1.2 需要导入的模板在当前文件夹的子文件夹中

比如 manage.py调用setting.py模板,可以在manage.py中直接执行

无需加其他路径说明,因为 crm 也是一个模块(模块的集合)。

1.3 需要导入的模板在父文件夹中

比如admin.py想调用surround.py模板(在admin.py父文件夹project下),因为解释器找模块只会去本文件夹及本文件夹的子文件夹去找,不会去父文件夹找,为什么?试试看,先在admin.py中执行

当一个的模块被导入的时候,解释器首先寻找具有该名称的内置模块。如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找该模板。所以输出结果可以看到是一个路径列表,其它路径不需要看,只看第一项

说明解释器就是从 pro文件夹开始往下找,而surround.py是在 project/crm文件夹下,显然是找不到的。解决方法,在admin.py中执行手动把相应的路径添加到 sys.path 中就可以了,这样导入就相当于可以从添加的相应路径开始往下找模块了。可以找到,结果也不会报错。

导入 import module_name

调用 module_name.function_name()

在这种情况中,不会出现下面两种方式的缺点,即具有相同函数名的问题,因为一个文件中不存在两个相同的文件名。但缺点是能不清晰显示出使用到的函数,调用的时候也需要重复写模块名。

导入 from module_name import function_name1 , (function_name2...)

调用 function_name()

在这种情况中,虽然能清楚的表示出使用到的函数,如果是多个不同的模块,但其中的函数名有重叠时,后导入的模块函数为能使用的函数,即产生覆盖函数。

导入 from module_name import *

调用 function_name()

这种方法不推荐使用,因为它集合了前两种方式的缺点,即导入不清晰,调用全部函数会更容易造成覆盖函数。