天天看點

python中子產品簡介python中的子產品importfrom … importfrom … importas定位子產品

python中的子產品

有過C語言程式設計經驗的朋友都知道在C語言中如果要引用sqrt函數,必須用語句#include <math.h>引入math.h這個頭檔案,否則是無法正常進行調用的。

那麼在Python中,如果要引用一些其他的函數,該怎麼處理呢?

在Python中有一個概念叫做子產品(module),這個和C語言中的頭檔案以及Java中的包很類似,比如在Python中要調用sqrt函數,必須用import關鍵字引入math這個子產品,下面就來了解一下Python中的子產品。

說的通俗點:子產品就好比是工具包,要想使用這個工具包中的工具(就好比函數),就需要導入這個子產品

import

在Python中用關鍵字import來引入某個子產品,比如要引用子產品math,就可以在檔案最開始的地方用import math來引入。

形如:

import module1,mudule2…

當解釋器遇到import語句,如果子產品在目前的搜尋路徑就會被導入。

在調用math子產品中的函數時,必須這樣引用:

#為什麼必須加上子產品名調用呢?因為可能存在這樣一種情況:在多個子產品中含有相同名稱的函數,此時如果隻是通過函數名來調用,解釋器無法知道到底要調用哪個函數。是以如果像上述這樣引入子產品的時候,調用函數必須加上子產品名

子產品名.函數名

import math

#這樣會報錯

print sqrt(2)

#這樣才能正确輸出結果

print math.sqrt(2)

有時候我們隻需要用到子產品中的某個函數,隻需要引入該函數即可,此時可以用下面方法實作:

from 子產品名 import 函數名1,函數名2…

不僅可以引入函數,還可以引入一些全局變量、類等

注意:

通過這種方式引入的時候,調用函數時隻能給出函數名,不能給出子產品名,但是當兩個子產品中含有相同名稱函數的時候,後面一次引入會覆寫前一次引入。也就是說假如子產品A中有函數function( ),在子產品B中也有函數function( ),如果引入A中的function在先、B中的function在後,那麼當調用function函數的時候,是去執行子產品B中的function函數。

如果想一次性引入math中所有的東西,還可以通過from math import *來實作

from … import

Python的from語句讓你從子產品中導入一個指定的部分到目前命名空間中

文法如下:

from modname import name1[, name2[, … nameN]]

例如,要導入子產品fib的fibonacci函數,使用如下語句:

** from fib import fibonacci**

注意:不會把整個fib子產品導入到目前的命名空間中,它隻會将fib裡的fibonacci單個引入

from … import

把一個子產品的所有内容全都導入到目前的命名空間也是可行的,隻需使用如下聲明:

from modname import * #這提供了一個簡單的方法來導入一個子產品中的所有項目。然而這種聲明不該被過多地使用。

as

In [1]: import time as tt

In [2]: time.sleep(1)

NameError Traceback (most recent call last)

in ()

----> 1 time.sleep(1)

NameError: name ‘time’ is not defined

In [3]:

In [3]:

In [3]: tt.sleep(1)

In [4]:

In [4]:

In [4]: from time import sleep as sp

In [5]: sleep(1)

NameError Traceback (most recent call last)

in ()

----> 1 sleep(1)

NameError: name ‘sleep’ is not defined

In [6]:

In [6]:

In [6]: sp(1)

In [7]:

定位子產品

當你導入一個子產品,Python解析器對子產品位置的搜尋順序是:

目前目錄

*

如果不在目前目錄,Python則搜尋在shell變量PYTHONPATH下的每個目錄。

*

如果都找不到,Python會察看預設路徑。UNIX下,預設路徑一般為/usr/local/lib/python/

*

子產品搜尋路徑存儲在system子產品的sys.path變量中。變量裡包含目前目錄,PYTHONPATH和由安裝過程決定的預設目錄。