Đối số mặc định là đối số hàm nhận giá trị mặc định nếu bạn không chuyển giá trị rõ ràng khi gọi hàm. Ví dụ: định nghĩa hàm
my_function[]
5 cho phép bạn gọi nó có hoặc không có đối số tùy chọn my_function[]
6—các lệnh gọi hợp lệ làmy_function[]
7, my_function[]
8 hoặc thậm chí là my_function[]
9. Nhưng nếu bạn không chuyển đối số tùy chọn, nó sẽ chỉ gán giá trị mặc định 0 cho đối số my_function[]
6Ví dụ đối số mặc định
def f[x=0]: print[x] f[10] # 10 f[-2] # -2 f['hello world'] # hello world ######################## # DEFAULT ARGUMENT # ######################## f[] # 0
Đăng kí. Khi nào nên sử dụng đối số mặc định?
Giả sử, bạn đã tạo một công cụ dòng lệnh Python cho doanh nghiệp của mình. Công cụ này yêu cầu xác nhận của người dùng đối với các hoạt động khác nhau như ghi hoặc xóa tệp
Để tránh mã thừa, bạn đã triển khai một chức năng chung xử lý tương tác với người dùng. Hành vi mặc định phải bao gồm ba bước
- [1] Bạn hỏi [nhắc] người dùng một câu hỏi
- [2] Người dùng đưa ra một số phản hồi
- [3] Miễn là phản hồi không hợp lệ, chức năng này sẽ lặp lại tối đa bốn lần--mỗi lần in lời nhắc
1This is a function without arguments
Số lần lặp lại và lời nhắc có thể tùy chỉnh thông qua các thông số
Để đạt được điều này, bạn có thể chỉ định các đối số mặc định như được đưa ra trong đoạn mã sau. Bạn có thể sử dụng các tham số mặc định bằng cách gọi
This is a function without arguments
2. Hoặc bạn có thể ghi đè lên chúng theo thứ tự định nghĩa của chúng [một, một số hoặc tất cả các tham số]def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']
Hãy kiểm tra xem bạn hiểu khái niệm đối số mặc định này như thế nào
Đối số mặc định của câu đố
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']0 có phải là một lệnh gọi hàm hợp lệ không?
Điều thú vị là chỉ 50% người dùng finxter giải được câu đố này. họ dường như đoán được câu trả lời. Thay thế một phần các đối số mặc định là một tính năng mới đối với hầu hết người dùng. Nó có mới đối với bạn không?
Nắm vững các tính năng ngôn ngữ cơ bản này sẽ nâng bạn lên cấp độ của một lập trình viên nâng cao
Bạn có phải là một lập trình viên bậc thầy không?
Kiểm tra kỹ năng của bạn ngay bây giờ.
Video liên quan
Hướng dẫn lập trình Python 3 - Mặc định tham số chức năng
Xem video này trên YouTube
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây
Các hàm trong Python được sử dụng để triển khai logic mà bạn muốn thực hiện lặp lại ở các vị trí khác nhau trong mã của mình. Bạn có thể truyền dữ liệu cho các hàm này thông qua các đối số của hàm. Ngoài việc truyền đối số cho hàm thông qua lệnh gọi hàm, bạn cũng có thể đặt giá trị đối số mặc định trong hàm Python. Các giá trị mặc định này được gán cho các đối số của hàm nếu bạn không chuyển một giá trị tham số cho đối số đã cho một cách rõ ràng. Tham số là các giá trị thực sự được truyền cho các đối số của hàm
Trong bài viết này, bạn sẽ thấy cách sử dụng các đối số mặc định trong các hàm Python. Nhưng trước tiên, chúng ta sẽ xem cách định nghĩa một hàm trong Python và cách chuyển các giá trị cho các đối số của hàm một cách rõ ràng
Chức năng không có đối số
Hãy xác định một hàm Python rất đơn giản mà không cần bất kỳ đối số nào
def my_function[]:
print["This is a function without arguments"]
Đoạn script trên định nghĩa một hàm,
This is a function without arguments
6, không chấp nhận bất kỳ đối số nào và chỉ in ra một chuỗiTập lệnh sau đây cho biết cách bạn thực sự gọi hàm
This is a function without arguments
7my_function[]
Ở đầu ra, bạn sẽ thấy một câu lệnh đơn giản được in ra màn hình bằng hàm
This is a function without arguments
7This is a function without arguments
Chức năng với các đối số rõ ràng
Bây giờ chúng ta hãy xác định một hàm Python đơn giản, nơi chúng ta phải truyền nhiều giá trị cho các đối số của hàm. Nếu bạn không chỉ định giá trị cho tất cả các đối số của hàm, bạn sẽ gặp lỗi
Đây là chức năng chúng tôi sẽ sử dụng làm ví dụ
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
Trong đoạn mã trên, chúng ta tạo một hàm,
This is a function without arguments
9, với hai đối số def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 và def func_args[integer1, integer2]:
result = integer1 + integer2
return result
1. Hàm cộng các giá trị được truyền trong hai đối số và trả về kết quả cho người gọi hàmHãy thử gọi hàm trên với hai đối số
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']3
Đoạn script trên gọi phương thức
This is a function without arguments
9 với hai giá trị tham số là i. e. 10 và 20. Ở đầu ra, bạn sẽ thấy tổng của hai giá trị này, tôi. e. 30Bây giờ chúng ta hãy thử gọi phương thức
This is a function without arguments
9 mà không truyền giá trị cho các đối sốdef ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']6
Ở đầu ra, bạn sẽ thấy lỗi sau
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']7
Lỗi khá rõ ràng, lệnh gọi hàm tới
This is a function without arguments
9 thiếu 2 đối số vị trí bắt buộc, def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 và def func_args[integer1, integer2]:
result = integer1 + integer2
return result
1. Về cơ bản, lỗi cho chúng ta biết rằng chúng ta cần chuyển các giá trị cho các đối số def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 và def func_args[integer1, integer2]:
result = integer1 + integer2
return result
1 thông qua lệnh gọi hàmBây giờ chúng ta hãy chuyển một giá trị cho một trong các đối số và xem điều gì sẽ xảy ra
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']3
Bây giờ ở đầu ra, bạn sẽ lại thấy lỗi sau
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']4
Sự khác biệt ở đây là lỗi bây giờ cho chúng ta biết rằng giá trị của một trong các đối số vị trí, i. e.
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
1, mất tích. Điều này có nghĩa là không có bất kỳ giá trị đối số mặc định nào được đặt, bạn phải chuyển các giá trị một cách rõ ràng cho tất cả các đối số của hàm, nếu không sẽ xảy ra lỗiNếu bạn muốn hàm của mình thực thi có hoặc không có các giá trị đối số trong lệnh gọi hàm thì sao?
Chức năng với đối số mặc định
Đối số mặc định trong các hàm Python là những đối số nhận giá trị mặc định nếu không có giá trị rõ ràng nào được chuyển cho các đối số này từ lệnh gọi hàm. Hãy định nghĩa một hàm với một đối số mặc định
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']6
Đoạn script trên định nghĩa một hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 với một đối số mặc định i. e.
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0. Giá trị mặc định cho đối số def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 được đặt thành 2. Nếu bạn gọi phương thức def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 với một giá trị cho đối số
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0, thì hàm def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 sẽ trả về bình phương của giá trị đó
Mặt khác, nếu bạn không chuyển bất kỳ giá trị nào cho đối số
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 của hàm def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30, bạn sẽ thấy giá trị mặc định đó, i. e. 2, sẽ được gán cho
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0, và hàm sẽ trả về bình phương của 2, i. e. 4Trước tiên hãy gọi phương thức
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 với giá trị đối số là 10
my_function[]
0đầu ra
my_function[]
1Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Khi bạn thực thi đoạn script trên, giá trị 10 sẽ ghi đè giá trị mặc định là 2 cho đối số
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 của hàm def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 và hàm trả về 100, là bình phương của 10
Bây giờ chúng ta sẽ gọi hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 mà không có bất kỳ giá trị nào cho đối số
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']63. Trong trường hợp này, bạn sẽ thấy rằng 4 sẽ được trả về bởi hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30 vì trong trường hợp không có giá trị cho hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30, giá trị mặc định của 2 sẽ được sử dụng làm giá trị cho hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']30, như minh họa bên dưới
my_function[]
2đầu ra
my_function[]
3Một hàm Python cũng có thể có nhiều đối số mặc định. Chẳng hạn, trong tập lệnh sau, hàm thêm số nguyên được truyền vào đối số. Nếu không có giá trị số nguyên nào được truyền cho hàm, thì các đối số mặc định sẽ nhận giá trị 2 và 4 tương ứng, như minh họa bên dưới
my_function[]
4Trước tiên hãy gọi hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']67 mà không có bất kỳ tham số nào
my_function[]
5đầu ra
my_function[]
6Vì chúng tôi không chuyển bất kỳ giá trị nào cho các đối số của hàm, các giá trị đối số mặc định, tôi. e 2 và 4, đã được cộng lại với nhau
Bây giờ, hãy chuyển hai giá trị của riêng chúng ta cho hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']67
my_function[]
7đầu ra
my_function[]
8Đúng như dự đoán, 4 và 8 được cộng lại với nhau để trả về 12
Một hàm Python có thể có cả đối số bình thường [rõ ràng] và mặc định cùng một lúc. Hãy tạo một hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']69. Đối số đầu tiên của hàm là đối số bình thường trong khi đối số thứ hai là đối số mặc định có giá trị là 2. Hàm trả về kết quả của giá trị trong đối số đầu tiên được nâng lên lũy thừa của giá trị trong đối số thứ hai
my_function[]
9Trước tiên hãy chỉ vượt qua một đối số duy nhất
This is a function without arguments
0đầu ra
This is a function without arguments
1Trong đoạn mã trên, 3 đã được chuyển dưới dạng giá trị cho đối số
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
0 của hàm def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']69. Không có giá trị nào được cung cấp cho đối số mặc định
def func_args[integer1, integer2]:
result = integer1 + integer2
return result
1. Do đó, giá trị mặc định của 2 sẽ được sử dụng để lấy lũy thừa của 3 và bạn sẽ thấy 9 ở đầu raBây giờ chúng ta hãy chuyển hai giá trị cho hàm
def ask_ok[prompt, retries=4, reminder='Try again: yes or no?']: while retries>0: ok = input[prompt] if ok in ['y', 'yes']: return True if ok in ['n', 'no']: return False retries = retries - 1 print[reminder] ask_ok['May we send you a free gift?']69
This is a function without arguments
2Ở đầu ra, bạn sẽ thấy 3 được nâng lên lũy thừa 4, i. e. 81
Điều quan trọng cần lưu ý là các tham số có đối số mặc định không được theo sau bởi các tham số không có đối số mặc định. Lấy chức năng sau đây làm ví dụ
This is a function without arguments
3Cố gắng gọi hàm này sẽ dẫn đến lỗi vì đối số đầu tiên có giá trị mặc định, nhưng đối số thứ hai thì không