Python cho phép define a function với default value được gán cho một hoặc nhiều tham số chính thức. Python sử dụng giá trị mặc định cho tham số như vậy nếu không có giá trị nào được truyền vào. Nếu bất kỳ giá trị nào được truyền vào, giá trị mặc định sẽ bị ghi đè bằng giá trị thực tế được truyền vào.
Default arguments in Python are the function arguments that will be used if no arguments are passed to the function call.
Ví dụ dưới đây cho thấy việc sử dụng các tham số mặc định trong Python. Ở đây, lần gọi thứ hai đến hàm sẽ không truyền giá trị cho tham số "city" , do đó giá trị mặc định của nó "Hyderabad" sẽ được sử dụng.
# Function definition def showinfo( name, city = "Hyderabad" ): "This prints a passed info into this function" print ("Name:", name) print ("City:", city) return # Now call showinfo function showinfo(name = "Ansh", city = "Delhi") showinfo(name = "Shrey")
Nó sẽ tạo ra output sau đây −
Name: Ansh City: Delhi Name: Shrey City: Hyderabad
Hãy xem một ví dụ khác gán giá trị mặc định cho một tham số của hàm. Hàm percent() có một tham số mặc định tên là "maxmarks" được đặt thành 200. Do đó, chúng ta có thể bỏ qua giá trị của tham số thứ ba khi gọi hàm.
# function definition def percent(phy, maths, maxmarks=200): val = (phy + maths) * 100/maxmarks return val phy = 60 maths = 70 # function calling with default argument result = percent(phy, maths) print ("percentage:", result) phy = 40 maths = 46 result = percent(phy, maths, 100) print ("percentage:", result)
Khi thực thi, đoạn mã này sẽ tạo ra đầu ra sau:
percentage: 65.0 percentage: 86.0
Python đánh giá các tham số mặc định chỉ một lần khi hàm được định nghĩa, chứ không phải mỗi lần hàm được gọi. Do đó, nếu bạn sử dụng một tham số mặc định có thể thay đổi và sửa đổi nó trong hàm đã cho, thì các giá trị giống nhau sẽ được tham chiếu trong các lần gọi hàm tiếp theo.
Those Python objects that can be changed after creation are called as mutable objects.
Mã dưới đây giải thích cách sử dụng các đối tượng có thể thay đổi (mutable objects) làm đối số mặc định trong Python.
def fcn(nums, numericlist = []): numericlist.append(nums + 1) print(numericlist) # function calls fcn(66) fcn(68) fcn(70)
Khi thực thi đoạn mã trên, nó sẽ tạo ra đầu ra sau:
[67] [67, 69] [67, 69, 71]