Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

임의의 수의 인수를 허용하는 Python에서 함수를 작성하는 방법

<시간/>

문제

원하는 수의 입력 인수를 허용하는 함수를 작성하려고 합니다.

해결책

python의 * 인수는 여러 인수를 허용할 수 있습니다. 주어진 두 개 이상의 숫자의 평균을 찾는 예를 통해 이것을 이해할 것입니다. 아래 예에서 rest_arg는 전달된 모든 추가 인수(이 경우 숫자)의 튜플입니다. 함수는 평균 계산을 수행할 때 인수를 시퀀스로 처리합니다.

# Sample function to find the average of the given numbers
def define_average(first_arg, *rest_arg):
average = (first_arg + sum(rest_arg)) / (1 + len(rest_arg))
print(f"Output \n *** The average for the given numbers {average}")

# Call the function with two numbers
define_average(1, 2)

출력

*** The average for the given numbers 1.5


# Call the function with more numbers
define_average(1, 2, 3, 4)

출력

*** The average for the given numbers 2.5

원하는 수의 키워드 인수를 허용하려면 **로 시작하는 인수를 사용하십시오.

def player_stats(player_name, player_country, **player_titles):
print(f"Output \n*** Type of player_titles - {type(player_titles)}")
titles = ' AND '.join('{} : {}'.format(key, value) for key, value in player_titles.items())

print(f"*** Type of titles post conversion - {type(titles)}")
stats = 'The player - {name} from {country} has {titles}'.format(name = player_name,
country=player_country,
titles=titles)
return stats

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

출력

*** Type of player_titles - <class 'dict'>
*** Type of titles post conversion - <class 'str'>


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

여기 위의 예에서 player_titles는 전달된 키워드 인수를 보유하는 사전입니다.

위치 인수와 키워드 전용 인수를 모두 허용할 수 있는 함수를 원하면 *와 **를 함께 사용

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

이 함수를 사용하면 모든 위치 인수가 튜플 인수에 배치되고 모든 키워드 인수가 사전 kwargs에 배치됩니다.