Page 32 - Python Simple
P. 32
4. Bàn thêm về luồng điều khiển http://www.vithon.org/tutorial/2.5/node6.html
keys.sort()
for kw in keys: print kw, ':', keywords[kw]
Nó có thể được gọi như vậy:
cheeseshop('Limburger', "It's very runny, sir.",
"It's really very, VERY runny, sir.",
client='John Cleese',
shopkeeper='Michael Palin',
sketch='Cheese Shop Sketch')
và dĩ nhiên nó sẽ in ra:
-- Do you have any Limburger ?
-- I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch
Lưu ý rằng phương thức sort() của danh sách các tên thông số từ khóa được gọi trước khi in nội dung
của từ điển keywords ; nếu điều này không được thực hiện, thứ tự các thông số được in ra không xác
định.
4.7.3 Danh sách thông số bất kỳ
Cuối cùng, một lựa chọn ít dùng nhất để chỉ định rằng một hàm có thể được gọi với bất kỳ số thông số.
Các thông số này sẽ được gói và trong một bộ. Trước các thông số không xác định, không hoặc nhiều
hơn các thông số chính quy có thể có mặt.
def fprintf(file, format, *args):
file.write(format % args)
4.7.4 Tháo danh sách thông số
Trường hợp ngược xảy ra khi các thông số đã nằm trong một danh sách hoặc một bộ nhưng cần được
tháo ra cho lời gọi hàm cần những thông số vị trí riêng. Ví dụ, hàm có sẵn range() cần nhận các thông
số riêng start và stop . Nếu chúng không được cung cấp riêng lẻ, viết lệnh gọi hàm với toán tử *để tháo
các thông số này ra khỏi một danh sách hoặc bộ:
>>> range(3, 6) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> range(*args) # call with arguments unpacked from a list
[3, 4, 5]
Theo cùng một kiểu, từ điển có thể cung cấp các thông số từ khóa với toán tử **:
>>> def parrot(voltage, state='a stiff', action='voom'):
... print "-- This parrot wouldn't", action,
... print "if you put", voltage, "volts through it.",
... print "E's", state, "!"
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
4.7.5 Dạng lambda
Theo yêu cầu chung, một vài tính năng thường thấy trong các ngôn ngữ lập trình hàm như Lisp đã được
thêm vào Python. Với từ khóa lambda , các hàm vô danh (anonymous function) có thể được tạo ra. Đây
là một hàm trả vè tổng của hai thông số: "lambda a, b: a+b". Dạng lambda có thể được dùng ở bất kỳ
6 of 7 08/31/2011 07:39 AM