今天嘗試python平行計算,想利用靜態變數計數,從而知道函式被執行了幾次
python本身是不支援靜態變數的,但是我們可以通過函式的預設值來實現靜態變數的功能。
當函式的預設值是內容是可變的類時,類的內容可變,而類的名字沒變。(相當於開闢的記憶體區域沒有變,而其中內容可以變化)。
這是因為python中函式的預設值只會被執行一次,(和靜態變數一樣,靜態變數初始化也是被執行一次。)這就是她們的共同點。
def
f(a, l
=
):
return
l
print
f(
1
)
print
f(
2
)
print
f(
3
)
print
f(
4
,[
'x'
])
print
f(
5
)
他的輸出是:
[
1
]
[
1
,
2
]
[
1
,
2
,
3
]
[
'x'
,
4
]
[
1
,
2
,
3
,
5
]
前面的好理解,為什麼最後 「print f(5)」的輸出是 「[1, 2, 3, 5]」呢?
這是因為 「print f(4,['x'])」時,預設變數並沒有被改變,因為預設變數的初始化只是被執行了一次(第一次使用預設值呼叫),初始化執行開闢的記憶體區(我們可以稱之為預設變數)沒有被改變,所以最後的輸出結果是「[1, 2, 3, 5]」。
lua 函式 預設值 定義函式引數的預設值
如果你想要命名引數和預設值,如php或python,你可以使用表構造函式呼叫你的函式 myfunction 函式本身可以有這樣的簽名 function myfunction t setmetatable t,local a,c t 1 or t.a,t 2 or t.b,t 3 or t.c fun...
函式(引數,預設值)
js定義函式引數沒有非常嚴格的要求,可以有也可以沒有,在呼叫的時候也是,引數可以有可以沒有,也可以和定義時的引數個數不一致 沒有給count傳入引數,預設為10 也可以直接在引數中給count賦值 但是特別注意的是不能給count傳入0,因為0與undefined都是false,因此count傳入的...
Swift 函式預設值
在 swift 中,函式的內部引數標籤不會用來區分函式,另外引數是可以指定預設值的。如下函式 func alert message string,cancelhandler uialertaction void nil,confirmhandler uialertaction void nil 作為...