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
   27   28   29   30   31   32   33   34   35   36   37