Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách viết hàm Python chấp nhận số lượng đối số tùy ý

Vấn đề

Bạn muốn viết hàm chấp nhận bất kỳ số lượng đối số đầu vào nào.

Giải pháp

1. Đối số vị trí tùy ý: *args

Dấu sao * trước tên tham số cho phép nhận nhiều đối số vị trí. Các đối số thêm vào được gom vào một tuple.

Ví dụ: Tính trung bình của 2 hoặc nhiều số.


def define_average(first_arg, *rest_arg):
    average = (first_arg + sum(rest_arg)) / (1 + len(rest_arg))
    print(f"Output \n *** Trung bình của các số: {average}")

define_average(1, 2)        # 1.5
define_average(1, 2, 3, 4)  # 2.5

2. Đối số từ khóa tùy ý: **kwargs

Dấu sao kép ** cho phép nhận nhiều đối số từ khóa. Chúng được gom vào một dictionary.


def player_stats(player_name, player_country, **player_titles):
    print(f"Type of player_titles: {type(player_titles)}")
    titles = ' AND '.join(f'{key} : {value}' for key, value in player_titles.items())
    stats = f'The player - {player_name} from {player_country} has {titles}'
    return stats

player_stats('Roger Federer', 'Switzerland', Grandslams=20, ATP=103)

Kết quả:


Type of player_titles: 
'The player - Roger Federer from Switzerland has Grandslams : 20 AND ATP : 103'

3. Kết hợp cả hai: *args và **kwargs


def func_anyargs(*args, **kwargs):
    print(args)   # tuple
    print(kwargs) # dict

Tất cả đối số vị trí vào args (tuple), tất cả đối số từ khóa vào kwargs (dict).