直接回車是不行的,就像這樣子:
python提供了3中方式可以用來對很長的字元串進行換行顯示
b. 三個"号
其實問題就歸根結底到import的用法了:
轉自:http://blog.csdn.net/lisonglisonglisong/article/details/38666819
在程式中定義函數可以實作代碼重用。但當你的代碼逐漸變得龐大時,你可能想要把它分割成幾個檔案,以便能夠更簡單地維護。同時,你希望在一個檔案中寫的代碼能夠被其他檔案所重用,這時我們應該使用子產品(module)。
在python中,一個<code>.py</code>檔案就構成一個子產品。一個子產品中的定義可以導入(import)到另一個子產品或主子產品。
比如你可以通過内置子產品platform來檢視你目前的操作平台資訊:
[python] view
plaincopy
import platform
s = platform.platform()
print(s)
# 我的輸出:linux-3.15.8-200.fc20.x86_64-x86_64-with-fedora-20-heisenbug
又比如你可以通過内置子產品time擷取目前的時間:
import time
s = time.ctime()
# 輸出:mon aug 18 16:04:57 2014
每個子產品有其私有的符号表,在該子產品内部當成全局符号表來使用。 當我們将一個子產品導入到目前子產品時,隻有被導入子產品的名稱被放入目前子產品的全局符号表裡,是以我們不用擔心變量名發生沖突。
其他幾種導入方式:
1、<code>import a as b</code>:導入子產品a,并将子產品a重命名為b。
import time as x
s = x.ctime()
2、<code>from a import func</code>:直接把子產品内的函數或變量的名稱導入目前子產品符号表裡。
from time import ctime
s = ctime() # 這時可以直接調用函數,而不用再使用time.ctime()
3、<code>from a import *</code>:導入子產品中所有的名字(以下劃線開頭的名字除外)到目前子產品符号表裡。
from time import *
s = ctime()
注意:導入 * 是不好的,因為它常常産生難以閱讀的代碼,并且會容易産生名字沖突。
當導入名為 a 的子產品時, 解釋器會先從内模組化塊嘗試比對,如果沒找到,則将在 <code>sys.path</code> 記錄的所有目錄中搜尋 a.py 檔案,而<code>sys.path</code>則包括:
目前程式所在目錄
标準庫的安裝目錄
作業系統環境變量pythonpath所包含的目錄
變量 sys.path 是一個字元串清單,它為解釋器指定了子產品的搜尋路徑。它通過環境變量 pathonpath 初始化為一個預設路徑,當沒有設定 pythonpath 時, 就使用内建預設值來初始化。你可以通過标準 list 操作來修改它:
>>> import sys
>>> sys.path.append('/ufs/guido/lib/python')
對于任何一個子產品,子產品的名字都可以通過全局變量 <code>__name__</code>得到:
s = time.__name__
print(s) # 輸出time
一個子產品既可以在其它子產品中導入使用,也可以當作腳本直接運作。不同的是,當導入到其他子產品時,__name__的值是被導入子產品的名字;而當作為腳本運作時,__name__的值被設為“__main__”:
# 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 test.py
this program is being run by itself
當作導入子產品使用:
>>> import test
i am being imported into another module
>>>
在python3基礎六中我們提到,可以通過内置dir()函數查詢一個類或者對象的所有屬性。除此之外,我們還可以用它列出一個子產品裡定義的所有名字,它傳回一個有序字串清單:
>>> import builtins
>>> dir(builtins)
可以把多個子產品,即多個.py檔案,放在同一個檔案夾中,構成一個包(package)。例如:
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>導入包中的子子產品,例如:
import sound.effects.echo
當然,也可以使用<code>from... import...</code>句式導入包中的子產品:
from sound.effects import echo # 導入echo子子產品
from sound.effects.echo import echofilter # 導入echo子子產品中的函數或變量
from sound.effects import * # 導入__all__變量中所有的子子產品