1
예를 들어

앞에 오는 기본 인수 함수를 호출, 내가 같은 것을 할 싶습니다 인사를 ('안녕')는, 인사는 여기서이 크게 도움이 될파이썬 : 위치 인수

def greet(person='stranger', greeting='hello') 

코드 작성시 테스트 용

+3

try 'greet (greeting = "hola")'. 자세한 내용은 https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments –

+0

[호출 방법 인 경우 Python의 인수를 건너 뛰는 방법] (https://stackoverflow.com/questions/)의 중복 가능성. 21694536/how-to-skip-argument-in-python-when-call-method) – Billy

답변

2

함수를 호출하면 변수 이름을 사용하여 어떤 변수가 어떤 값을 가정하는지 명확하게 할 수 있습니다. 동시에 함수 정의에 기본값이 제공되면 함수를 호출 할 때 변수를 건너 뛰어도 오류가 발생하지 않습니다. 나는이 위에서 말했듯이, 예를 들어 함수의 정의는 다음과 같이 인 경우, 작동하지 않을 것이라는 점을

def greet(person='stranger', greeting='hello') 
    print('{} {}'.format(greeting, person)) 
    return 

greet(greeting='hola') # same as greet(person='stranger', greeting='hola') 
# returns 'hola stranger' 

주 : 그래서, 한마디로 당신은 그냥이 할 수있는이 경우 이후

def greet(person, greeting) 
    print('{} {}'.format(greeting, person)) 
    return 

을, 파이썬은 person을 어떻게 처리해야할지 모른다고 불평 할 것입니다. 기본값은 ..

를 제공하지 그건 그렇고, 당신이 설명하는 문제는 대부분 다른 매개 변수를 알고 만 아는없이 기본값이 처음

0

에서 사용되는 바로 그 이유입니다 매개 변수가 두 번째 위치에있는 경우 inspect 모듈을 사용하여 기능 서명 &과 연관된 기본값을 가져올 수 있습니다.

그런 다음 기본 값리스트의 카피를 작성하고 원하는 인덱스의 하나 변경 :

import inspect 

def greet(person='stranger', greeting='hello'): 
    print(person,greeting) 


argspec = inspect.getargspec(greet) 

defaults = list(argspec.defaults) 
defaults[1] = "hola" # change second default parameter 

greet(**dict(zip(argspec.args,defaults))) 

모든 매개 변수는 기본값을 (그렇지 않으면이 목록에 실패한다는 교대)가 있다고 가정을 그 인쇄물 :

stranger hola