python
模块导入
(import)
问题彻底解决
众所周知,
python
既可以导入包(
import package
)
,也
可以导入模块(
import module
)
,
package
一般理解为多文件
的模块,
它是这样定义的,
如果一个目录下存在”
__init__.py
”
这个文件,
那么
python
就认为这个目录下的所有文件同属于
一个
package
(这和
java
的
namespace
有点像,但是
java
可
不需要这么个特殊文件)
,如果没有这个文件,那么
python
认为目录下的
py
文件都是不相干的独立模块。但是在子目
录中你可不能这么干,如果子目录中没有”
__init__.py
”
,那
么该目录下的程序算是白写了,根本没有办法引用。当然,
也不是绝对的,
除非绕个大弯儿:
设置当前目录,
然后导入,
然后重设当前目录。
比如,
程序需要使用
test
目录中的模块,
而
test
目录不是
package
,
你只能这样做:
1: os.chdir("test")
2: import testfuncs
3: os.chdir("..")
最方便的引入,
当
然是同一个目录的模块(除了及其简单的程序,很少有人会
使用这种扁平的目录结构)
,那是想怎么导入就怎么导入。
比如在主程序中想要使用另一个文件模块中的函数,只需要
直接导入即可:
1: import testfuncs
#
直接导入模块(也
就是不带扩展名的文件名)
2:
3: testfuncs.nousefunc()
#
通过模块的名字引用其中的函数
4: from testfuncs import
nousefunc
#
导入模块中的函数
5: nousefunc() #
直接调用