#coding=utf-8
#**分拆多個py檔案,同乙個名字的變數互不影響
#python中包就是資料夾,但是資料夾下必須有乙個__init__.py 檔案才行
'''python中動態匯入模組
如果匯入的模組不存在,python直譯器會報 importerror 錯誤:
>>> import something
traceback (most recent call last):
file "", line 1, in importerror: no module named something
有的時候,兩個不同的模組提供了相同的功能,比如 stringio 和 cstringio 都提供了stringio這個功能。
這是因為python是動態語言,解釋執行,因此python**執行速度慢。
如果要提高python**的執行速度,最簡單的方法是把某些關鍵函式用 c 語言重寫,這樣就能大大提高執行速度。
同樣的功能,stringio 是純python**編寫的,而 cstringio 部分函式是 c 寫的,因此 cstringio 執行速度更快。
利用importerror錯誤,我們經常在python中動態匯入模組:
try:
from cstringio import stringio
except importerror:
from stringio import stringio
上述**先嘗試從cstringio匯入,如果失敗了(比如cstringio沒有被安裝),再嘗試從stringio匯入。這樣,如果cstringio模組存在,則我們將獲得更快的執行速度,如果cstringio不存在,則頂多**執行速度會變慢,但不會影響**的正常執行。
try 的作用是捕獲錯誤,並在捕獲到指定錯誤時執行 except 語句。
'''try:
import json
except importerror:
import ******json as json
print json.dumps()
'''python之使用__future__
python的新版本會引入新的功能,但是,實際上這些功能在上乙個老版本中就已經存在了。要「試用」某一新的特性,就可以通過匯入__future__模組的某些功能來實現。
例如,python 2.7的整數除法運算結果仍是整數:
>>> 10 / 3
3但是,python 3.x已經改進了整數的除法運算,「/」除將得到浮點數,「//」除才仍是整數:
>>> 10 / 3
3.3333333333333335
>>> 10 // 3
3要在python 2.7中引入3.x的除法規則,匯入__future__的division:
>>> from __future__ import division
>>> print 10 / 3
3.3333333333333335
當新版本的乙個特性與舊版本不相容時,該特性將會在舊版本中新增到__future__中,以便舊的**能在舊版本中測試新特性。
'''# from __future__ import unicode_literals
# s = 'am i an unicode?'
# print isinstance(s, unicode)
python 高階 模組
模組匯入 模組概念 在 python 中,乙個檔案就是乙個模組 將多個檔案放在乙個資料夾內進行組織管理的形式稱為包 模組匯入方式 import from import 使用模組別名 可以使用 as 在匯入模組後,為模組新增別名,方便程式中引用 模組搜尋順序 模組在搜尋時,根據 sys 模組中定義的 ...
Python高階03 模組
我們之前看到了函式和物件。從本質上來說,它們都是為了更好的組織已經有的程式,以方便重複利用。模組 module 也是為了同樣的目的。在python中,乙個.py檔案就構成乙個模組。通過模組,你可以呼叫其它檔案中的程式。引入模組 我們先寫乙個first.py檔案,內容如下 def laugh prin...
Python高階03 模組
我們之前看到了函式和物件。從本質上來說,它們都是為了更好的組織已經有的程式,以方便重複利用。模組 module 也是為了同樣的目的。在python中,乙個.py檔案就構成乙個模組。通過模組,你可以呼叫其它檔案中的程式。我們先寫乙個first.py檔案,內容如下 def laugh print hah...