Page 30 - Python Simple
P. 30

4. Bàn thêm về luồng điều khiển                                  http://www.vithon.org/tutorial/2.5/node6.html



             Ví dụ này cho thấy một vài tính năng mới của Python:

                 return trả về với một giá trị từ một hàm. return không có thông số biểu thức đi kèm trả về None.
                 Rớt ra khỏi một thủ tục cũng trả về Nonecủa hàm.

                 Câu lệnh result.append(b) gọi một phương thức của đối tượng danh sách. result. Một phương
                 thức là một hàm `thuộc về' một đối tượng và có tên obj.methodname, với obj là một đối tượng nào
                 đó (có thể là một biểu thức), và methodname là tên của một phương thức được định nghĩa bởi kiểu
                 của đối tượng. Các kiểu khác nhau định nghĩa các phương thức khác nhau. Phương thức của các
                 kiểu khác nhau có thể có cùng tên mà không dẫn đến sự khó hiểu. (Bạn có thể định nghĩa kiểu đối
                 tượng và phương thức cho riêng bạn, dùng lớp, như sẽ được bàn đến ở các chương sau.) Phương
                 thức append() dùng trong ví dụ này được định nghĩa cho các đối tượng danh sách; nó thêm một
                 phần tử mới vào cuối danh sách. Trong ví dụ này, nó tương đương với "result = result + [b]",
                 nhưng hiệu quả hơn.

             4.7 Bàn thêm về định nghĩa hàm


             Bạn cũng có thể định nghĩa các hàm với số lượng thông số thay đổi. Có ba dạng, và chúng có thể được
             dùng chung với nhau.

             4.7.1 Giá trị thông số mặc định


             Dạng hữu dụng nhất là để chỉ định một giá trị mặc định cho một hoặc nhiều thông số. Dạng này tạo một
             hàm có thể được gọi với ít thông số hơn là nó được định nghĩa để nhận. Ví dụ:
                def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
                    while True:
                        ok = raw_input(prompt)
                        if ok in ('y', 'ye', 'yes'): return True
                        if ok in ('n', 'no', 'nop', 'nope'): return False
                        retries = retries - 1
                        if retries < 0: raise IOError, 'refusenik user'
                        print complaint
             Hàm này có thể được gọi như sau: ask_ok('Do you really want to quit?') hoặc như sau:
             ask_ok('OK to overwrite the file?', 2)của hàm.
             Ví dụ này giới thiệu từ khóa in . Nó kiểm tra xem một dãy có chứa một giá trị nào đó không.

             Các giá trị mặc định được định giá tại nơi hàm được định nghĩa trong phạm vi định nghĩa (defining
             scope) , do đó

                i = 5
                def f(arg=i):
                    print arg
                i = 6
                f()
             sẽ in 5của hàm.

             Cảnh báo quan trọng: Giá trị mặc định chỉ được định giá một lần. Điểm này quan trọng khi mặc định
             là một giá trị khả biến như danh sách, từ điển hoặc các đối tượng của hầu hết mọi lớp. Ví dụ, hàm sau
             gộp các thông số truyền vào nó từ các lời gọi sau đó:
                def f(a, L=[]):
                    L.append(a)
                    return L

                print f(1)
                print f(2)
                print f(3)





     4 of 7                                                                                   08/31/2011 07:39 AM
   25   26   27   28   29   30   31   32   33   34   35