根據不同的配置資訊得到不同的結果,即引用了自由變數的函式
下面我們來看兩個函式
1.
def
make_adder
(addend):
defadder
(augend):
return augend + addend
return adder
p = make_adder(23)
q = make_adder(44)
print p(100)
print q(100)
123
144
2.
def
make_adder
(addend):
defadder
(augend):
return -augend
return adder
p = make_adder(23)
q = make_adder(44)
print p(100)
print q(100)
#結果是
-100
-100
這明明不就是乙個函式麼?仔細看,其實不一樣,對於最裡面的函式乙個return addend+augend
另乙個return -augend
很明顯我們得到乙個結論,p被賦予的值將傳入內部函式作為引用來使用
傳入函式時,有些時候,不需要顯式地定義函式,直接傳入匿名函式更方便
>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]
關鍵字 lambda ,冒號前面的x表示引數
用匿名函式有個好處,因為函式沒有名字,不必擔心函式名衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式
def
build
(x, y):
return
lambda: x * x + y * y
1.int()函式可以把字串轉化為整數,當傳入字串時,int ()函式預設按十進位制轉換:
>>>int('12345')
12345但int函式還提供額外的base引數,預設值為10.如果傳入base引數,就可以做n進製的轉換>>>int('12345',base=8)
5349八進位制轉換為十進位制,編寫轉換二進位制的函式
def
int2
(x,base=2):
return int(x,base)
這樣可以直接轉化二進位制;
2.functools.partial
就是用來建立乙個偏函式的,不需要我們自己定義int2(),可以直接使用建立乙個新的函式int2:
import functools
int2=functools.partial(int ,base=2)
python教學筆記 python學習筆記(一)
1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...
python學習筆記
coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...
Python 學習筆記
python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...