一 : import
注意 ①
import会把引入文件所有执行一遍,再把model_1
给当前model_test.py
用
在model_1
中 :
print("111")
def add(x,y):
return x+y
def sub(x,y):
return x-y
print("2222")
在 model_test.py
中
import model_1
print(model_1.add(100000,200000))
执行model_test.py`
import model_1
print(model_1.add(10,20))
注意 ②
import文件可以写在一行中
import model_1,model_2
注意 ③
可以用from import 导入想要的方法
from model_1 import add
from model_1 import sub
还可以写成
`from model_1 import *`
print(add(10,20))
print(sub(10,20))
注意 : import 会把引入文件所有执行一遍,再把 model_1 给当前model_test.py用
虽然只是引用了 add,但是还是会把model_1所有文件执行一遍,不推荐 写成 * 的形式
注意 ④
位置有关
在model_1
中有add方法
def add(x,y):
return x+y
def sub(x,y):
return x-y
此时引入 model_1
文件,在本文件还有add函数会覆盖 引入文件的函数
注意,如果引入的文件位置在执行文件add
函数后面,则运行的还是引入文件的add
函数.
from model_1 import *
def add(x,y):
return x+y+100
#运行结果是 109
print(add(3,6))
二 : 资源搜索
from my_model import cal
print(sys.path)
['/Users/a10.11.5/Desktop/不亦说乎/pythonProject/test/test_modle', '/Users/a10.11.5/Desktop/不亦说乎/pythonProject', '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python37.zip', '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7', '/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload', '/Users/a10.11.5/Desktop/不亦说乎/pythonProject/venv/lib/python3.7/site-packages', '/Users/a10.11.5/Desktop/不亦说乎/pythonProject/venv/lib/python3.7/site-packages/setuptools-39.1.0-py3.7.egg', '/Users/a10.11.5/Desktop/不亦说乎/pythonProject/venv/lib/python3.7/site-packages/pip-10.0.1-py3.7.egg', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
sys.path 会去path找相关资源, 执行model_5
会把当前执行文件所在路径,扔进sys.path,所以目录结构是 from
所在路径下 然后 import 需要的文件
三 : main
一般 bin.py作为程序的入口
if __name__ == '__main__':
1. 放在被自行文件中 用于本文件测试方便
2. 放在执行文件中,意义不想让此文件被其他人调用
四 : import 包
直接 import :包
相当于执行 web3_init文件
在test.py中
from web.web1 import web3
在 web3 的 init中可以拼接
print("web3 init")
'''
#相当于执行 web3_init文件,但是再调用 web3.cal.add 就不支持了
from web.web1 import web3
print(web3.cal.add)
但是 加上下面一句 相当于拼接了 就可以像上面那样写了
'''
from . import cal
# from web.web1.web3 import cal
#
# print(cal.add(2,6))
# 也可以这样写
# from web.web1.web3.cal import add
# print(add(2,6))