這個模組包含 python 中使用的內建函式. 一般不用手動匯入這個模組; python會幫你做好一切.
python允許你實時地建立函式引數列表. 只要把所有的引數放入乙個元組中或者字典中
示例**如下:
#-*- encoding:gb2312 -*-
'''created on 2012-5-1
@author: administrator
'''def transimtparams(a,b):
print(a,b)
#python2 的寫法
#使用元組的引數呼叫函式
#使用字典中的引數呼叫函式
#python3 的寫法
#使用元組的引數呼叫函式
transimtparams(*("whither","canada?"))
transimtparams(*(1,2+3))
#使用字典中的引數呼叫函式
transimtparams(*("crunchy",),**)
transimtparams(**)
執行結果:
whither canada?
1 5crunchy frog
crunchy frog
元組引數前面加*號,字典引數前面加**號。
示例:
class rectangle:
def __init__(self, color="white", width=10, height=10):
print("create a", color, self, "sized", width, "x", height)
class roundedrectangle(rectangle):
def __init__(self, **kw):
rectangle.__init__(*(self,),**kw)
rect = rectangle(color="green", height=100, width=100)
rect = roundedrectangle(color="blue", height=20)
執行結果:
create a green <__main__.rectangle object at 0x00bb2e70> sized 100 x 100
create a blue <__main__.roundedrectangle object at 0x00c6e190> sized 10 x 20
如果你寫過較龐大的 python 程式, 那麼你就應該知道 ``import`` 語句是用來匯入外部模組的
(當然也可以使用 ``from-import`` 版本). 不過你可能不知道 ``import`` 其實是靠呼叫內建
函式 ``_ _import_ _`` 來工作的.
通過這個戲法你可以動態地呼叫函式. 當你只知道模組名稱(字串)的時候, 這將很方便.
[example 1-4 #eg-1-4] 展示了這種用法, 動態地匯入所有以 "``-plugin``" 結尾的模組.
====example 1-4. 使用 _ _import_ _ 函式載入模組====[eg-1-4]
import glob, os
modules =
for module_file in glob.glob("*-plugin.py"):
try:
module_name, ext = os.path.splitext(os.path.basename(module_file))
module = __import__(module_name)
except importerror:
pass # ignore broken modules
# say hello to all modules
for module in modules:
module.hello()
注意這個 plug-in 模組檔名中有個 "-" (hyphens). 這意味著你不能使用普通的 ``import`` 命令, 因為 python 的辨識符不允許有 "-" .
[example 1-5 #eg-1-5] 展示了 [example 1-4 #eg-1-4] 中使用的 plug-in .
====example 1-5. plug-in 例子====[eg-1-5]
file: example-plugin.py
def hello():
print "example-plugin says hello"
[example 1-6 #eg-1-6] 展示了如何根據給定模組名和函式名獲得想要的函式物件.
====example 1-6. 使用 _ _import_ _ 函式獲得特定函式====[eg-1-6]
file: builtin-import-example-2.py
def getfunctionbyname(module_name, function_name):
module = __import__(module_name)
return getattr(module, function_name)
print(repr(getfunctionbyname("test-plugin", "hello")))
你也可以使用這個函式實現延遲化的模組匯入 (lazy module loading). 例如在 [example 1-7 #eg-1-7] 中
的 ``string`` 模組只在第一次使用的時候匯入.
====example 1-7. 使用 _ _import_ _ 函式實現 延遲匯入====[eg-1-7]
file: builtin-import-example-3.py
class lazyimport:
def __init__(self, module_name):
self.module_name = module_name
self.module = none
def __getattr__(self, name):
if self.module is none:
self.module = __import__(self.module_name)
return getattr(self.module, name)
string = lazyimport("string")
print(string.ascii_lowercase)
結果:abcdefghijklmnopqrstuvwxyz
import hello
import imp
imp.reload(hello)
imp.reload(hello)
結果:
hello again, and welcome to the show
hello again, and welcome to the show
hello again, and welcome to the show
reload 直接接受模組作為引數.
``` [!feather 注: ^ 原句無法理解, 稍後討論.]
注意,當你重載入模組時, 它會被重新編譯, 新的模組會代替模組字典裡的老模組. 但是, 已經用原模組裡的類建立的例項仍然使用的是老模組(不會被更新).
同樣地, 使用 ``from-import`` 直接建立的到模組內容的引用也是不會被更新的.
好了,__buildin__的模組就學到這裡,明天學習關於命名空間的模組
Python3標準庫 statistics統計計算
statistics模組實現了很多常用的統計公式,允許使用python的各種數值型別 int float decimal和fraction 來完成高效計算。共支援3種形式的平均值 均值 mean 中值或中位數 median 以及眾數 mode 可以用mean 計算算術平均值。from statist...
Python3標準庫 calendar處理日期
calendar模組第一了calendar類,其中封裝了一些值的計算,如給定的乙個月或一年中的周日期。另外,textcalendar和htmlcalendar類可以生成經過預格式化的輸出。prmonth 方法是乙個簡單的函式,可以生成月的格式化文字輸出。import calendar c calen...
python3 標準型別
number 數字 string 字串 list 列表 tuple 元組 sets 集合 dictionary 字典 python3 支援 int float bool complex 複數 1 python可以同時為多個變數賦值,如a,b 1,2。2 乙個變數可以通過賦值指向不同型別的物件。3 數...