天天看點

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

直接回車是不行的,就像這樣子:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

python提供了3中方式可以用來對很長的字元串進行換行顯示

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

b. 三個"号

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

其實問題就歸根結底到import的用法了:

轉自:http://blog.csdn.net/lisonglisonglisong/article/details/38666819

在程式中定義函數可以實作代碼重用。但當你的代碼逐漸變得龐大時,你可能想要把它分割成幾個檔案,以便能夠更簡單地維護。同時,你希望在一個檔案中寫的代碼能夠被其他檔案所重用,這時我們應該使用子產品(module)。

在python中,一個<code>.py</code>檔案就構成一個子產品。一個子產品中的定義可以導入(import)到另一個子產品或主子產品。

比如你可以通過内置子產品platform來檢視你目前的操作平台資訊:

[python] view

plaincopy

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

import platform  

s = platform.platform()  

print(s)  

# 我的輸出:linux-3.15.8-200.fc20.x86_64-x86_64-with-fedora-20-heisenbug  

又比如你可以通過内置子產品time擷取目前的時間:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

import time  

s = time.ctime()  

# 輸出:mon aug 18 16:04:57 2014  

每個子產品有其私有的符号表,在該子產品内部當成全局符号表來使用。 當我們将一個子產品導入到目前子產品時,隻有被導入子產品的名稱被放入目前子產品的全局符号表裡,是以我們不用擔心變量名發生沖突。

其他幾種導入方式:

1、<code>import a as b</code>:導入子產品a,并将子產品a重命名為b。

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

import time as x     

s = x.ctime()  

2、<code>from a import func</code>:直接把子產品内的函數或變量的名稱導入目前子產品符号表裡。

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

from time import ctime  

s = ctime()   # 這時可以直接調用函數,而不用再使用time.ctime()  

3、<code>from a import *</code>:導入子產品中所有的名字(以下劃線開頭的名字除外)到目前子產品符号表裡。

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

from time import *  

s = ctime()     

注意:導入 * 是不好的,因為它常常産生難以閱讀的代碼,并且會容易産生名字沖突。

當導入名為 a 的子產品時, 解釋器會先從内模組化塊嘗試比對,如果沒找到,則将在 <code>sys.path</code> 記錄的所有目錄中搜尋 a.py 檔案,而<code>sys.path</code>則包括:

目前程式所在目錄

标準庫的安裝目錄

作業系統環境變量pythonpath所包含的目錄

變量 sys.path 是一個字元串清單,它為解釋器指定了子產品的搜尋路徑。它通過環境變量 pathonpath 初始化為一個預設路徑,當沒有設定 pythonpath 時, 就使用内建預設值來初始化。你可以通過标準 list 操作來修改它:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

&gt;&gt;&gt; import sys  

&gt;&gt;&gt; sys.path.append('/ufs/guido/lib/python')  

對于任何一個子產品,子產品的名字都可以通過全局變量 <code>__name__</code>得到:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

s = time.__name__  

print(s)    # 輸出time   

一個子產品既可以在其它子產品中導入使用,也可以當作腳本直接運作。不同的是,當導入到其他子產品時,__name__的值是被導入子產品的名字;而當作為腳本運作時,__name__的值被設為“__main__”:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

# test.py  

if __name__ == '__main__':  

    print('this program is being run by itself')  

else:  

    print('i am being imported into another module')  

當作腳本執行:

[plain] view

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

$ python test.py   

this program is being run by itself  

當作導入子產品使用:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

&gt;&gt;&gt; import test  

i am being imported into another module  

&gt;&gt;&gt;   

在python3基礎六中我們提到,可以通過内置dir()函數查詢一個類或者對象的所有屬性。除此之外,我們還可以用它列出一個子產品裡定義的所有名字,它傳回一個有序字串清單:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

&gt;&gt;&gt; import builtins  

&gt;&gt;&gt; dir(builtins)  

可以把多個子產品,即多個.py檔案,放在同一個檔案夾中,構成一個包(package)。例如:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

sound/                          頂級包  

      __init__.py               初始化這個聲音包  

      formats/                  格式轉換子包  

              __init__.py  

              wavread.py  

              wavwrite.py  

              aiffread.py  

              aiffwrite.py  

              auread.py  

              auwrite.py  

              ...  

      effects/                  音效子包  

              echo.py  

              surround.py  

              reverse.py  

      filters/                  過濾器子包  

              equalizer.py  

              vocoder.py  

              karaoke.py  

注意:在每個封包件夾裡都必須包含一個 __init__.py 的檔案,告訴python,該檔案夾是一個包。__init__.py 可以是一個空檔案。

我們可以通過<code>import 包名.子產品名</code>導入包中的子子產品,例如:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

import sound.effects.echo  

當然,也可以使用<code>from... import...</code>句式導入包中的子產品:

【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?
【Python】字元串的換行 和 引入其他py檔案2. 想要引入其他的包或者其他的py檔案如何做呢?

from sound.effects import echo               # 導入echo子子產品  

from sound.effects.echo import echofilter    # 導入echo子子產品中的函數或變量  

from sound.effects import *                  # 導入__all__變量中所有的子子產品