Python篇-包,import注意事项

一 : 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))

你可能感兴趣的:(Python篇-包,import注意事项)