Python模块
通常来说,比较正规的工程不会把所有代码放在一个py文件里,我们会把代码拆成各个模块,分别调用。对python来说,拆成各个模块可以看做拆成各个py文件。
搜索路径
通常来说,同文夹下的py文件可以直接导入。
def print_hello():
print "hello"
我们把这个保存至hello.py
import hello
hello.print_hello()
在run.py里导入,然后调用print_hello() 目录结构
...../
hello.py
run.py
hello.py和run.py在同一目录下,可以直接导入 如果在不同路径下,可以在sys.path里手动加入你想导入的路径
import sys
sys.path.append('/home/zhuzekun/course')
import hello
hello.print_hello()
如果run.py不在/ home / zhuzekun / course文件夹下,手动加入这个路径,就可以导入这个路径下的hello.py
包
通常一个工程不可能只有一层目录结构,并且也不会一个一个路径去追加到SYS里,常用的做法是包,一个目录及其子目录组成的一个包(可以看做一个库)。 举个例子
/home/zhuzekun/course
├── __init__.py
├── __init__.pyc
├── m1
│ ├── b.py
│ ├── b.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ └── m1_1
│ ├── a.py
│ ├── a.pyc
│ ├── __init__.py
│ └── __init__.pyc
└── m2
├── __init__.py
└── run.py
这是一个课程文件夹,里面有m1和m2这两个文件夹,同时m1中又有一个子文件夹m1_1。 文件b.py
def hello_b():
print "hello b"
文件a.py
def hello_a():
print "hello a"
文件run.py
import sys
import os
sys.path.append('/home/zhuzekun/')
from course.m1 import b
from course.m1.m1_1 import a
if __name__ == '__main__':
b.hello_b()
a.hello_a()
在run.py中要调用m1 / b.py和m1 / m1_1 / a.py,只需要导入课程这个包就可以了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jindom's Blog!