Các hàm Python
Hàm là một khối mã chỉ chạy khi nó được gọi.
Bạn có thể truyền dữ liệu, được gọi là tham số, vào một hàm.
Kết quả là một hàm có thể trả về dữ liệu.
Tạo một chức năng
Trong Python, một hàm được định nghĩa bằng từ khóa def :
Thí dụ
def my_function():
print("Hello from a function")
Gọi một hàm
Để gọi một hàm, hãy sử dụng tên hàm theo sau bởi dấu ngoặc đơn:
Thí dụ
def my_function():
print("Hello from a function")
my_function()
Tranh luận
Thông tin có thể được chuyển vào các hàm dưới dạng đối số.
Các đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy thích, chỉ cần phân tách chúng bằng dấu phẩy.
Ví dụ sau có một hàm với một đối số (fname). Khi hàm được gọi, chúng ta truyền một tên đầu tiên, tên này được sử dụng bên trong hàm để in tên đầy đủ:
Thí dụ
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Đối số thường được rút ngắn thành args trong tài liệu Python.
Tham số hoặc Đối số?
Tham số điều khoản và đối số có thể được sử dụng cho cùng một thứ: thông tin được truyền vào một hàm.
Từ quan điểm của một chức năng:
Tham số là biến được liệt kê bên trong dấu ngoặc đơn trong định nghĩa hàm.
Đối số là giá trị được gửi đến hàm khi nó được gọi.
Số đối số
Theo mặc định, một hàm phải được gọi với số lượng đối số chính xác. Có nghĩa là nếu hàm của bạn mong đợi 2 đối số, bạn phải gọi hàm với 2 đối số, không nhiều hơn và không ít hơn.
Thí dụ
Hàm này yêu cầu 2 đối số và nhận 2 đối số:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Thí dụ
Hàm này yêu cầu 2 đối số, nhưng chỉ nhận được 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Lập luận tùy tiện, * args
Nếu bạn không biết có bao nhiêu đối số sẽ được truyền vào hàm của mình, hãy thêm a *
vào trước tên tham số trong định nghĩa hàm.
Bằng cách này, hàm sẽ nhận được nhiều đối số và có thể truy cập các mục tương ứng:
Thí dụ
Nếu số lượng đối số không xác định, hãy thêm a *
vào trước tên tham số:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Các đối số tùy ý thường được rút ngắn thành * args trong tài liệu Python.
Đối số từ khóa
Bạn cũng có thể gửi các đối số bằng cú pháp key = value .
Bằng cách này, thứ tự của các đối số không quan trọng.
Thí dụ
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Cụm từ Lập luận từ khóa thường được rút ngắn thành kwargs trong tài liệu Python.
Đối số từ khóa tùy ý, ** kwargs
Nếu bạn không biết có bao nhiêu đối số từ khóa sẽ được truyền vào hàm của mình, hãy thêm hai dấu sao: **
trước tên tham số trong định nghĩa hàm.
Bằng cách này, hàm sẽ nhận từ điển các đối số và có thể truy cập các mục tương ứng:
Thí dụ
Nếu số lượng đối số của từ khóa là không xác định, hãy thêm một dấu đôi
**
vào trước tên tham số:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Đối số Kword tùy ý thường được rút ngắn thành ** kwargs trong tài liệu Python.
Giá trị tham số mặc định
Ví dụ sau đây cho thấy cách sử dụng giá trị tham số mặc định.
Nếu chúng ta gọi hàm mà không có đối số, nó sử dụng giá trị mặc định:
Thí dụ
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Chuyển danh sách dưới dạng đối số
Bạn có thể gửi bất kỳ kiểu dữ liệu nào của đối số tới một hàm (chuỗi, số, danh sách, từ điển, v.v.) và nó sẽ được coi là cùng một kiểu dữ liệu bên trong hàm.
Ví dụ: nếu bạn gửi một Danh sách dưới dạng một đối số, nó sẽ vẫn là một Danh sách khi nó đến hàm:
Thí dụ
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Giá trị trả lại
Để cho phép một hàm trả về một giá trị, hãy sử dụng return
câu lệnh:
Thí dụ
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Tuyên bố vượt qua
function
Định nghĩa không được để trống, nhưng nếu bạn vì lý do nào đó mà function
định nghĩa không có nội dung, hãy đưa vào pass
câu lệnh để tránh mắc lỗi.
Thí dụ
def myfunction():
pass
Đệ quy
Python cũng chấp nhận đệ quy hàm, có nghĩa là một hàm được xác định có thể gọi chính nó.
Đệ quy là một khái niệm lập trình và toán học phổ biến. Nó có nghĩa là một hàm gọi chính nó. Điều này có lợi ích là bạn có thể lặp lại dữ liệu để đạt được kết quả.
Nhà phát triển nên rất cẩn thận với đệ quy vì có thể khá dễ dàng để viết một hàm không bao giờ kết thúc hoặc một hàm sử dụng quá nhiều bộ nhớ hoặc sức mạnh của bộ xử lý. Tuy nhiên, khi được viết chính xác thì đệ quy có thể là một cách tiếp cận lập trình rất hiệu quả và thanh lịch về mặt toán học.
Trong ví dụ này, tri_recursion () là một hàm mà chúng ta đã định nghĩa để gọi chính nó ("recurse"). Chúng tôi sử dụng biến k làm dữ liệu, biến này giảm ( -1 ) mỗi khi chúng tôi đệ quy. Đệ quy kết thúc khi điều kiện không lớn hơn 0 (tức là khi nó bằng 0).
Đối với một nhà phát triển mới, có thể mất một khoảng thời gian để tìm ra cách hoạt động chính xác của điều này, cách tốt nhất để tìm hiểu là thử nghiệm và sửa đổi nó.
Thí dụ
Ví dụ đệ quy
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)