Tranh luận
Trong chủ đề chức năng do người dùng xác định, chúng tôi đã tìm hiểu về việc xác định chức năng và gọi nó. Nếu không, cuộc gọi chức năng sẽ dẫn đến một lỗi. Đây là một ví dụ.
def greet[name, msg]:
"""This function greets to
the person with the provided message"""
print["Hello", name + ', ' + msg]
greet["Monica", "Good morning!"]
Đầu ra
Hello Monica, Good morning!
Ở đây, hàm
Hello Monica, Good morning!3 có hai tham số.
Vì chúng tôi đã gọi chức năng này với hai đối số, nó chạy trơn tru và chúng tôi không gặp bất kỳ lỗi nào.
Nếu chúng tôi gọi nó với một số lượng đối số khác nhau, trình thông dịch sẽ hiển thị thông báo lỗi. Dưới đây là một cuộc gọi đến chức năng này với một và không có đối số cùng với thông báo lỗi tương ứng của chúng.
>>> greet["Monica"] # only one argument TypeError: greet[] missing 1 required positional argument: 'msg'
>>> greet[] # no arguments TypeError: greet[] missing 2 required positional arguments: 'name' and 'msg'
Đối số chức năng biến
Cho đến bây giờ, các chức năng có một số lượng đối số cố định. Trong Python, có nhiều cách khác để xác định một hàm có thể lấy số lượng đối số khác nhau.
Ba hình thức khác nhau của loại này được mô tả dưới đây.
Đối số mặc định của Python
Đối số chức năng có thể có các giá trị mặc định trong Python.
Chúng tôi có thể cung cấp giá trị mặc định cho một đối số bằng cách sử dụng toán tử gán [=]. Đây là một ví dụ.
def greet[name, msg="Good morning!"]:
"""
This function greets to
the person with the
provided message.
If the message is not provided,
it defaults to "Good
morning!"
"""
print["Hello", name + ', ' + msg]
greet["Kate"]
greet["Bruce", "How do you do?"]
Đầu ra
Hello Kate, Good morning! Hello Bruce, How do you do?
Ở đây, hàm
Hello Monica, Good morning!3 có hai tham số.
Vì chúng tôi đã gọi chức năng này với hai đối số, nó chạy trơn tru và chúng tôi không gặp bất kỳ lỗi nào.
Nếu chúng tôi gọi nó với một số lượng đối số khác nhau, trình thông dịch sẽ hiển thị thông báo lỗi. Dưới đây là một cuộc gọi đến chức năng này với một và không có đối số cùng với thông báo lỗi tương ứng của chúng.
Đối số chức năng biến
def greet[msg = "Good morning!", name]:
Cho đến bây giờ, các chức năng có một số lượng đối số cố định. Trong Python, có nhiều cách khác để xác định một hàm có thể lấy số lượng đối số khác nhau.
SyntaxError: non-default argument follows default argument
Ba hình thức khác nhau của loại này được mô tả dưới đây.
Đối số mặc định của Python
Đối số chức năng có thể có các giá trị mặc định trong Python.
Chúng tôi có thể cung cấp giá trị mặc định cho một đối số bằng cách sử dụng toán tử gán [=]. Đây là một ví dụ.
Hello Monica, Good morning!4 không có giá trị mặc định và được yêu cầu [bắt buộc] trong một cuộc gọi.
Mặt khác, tham số
Hello Monica, Good morning!5 có giá trị mặc định là
Hello Monica, Good morning!6. Vì vậy, nó là tùy chọn trong một cuộc gọi. Nếu một giá trị được cung cấp, nó sẽ ghi đè giá trị mặc định.
Bất kỳ số lượng đối số trong một hàm có thể có giá trị mặc định. Nhưng một khi chúng ta có một đối số mặc định, tất cả các đối số ở bên phải cũng phải có các giá trị mặc định.
greet[name="Bruce","How do you do?"]
Điều này có nghĩa là để nói, các đối số không mặc định không thể tuân theo các đối số mặc định. Ví dụ: nếu chúng tôi đã xác định tiêu đề chức năng ở trên là:
Hello Monica, Good morning!0
Chúng tôi sẽ gặp lỗi như:
Đối số từ khóa Python
Khi chúng ta gọi một hàm với một số giá trị, các giá trị này được gán cho các đối số theo vị trí của chúng.
Hello Monica, Good morning!1
Đầu ra
Hello Monica, Good morning!2
Ví dụ: trong hàm trên
Hello Monica, Good morning!3, khi chúng tôi gọi nó là
Hello Monica, Good morning!8, giá trị
Hello Monica, Good morning!9 được gán cho tên đối số và tương tự
>>> greet["Monica"] # only one argument TypeError: greet[] missing 1 required positional argument: 'msg'0 với MSG.