[PYTHON] 일반 인수 대 키워드 인수
PYTHON일반 인수 대 키워드 인수
"키워드 인수"는 정규 인수와 어떻게 다른가요? 위치 구문을 사용하는 대신 모든 인수를 name = value로 전달할 수 있습니까?
해결법
-
==============================
1.둘 다 관련된 개념, 둘 다 "키워드 인수"가 있습니다.
둘 다 관련된 개념, 둘 다 "키워드 인수"가 있습니다.
호출자 측에서는 다른 주석가들이 언급 한 바와 같이 함수 인자를 이름으로 지정할 수 있습니다. 이름 (위치 인수)없이 모든 인수 뒤에 언급해야하며 언급되지 않은 매개 변수에 대한 기본값이 있어야합니다.
다른 개념은 함수 정의 측면입니다. 매개 변수를 이름으로 사용하는 함수를 정의 할 수 있으며 그 이름을 지정하지 않아도됩니다. 이것들은 순수한 키워드 인수이며, 위치 적으로 전달 될 수는 없습니다. 구문은 다음과 같습니다.
def my_function(arg1, arg2, **kwargs)
이 함수에 전달한 키워드 인수는 kwargs라는 사전에 저장됩니다. 다음과 같이이 사전의 키를 런타임에 검사 할 수 있습니다.
def my_function(**kwargs): print str(kwargs) my_function(a=12, b="abc") {'a': 12, 'b': 'abc'}
-
==============================
2.구별이 중요한 마지막 언어 기능이 하나 있습니다. 다음 기능을 고려하십시오.
구별이 중요한 마지막 언어 기능이 하나 있습니다. 다음 기능을 고려하십시오.
def foo(*positional, **keywords): print "Positional:", positional print "Keywords:", keywords
* 위치 인수는 foo ()에 전달 된 모든 위치 인수를 저장하며 제공 할 수있는 수에 제한이 없습니다.
>>> foo('one', 'two', 'three') Positional: ('one', 'two', 'three') Keywords: {}
** keywords 인수는 모든 키워드 인수를 저장합니다.
>>> foo(a='one', b='two', c='three') Positional: () Keywords: {'a': 'one', 'c': 'three', 'b': 'two'}
물론 두 가지를 동시에 사용할 수 있습니다.
>>> foo('one','two',c='three',d='four') Positional: ('one', 'two') Keywords: {'c': 'three', 'd': 'four'}
이러한 기능은 거의 사용되지 않지만 때로는 매우 유용하며 어떤 인수가 위치 또는 키워드인지 파악하는 것이 중요합니다.
-
==============================
3.키워드 인수를 사용하는 것은 순서가 중요하지 않다는 것을 제외하고는 일반적인 인수와 동일한 것입니다. 예를 들어 아래 두 함수 호출은 동일합니다.
키워드 인수를 사용하는 것은 순서가 중요하지 않다는 것을 제외하고는 일반적인 인수와 동일한 것입니다. 예를 들어 아래 두 함수 호출은 동일합니다.
def foo(bar, baz): pass foo(1, 2) foo(baz=2, bar=1)
-
==============================
4.그들 앞에는 키워드가 없습니다. 순서가 중요합니다!
그들 앞에는 키워드가 없습니다. 순서가 중요합니다!
func(1,2,3, "foo")
그들 앞에는 키워드가 있습니다. 그들은 어떤 순서로도 될 수 있습니다!
func(foo="bar", baz=5, hello=123) func(baz=5, foo="bar", hello=123)
기본 인수를 사용하고 키워드 삽입을 방치하면 순서가 중요하다는 것도 알아야합니다!
def func(foo=1, baz=2, hello=3): ... func("bar", 5, 123)
-
==============================
5.함수 매개 변수에 인수 값을 할당하는 두 가지 방법이 있으며 둘 다 사용됩니다.
함수 매개 변수에 인수 값을 할당하는 두 가지 방법이 있으며 둘 다 사용됩니다.
위치 인수를 사용할 수 있습니다.
위치 인수를 사용하지 않으면, 쓴 모든 것은 키워드 인수로 판명됩니다.
함수를 호출 할 때 위치 또는 키워드 또는 혼합을 사용하기로 결정합니다. 원하는 경우 모든 키워드를 수행하도록 선택할 수 있습니다. 우리 중 일부는이 선택을하지 않고 위치 적 논증을 사용합니다.
-
==============================
6.저는 아무도 공식화 된 매개 변수를 만족시키는 키잉 된 인수 매개 변수의 사전을 전달할 수 있다고 지적한 적이없는 것 같습니다.
저는 아무도 공식화 된 매개 변수를 만족시키는 키잉 된 인수 매개 변수의 사전을 전달할 수 있다고 지적한 적이없는 것 같습니다.
>>> def func(a='a', b='b', c='c', **kwargs): ... print 'a:%s, b:%s, c:%s' % (a, b, c) ... >>> func() a:a, b:b, c:c >>> func(**{'a' : 'z', 'b':'q', 'c':'v'}) a:z, b:q, c:v >>>
-
==============================
7.Python 3을 사용하면 필수 및 필수 키워드 매개 변수를 둘 다 가질 수 있습니다.
Python 3을 사용하면 필수 및 필수 키워드 매개 변수를 둘 다 가질 수 있습니다.
선택 사항 : ( 'b'에 대해 정의 된 기본값)
def func1(a, *, b=42): ... func1(value_for_a) # b is optional and will default to 42
필수 ( 'b'에 대해 정의 된 기본값 없음) :
def func2(a, *, b): ... func2(value_for_a, b=21) # b is set to 21 by the function call func2(value_for_a) # ERROR: missing 1 required keyword-only argument: 'b'`
이렇게하면 같은 유형의 여러 비슷한 인수가있는 경우에 유용 할 수 있습니다.이 경우 이름이 지정된 인수를 사용하는 것이 더 좋으며 인수가 함께 있으면 사용자 정의 클래스를 만들 수도 있습니다.
-
==============================
8.아무도 당신이 * args 및 ** kwargs (이 사이트에서)를 사용하여 이런 비열한 일을하기 위해 위치 및 키워드 인수를 혼합 할 수 있다는 사실을 언급 한 사람은 놀랍습니다.
아무도 당신이 * args 및 ** kwargs (이 사이트에서)를 사용하여 이런 비열한 일을하기 위해 위치 및 키워드 인수를 혼합 할 수 있다는 사실을 언급 한 사람은 놀랍습니다.
def test_var_kwargs(farg, **kwargs): print "formal arg:", farg for key in kwargs: print "another keyword arg: %s: %s" % (key, kwargs[key])
이것은 선행을 정의하고 싶지 않은 키를 가지고있는 임의의 키워드 인수를 사용할 수있게합니다.
-
==============================
9.타입 어노테이션을 사용하여 기본 kwargs를 가진 예제를 찾고있었습니다.
타입 어노테이션을 사용하여 기본 kwargs를 가진 예제를 찾고있었습니다.
def test_var_kwarg(a: str, b: str='B', c: str='', **kwargs) -> str: return ' '.join([a, b, c, str(kwargs)])
예:
>>> print(test_var_kwarg('A', c='okay')) A B okay {} >>> d = {'f': 'F', 'g': 'G'} >>> print(test_var_kwarg('a', c='c', b='b', **d)) a b c {'f': 'F', 'g': 'G'} >>> print(test_var_kwarg('a', 'b', 'c')) a b c {}
from https://stackoverflow.com/questions/1419046/normal-arguments-vs-keyword-arguments by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] Pandas - Python을 사용하여 Excel에서 특정 열을 읽는 방법 (0) | 2018.11.17 |
---|---|
[PYTHON] 사용중인 NumPy의 버전을 확인하려면 어떻게합니까? (0) | 2018.11.17 |
[PYTHON] urllib2 전체 HTTP 응답을 검색하지 못함 (0) | 2018.11.17 |
[PYTHON] 파이썬 예외 / 오류 계층 구조 인쇄 (0) | 2018.11.17 |
[PYTHON] numpy에서 인접하지 않은 범위를 여러 개 색인으로 만듭니다. (0) | 2018.11.17 |