Trong Python bạn có thể tạo một hàm với nhiều tham số. Khi gọi hàm thì bắt buộc phải nhập giá trị cho tham số, tuy nhiên với những tham số có giá trị mặc định thì không cần.
1.Giá trị mặc định của tham số
Giá trị mặc định tức là nếu bạn không nhập giá trị lúc gọi hàm thì tham số sẽ lấy giá trị mặc định đó. Để tạo giá trị mặc định thì bạn dùng toán tử =
và gán ngay lúc tạo hàm.
1
|
def greet(msg = "Good morning!" ): |
Biến msg
sẽ có giá trị mặc định là ‘Good morning!“. Hãy xem ví dụ đầy đủ sau để hiểu rõ hơn.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
def greet(name, msg = "Good morning!" ): """ This function greets to the person with the provided message. If message is not provided, it defaults to "Good morning!" """ print ( "Hello" ,name + ', ' + msg) greet( "Kate" ) greet( "Bruce" , "How do you do?" ) |
Ở đoạn gọi hàm mình đã gọi với hai cách khác nhau,
greet("Kate")
là cách gọi chỉ truyền vào một tham số nên function sẽ lấy giá trị mặc định cho tham số thứ hai.greet("Bruce","How do you do?")
là các gọi đầy đủ nên giá trị mặc định không được sử dụng.
Chạy chương trình này thì kết quả sẽ như sau:
1
2
|
Hello Kate, Good morning! Hello Bruce, How do you do? |
Lưu ý: Bạn không thể tạo một tham số có giá trị mặc định đằng trước những tham số không có giá trị mặc định, như ví dụ dưới đây là sai.
1
|
def greet(msg = "Good morning!" , name): |
2. Truyền tham số theo key name
Truyền tham số theo key name tức là lúc gọi hàm và truyền tham số bạn sẽ nhập thêm tên của tham số, cách này có ưu điểm ở chỗ là bạn không cần phải nhớ chính xác thứ tự của các tham số, nhưng bù lại bạn phải nhớ tên của tham số.
Như ở ví dụ trên mình có thể gọi các cách như sau:
1
2
3
4
5
6
7
8
|
>>> # 2 keyword arguments >>> greet(name = "Bruce" ,msg = "How do you do?" ) >>> # 2 keyword arguments (out of order) >>> greet(msg = "How do you do?" ,name = "Bruce" ) >>> # 1 positional, 1 keyword argument >>> greet( "Bruce" ,msg = "How do you do?" ) |
3. Tham số không giới hạn
Tham số không giới hạn hay còn gọi là tham số Arbitrary. Khi sử dụng tham số này thì bạn có thể truyền bao nhiêu cũng được lúc gọi hàm.
Để tạo một tham số không giới hạn thì bạn thêm ký tự *
đằng trước tham số đó. Hãy xem ví dụ dưới đây.
1
2
3
4
5
6
7
8
9
|
def greet( * names): """This function greets all the person in the names tuple.""" # names is a tuple with arguments for name in names: print ( "Hello" ,name) greet( "Monica" , "Luke" , "Steve" , "John" ) |
Như bạn thấy, mình phải sử dụng vòng lặp để lặp qua từng tham số, và lúc gọi hàm thì nhập bao nhiêu cũng được.
Chạy lên thì kết quả chương trình sẽ là:
1
2
3
4
|
Hello Monica Hello Luke Hello Steve Hello John |
Đây là cách gọi hàm với nhiều đối số, khi bạn truyền vào thì nó sẽ tạo thành một Tuple nên bắt buộc phải sử dụng vòng lặp để lặp qua từng giá trị.
Lời kết: Như vậy là bạn đã học xong các trường hợp và cách sử dụng tham số trong function, hy vọng bài viết sẽ hữu ích với bạn, hẹn gặp lại các bạn ở bài tiếp theo nhé.
Theo:https://freetuts.net