Python函式的分階段引數傳遞

2021-04-12 21:57:47 字數 703 閱讀 6005

python函式的分階段引數傳遞

最近用到個工程,因為考慮到效率,所以需要用python中的filter()函式來過濾乙個列表,而這個過濾函式實際上需要2個引數而filter()只能傳遞給過濾函式乙個引數。仔細分析一下,這2個引數中,有1個引數是在request生存期內不變的,而另外乙個是用於過濾的值。所以最終用了一下lambda來做了個函式的分階段引數傳遞。例子如下:

過濾函式:

def myfilter(a,b):

"""b is a parameter that can't change at a request"""

if a%2==0:

return true

else:

return false

執行過程

fc=lambda a:myfilter(a,20)

filter(fc,[1,2,3,4,5,6,7,8])

這樣,過濾函式 myfilter() 的兩個引數是分開傳遞的。

python是一種動態語言,而且還常常號稱是動態語言裡面最慢的乙個。最近ruby的出現才略微改變了一下這種情況,呵呵,聽說ruby比python還要「動態」一些。在python中提高效率的一種可選辦法是確保可讀性的情況下避免使用動態特性,比如過多的"."操作符就很低效。另外,就是可以用一些函式式程式設計的方法,比如很多內建函式,如map()、filter()、zip()等等,應用lambda也是個不錯的辦法。

函式傳引數 python 函式引數

1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...

python傳參方式 Python函式引數傳遞方式

python 函式引數傳遞方式並不像其他語言那樣是 指標 引用 和 值傳遞,而是 物件引用傳遞,本質上是 引用傳遞 可以說 python 中不存在 值傳遞,而是存在 不可變物件 容易誤判的操作 容易被誤認為是 引用傳遞 的操作 def case1 l list int none alist list...

jpython 傳入引數 python函式傳值

python函式傳值到底傳什麼?有很多文章講過這個,但是前兩天被問到居然還是有點不清楚,有點蒙,今天就具體好好看看這個。def test a a 10 print a 這個函式接受乙個輸入,假設輸入20,那麼輸出10,python在傳遞引數的將20的引用傳入,然後函式體內重新賦值,新建了乙個物件10...