Def trong Python là gì
10.Hàm trong PythonHàm trong Python là gì? Hàm trong Python được sử dụng để tận dụng mã nguồn ở nhiều nơi trong cùng một chương trình, đôi khi còn được gọi là phương thức hoặc thủ tục. Python cung cấp cho bạn nhiều hàm dựng sẵn như print(), nhưng bạn cũng có thể viết hàm của chính mình. Trong bài này, chúng ta sẽ tìm hiểu
Cách định nghĩa và gọi hàm trong Python Hàm trong Python được định nghĩa bởi câu lệnh "def" theo sau là tên hàm và dấu ngoặc đơn (()) Thí dụ: Cùng khai báo một hàm bằng cách sử dụng lệnh "def func1 ():" và gọi hàm. Đầu ra của hàm sẽ là I am learning Python function.
Lời gọi func1() sẽ gọi tới hàm func1() ta đã định nghĩa và in ra dòng chữ: I am learning Python function Việc định nghĩa một hàm trong Python cũng có một số quy tắc
Ý nghĩa của thụt lề (khoảng trắng) trong Python Trước khi tìm hiểu sâu hơn về hàm, chúng ta cần nắm được quy tắc thụt lề để khai báo hàm trong Python. Các quy tắc này cũng được áp dụng cho các đối tượng khác của Python như khai báo điều kiện, vòng lặp hoặc biến. Python tuân theo một kiểu thụt lề nhất định để xác định đâu là mã nguồn, vì các hàm trong Python không được khai báo theo cách sử dụng dấu ngoặc nhọn để xác định nơi bắt đầu và kết thúc của hàm, vì vậy Python cần dựa vào quy tắc thụt lề. Ở đây chúng ta lấy một ví dụ đơn giản với lệnh "print". Khi chúng ta viết hàm "print" ngay bên dưới def func1(): Chương trình sẽ báo lỗi: "indentation error: expected an indented block".
Bây giờ, khi bạn thêm thụt lề (dấu cách) phía trước hàm "print", chương trình sẽ in ra kết quả như mong đợi.
Bạn cần ít nhất một dấu cách để chương trình có thể chạy đúng. Tuy nhiên, thường khuyến khích việc thụt lề với 4 dấu cách (Trong các IDE bạn có thể thiết lập để dùng tab thay cho khoảng trắng, IDE sẽ có các tùy chọn cho chuyển đổi từ 1 tab thành 2, 4 hoặc 8 dấu cách). Ngoài ra, khi khai báo kèm theo thụt lề, bạn nên thực hiện việc thụt lề giống nhau cho toàn bộ chương trình. Ví dụ, trong ảnh chụp màn hình bên dưới khi chúng ta gọi một câu lệnh khác là "still in func1" và khi nó không được khai báo thẳng hàngngay bên dưới câu lệnh print đầu tiên, chương trình sẽ báo một lỗi thụt lề: "unindent does not match any other indentation level."
Bây giờ, khi chúng ta áp dụng cùng một cách thụt lề cho cả hai câu lệnh và sắp xếp chúng thẳng hàng, chương trình sẽ chạy như mong muốn.
Hàm trả về giá trị như thế nào? Lệnh return trong Python chỉ định giá trị nào sẽ trả lại cho lời gọi hàm. Cùng tìm hiểu thông qua ví dụ sau: Bước 1) Ở đây - chúng ta sẽ thấy hàm không có câu lệnh "trả về". Ví dụ: chúng ta muốn tính bình phương của 4, chương trình sẽ in ra 16. Chúng ta cũng có thể làm được điều này với câu lệnh đơn giản print x*x, nhưng khi bạn gọi hàm "print square", chương trình sẽ trả về "None". Điều này là do khi bạn gọi hàm, không có giá trị trả về và hàm kết thúc. Python trả về "None" khi rời khỏi hàm.
Bước 2) Để quan sát rõ hơn, chúng ta thay thế lệnh print bằng phép gán. Hãy kiểm tra đầu ra.
Khi bạn chạy lệnh "print square(4)", chương trình sẽ in ra kết quả trả về của hàm square, nhưng do chúng ta không khai báo giá trị trả về trong hàm nên kết quả in ra là None. Bước 3) Giờ chúng ta sẽ tìm cách thu được kết quả thông qua lệnh return. Khi bạn gọi hàm return và thực thi mã nguồn, chương trình sẽ trả về giá trị 16.
Bước 4) Bản thân các hàm trong Python chính là một đối tượng, và một đối tượng sẽ có giá trị nhất định. Ở đây chúng ta có thể thấy cách Python tương tác với các đối tượng. Khi bạn chạy lệnh "print square", nó sẽ trả về giá trị của đối tượng. Vì chúng ta không truyền vào bất kỳ đối số nào, chúng ta cũng không có hàm cụ thể nào để chạy nên chương trình trả về một giá trị mặc định (0x021B2D30), giá trị này chính là địa chỉ của đối tượng.
Đối số trong hàm Đối số là một giá trị được truyền cho hàm khi nó được gọi. Nói cách khác, ở phía người gọi, nó là đối số, còn ở phía hàm, nó được coi là tham số. Cùng tìm hiểu cách đối số hoạt động trong Python: Bước 1) Các đối số được khai báo trong định nghĩa hàm. Khi gọi hàm, bạn có thể truyền các giá trị cho đối số đó như hình bên dưới
Bước 2) Để khai báo giá trị mặc định của đối số, ta cầm gán cho nó một giá trị trong định nghĩa hàm.
Ví dụ: x không có giá trị mặc định. Giá trị mặc định của y=0. Khi chúng ta thực hiện lời gọi hàm multiply với chỉ một đối số, Python sẽ gán giá trị cho x trong khi vẫn giữ nguyên giá trị của y=0. Tức là bạn đang thực hiện phép nhân: x*y=0
Bước 3) Lần này chúng ta sẽ thay đổi giá trị thành y = 2 thay vì giá trị mặc định y = 0 và chương trình sẽ in ra kết quả là (4x2) = 8.
Bước 4) Bạn cũng có thể thay đổi thứ tự mà các đối số có thể được truyền vào Python. Ở đây chúng ta đã đảo ngược thứ tự của giá trị x và y thành x = 4 và y = 2.
Bước 5) Chúng ta có thể truyền vào nhiều đối số thông qua một mảng. Trong ví dụ dưới, chúng ta sẽ truyền vào nhiều đối số (1,2,3,4,5) bằng cách gọi hàm với (* args). Ví dụ: Khai báo nhiều đối số dưới dạng (1,2,3,4,5) khi chúng ta gọi hàm với (* args); chương trình sẽ in ra kết quả là (1,2,3,4,5)
Lưu ý:
Đây là mã nguồn đầy đủ sử dụng Python 3 #define a function def func1(): print ("I am learning Python function") print ("still in func1") func1() def square(x): return x*x print(square(4)) def multiply(x,y=0): print("value of x=",x) print("value of y=",y) return x*y print(multiply(y=2,x=4))Đây là mã nguồn đầy đủ sử dụng Python 2 #define a function def func1(): print " I am learning Python function" print " still in func1" func1() def square(x): return x*x print square(4) def multiply(x,y=0): print"value of x=",x print"value of y=",y return x*y print multiply(y=2,x=4) in bội (y = 2, x = 4)Tổng kết Hàm trong Python là một đoạn mã có thể tái sử dụng nhằm thực hiện một công việc duy nhất. Trong bài này, chúng ta thấy rằng:
|