필자는 함수 매개 변수에 값을 할당 할 때 파이썬이 따르는 알고리즘을 이해하려고 노력해 왔으며 매우 혼란 스러웠습니다. 나는 실제로 어떤 값이 어떤 매개 변수에 할당되는지를 실제로 알 수 있도록 알고리즘을 더 잘 이해하고 싶습니다. 위치 인수, 키워드 인수, * args, * kwargs 및 키워드 전용 인수가 있습니다. 어떻게이 모든 것이 할당되고 어떤 순서로 이루어 집니까?함수 매개 변수에 값을 할당 할 때 Python이 따르는 프로세스는 무엇입니까?
은 하나의 특정 예를 들어 다음과 같은 코드를 가지고 : 그러나
func(c=3, *(1, 2)) # prints 1 2 3
을 내가 그것을 실행하는 경우 : 나는 다음과 같은 형식으로이 함수를 호출하면
def func(a, b, c):
print(a, b, c)
이 정상적으로 실행하는 것입니다 이 사용이 제공하는 SyntaxError
:
func(c=3, 1, 2)
일의 두 가지 형태 얼마나 다른 전화? 첫 번째 호출에서 튜플은 개별 인수로 압축이 풀립니다. 그것은 두 번째 형식으로 변환되는 것과 같지 않습니까? 이것이 일어난다면 두 번째 형식도 제대로 작동해야하지만 그렇지 않습니다.
그래서 실제로 무슨 일이 벌어지고 있습니까?
하지만 * 왜 * 유효한 구문이 아닌가요? 필자는 예제에서 두 번째 호출 유형처럼 키워드 인수를 할당 한 다음 나머지 값을 빈 매개 변수에 할당 할 수 있습니다. –
이것이 Python 언어 구문이 작동하는 방식입니다. 인수를 푸는 것은 위치 인수를 전달하는 것과 다릅니다. – MSeifert
@AsadMoosvi 답변을 업데이트했습니다. 나는 원래의 대답이 그 요점을 놓쳤다 고 생각한다. 코멘트 주셔서 감사합니다 :) – MSeifert