【練習題】第三章--函式(Think Python)
讀書筆記:
1.函式定義的第一行叫做頭部,剩下的叫做函式體。函式頭部的末尾必須有一個冒號,函式體必須是相對函式頭部有縮排的,距離行首相對於函式頭要有四個空格的距離。函式體可以有任意長度的語句。
2.在函式定義完畢的結尾,必須輸入一行空白行。定義函式會建立一個函式類的物件,有type函式。
3.
fruitful function: A function that returns a value.
有返回值函式:返回一個值作為返回值的函式。
module: A file that contains a collection of related functions and other definitions.
模組:包含一系列相關函式以及其他一些定義的檔案。
dot notation: The syntax for calling a function in another module by specifying the module name followed by a dot (period) and the function name.
點符號:呼叫某一個模組的某一函式的語法形式,就是模組名後加一個點,也就是英文的句號,再加函式名。
練習1:
寫一個名叫right_justify的函式,形式引數是名為s的字串,將字串列印,前面流出足夠的空格,讓字串最後一個字幕在第70列顯示。
>>> right_justify('monty') monty
提示:使用字元拼接和重複來實現。另外Python還提供了內建的名字叫做len的函式,可以返回一個字串的長度,比如len('monty')的值就是5了。
練習2:
你可以把一個函式物件作為一個值賦給一個變數或者作為一個實際引數來傳遞給其他函式。比如,do_twice就是一個把其他函式物件當做引數的函式,它的功能是呼叫物件函式兩次:
def do_twice(f): f() f()
下面是另一個例子,這裡用了do_twice來呼叫一個名叫print_spam的函式兩次。
def print_spam():
print('spam')
do_twice(print_spam)
1.把上面的例子寫成指令碼然後試一下。
2.修改一下do_twice這個函式,讓它接收兩個實際引數,一個是函式物件,一個是值,呼叫物件函式兩次,並且賦這個值給物件函式作為實際引數。
3.把print_twice這個函式的定義複製到你的腳本里面,去本章開頭找一下這個例子哈。
4.用修改過的這個do_twice來呼叫print_twice兩次,用字串『spam』傳遞過去作為實際引數。
5.定義一個新的函式,名字叫做do_four,使用一個函式物件和一個值作為實際引數,呼叫這個物件函式四次,傳遞這個值作過去為物件函式的一個形式引數。這個函式體內只要有兩個語句就夠了,而不是四個。
code:
def do_twice(f,x):
f(x)
f(x)
def do_four(f,x):
do_twice(f,x)
do_twice(f,x)
def print_spam(x):
print('spam'+x)
def print_twice(bruce):
print(bruce)
print(bruce)
do_twice(print_spam,'pppppp')
do_twice(print_twice,'spam')
do_four(print_spam,'pppppp')
answer:
spampppppp
spampppppp
spam
spam
spam
spam
spampppppp
spampppppp
spampppppp
spampppppp