天天看點

python自定義庫_Python 的自定義的子產品的調用

Python裡面開發一些稍微大一點程式的時候,為了編寫可維護的代碼,我們把很多函數分組,分别放到不同的檔案裡,這樣,每個檔案包含的代碼就相對較少,很多程式設計語言都采用這種組織代碼的方式。在Python中,一個.py檔案就稱之為一個子產品(Module)。

Q1 : 那麼如何在程式裡面調用其他的子產品呢?

檔案的結構是這樣的,目前的檔案是main.py,同一個檔案夾裡面還有另外的一個檔案stud.py。

問題是,如何在mian.py檔案裡面,調用stud.py裡面的函數?

python自定義庫_Python 的自定義的子產品的調用

image.png

main.py

#也可以寫成import stud as s

import stud

print (" in main ")

#如果寫成了import stud,那麼這裡就要寫成stud.getage()

stud.getage()

stud.getstudent()

stud.py

def getstudent():

print ("func getstudent")

def getage():

print ("func getage")

Q2: from import 和import 的差別

一般情況下盡量使用import a,此時通路B時,可以通過a.B的形式。

有節制的使用from a import B,這樣可以直接使用B。

避免使用from a import *,這種方法會污染命名空間,而且不能直覺的顯示導入哪些對象

#寫成from import的格式

from stud import getstudent

getstudent()

"""#和import的差別

import stud

stud.getstudent()

"""

2. 關于子產品,包概念的解釋

在Python中,一個.py檔案就稱之為一個子產品(Module)。比如剛才的stud.py檔案就是一個名字是stud的子產品。

但是,假如我現在有兩個相同名字的子產品,分别處于不同的檔案裡面,那麼如何區分它們?

Python給出的解決方案是,使用包的概念。方法是選擇一個頂層包名,比如pack目錄下面的teacher子產品,可以寫成pack.teacher

請注意,每一個包目錄下面都會有一個__init__.py的檔案,這個檔案是必須存在的,否則,Python就把這個目錄當成普通目錄,而不是一個包。__init__.py可以是空檔案,也可以有Python代碼。

3. 調用第三方子產品的路徑問題的解釋

當我們試圖加載一個子產品時,Python會在指定的路徑下搜尋對應的.py檔案,如果找不到,就會報錯:

>>> import mymodule

Traceback (most recent call last):

File "", line 1, in

ImportError: No module named mymodule

預設情況下,Python解釋器會搜尋目前目錄、所有已安裝的内置子產品和第三方子產品,搜尋路徑存放在sys子產品的path變量中:

>>> import sys

>>> sys.path

[ 'c:\\Users\\wwwa8\\Desktop\\test', 'C:\\Users\\wwwa8\\AppData\\Local\\Programs\\Python\\Python36-32\\python36.zip', 'C:\\Users\\wwwa8\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs', 'C:\\Users\\wwwa8\\AppData\\Local\\Programs\\Python\\Python36-32\\lib', 'C:\\Users\\wwwa8\\AppData\\Local\\Programs\\Python\\Python36-32', 'C:\\Users\\wwwa8\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages']

python自定義庫_Python 的自定義的子產品的調用

image.png

當然,也可以添加搜尋的路徑

#print python 子產品搜尋路徑存

print (sys.path)

#添加要搜尋的目錄

sys.path.append('C:\\Users\\wwwa8\\Desktop')

print (sys.path)

Q3:如何在目前檔案裡面調用處于不同檔案夾裡面的其他子產品?

比如我現在想調用pack和pack1裡面的teacher子產品。

python自定義庫_Python 的自定義的子產品的調用

image.png

python自定義庫_Python 的自定義的子產品的調用

image.png

python自定義庫_Python 的自定義的子產品的調用

image.png

import sys

sys.path.append('C:\\Users\\wwwa8\\Desktop\\test\\pack')

sys.path.append('C:\\Users\\wwwa8\\Desktop\\test\\pack1')

import pack.teacher as t1

import pack1.teacher as t2

t1.getteacher()

t2.getteacherage()

"""或者是:

import pack.teacher

import pack1.teacher

pack.teacher.getteacher()

pack1.teacher.getteacherage()

"""

最後,順便紀念一下錘子科技今天新品釋出會。

python自定義庫_Python 的自定義的子產品的調用

1723101005230065AuX8gy1fffhear6h7j30u90f24dr.jpg