赞
踩
1. import 文件名
2. from 文件名 import 函数名/类名
第一种用法需要在后续每次使用时写为“文件名.函数名/类名”,而第二种方法在后续使用时可以省略第一种方法中的“文件名.”
下面分别进行介绍。
被调用的sum.py文件:
def add(x,y):
print('x+y=%d'%(x+y))
demo.py文件:
import sum
sum.add(1,2)
from sum import add
add(1,2)
f1
- f11
- - init.py
- - p1.py
- - p2.py
- t.py
在t.py中调用p1.py中的函数func,可以使用from f11.p1 import func,也可以在init.py中from p1 import func,然后在其他文件中就可以直接from f11 import func
被调用的sum.py文件:
class S:
def __init__(self,xx,yy):
self.x=xx
self.y=yy
def add(self):
print("x+y=%d"%(self.x+self.y))
import sum
s=sum.S(2,3)
s.add()
demo.py文件:
from sum import S
s=S(2,3)
s.add()
如:在t.py中调用 p1.py
- f1
- - p1.py
- - p2.py
- t.py
此时f1在t.py的搜索目录下,所以不需要修改搜索地址。
只需要在f1文件夹下创建一个__init__.py文件(空的即可),init.py的作用是告诉程序这个文件夹下的py文件可以被import。
如:在t.py中调用 p1.py
- f1
- - p1.py
- - p2.py
- f2
- - t.py
此时t.py的搜索目录是f2,使用’…'退回上一层目录:
from ..f1.p1 import sth
然后同样在f1中创建一个__init__.py。
如:在t中调用p1,在p1又调用了p2:
- f1
- - p1.py
- - p2.py
- t.py
# t.py:
import f1.p1
# p1.py:
import p2
直接执行p1不会报错,但执行t.py时会在import p2时报错No Module Named p2。
原因:将p1作为程序入口时,搜索目录在f1下,能找到p2.py;而t.py作为程序入口时,搜索目录变为根目录,不能直接找到p2.
解决办法:将f1加入到搜索目录
# p1.py
import sys
sys.path.append('./f1')
import p2
此时直接执行t.py也不会报错了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。