위치 인수 대 키워드 인수
이것을 바탕으로
위치 인수는 등호 (=)와 기본값이 뒤 따르지 않는 이름입니다.
키워드 인수 뒤에는 등호와 기본값을 제공하는 표현식이옵니다.
def rectangleArea(width, height):
return width * height
print rectangleArea(width=1, height=2)
질문 > width
및 둘 다 height
위치 인수 라고 가정합니다 . 그렇다면 키워드 실제 인수 구문으로 호출 할 수있는 이유는 무엇입니까?
인용 한 텍스트 는 함수 의 정의 를위한 것이며 함수 호출과 관련이 없습니다. 에서 호출 하는 기능, 당신은 "이름 인수"기능을 사용하고 있습니다. 귀하가 제공하는 링크는 품질이 좋지 않으며 작성자는 서로 다른 두 가지를 혼동하는 것 같습니다.
Python 참조는 함수 호출에 대해서만 위치 및 키워드 인수를 참조합니다 ( 섹션5.3.4 Calls
참조 ).
섹션7.6 Function definitions
에서 함수의 정의에 대해 이야기 할 때는 "기본 매개 변수 값"이라는 완전히 다른 용어입니다.
코스웨어를 만든 사람들이 파이썬에 완전히 익숙 하지 않은 것 같습니다. :-)
예를 들어, 다음 정의 및 호출을 참조하십시오.
def fn (a, b, c = 1): # a/b required, c optional.
return a * b + c
print fn (1, 2) # returns 3, positional and default.
print fn (1, 2, 3) # returns 5, positional.
print fn (c = 5, b = 2, a = 2) # returns 9, named.
print fn (b = 2, a = 2) # returns 5, named and default.
print fn (5, c = 2, b = 1) # returns 7, positional and named.
print fn (8, b = 0) # returns 1, positional, named and default.
=
정의에 있는지 호출에 있는지에 따라 변경 의 의미가 달라집니다.
정의에서 인수를 선택적으로 표시하고 기본값을 설정합니다.
호출에서 원하는 순서대로 어떤 인수가 어떤 값이어야하는지 지정할 수 있습니다.
키워드 인수는 기본값이있는 위치 인수입니다. 기본값이없는 모든 인수를 지정해야합니다. 즉, 키워드 인수는 특별히 제공되지 않으면 기본값으로 설정되기 때문에 "선택 사항"일뿐입니다.
위치 인수는 순서대로 값을 사용하거나 각각의 이름을 지정하여 호출 할 수 있습니다. 예를 들어, 다음 세 가지 모두 동일한 방식으로 작동합니다.
def rectangleArea(width, height):
return width * height
print(rectangleArea(1, 2))
print(rectangleArea(width=1, height=2))
print(rectangleArea(height=2, width=1))
위치 인수 : 올바른 위치 순서로 함수에 전달 된 인수입니다. 아래 프로그램은 함수의 위치 인수를 이해합니다.
#positional arguments example
def combine(str1, str2):
#To join str1 and str2 with str3
str3 = str1 + str2
print(str3)
#call combine() and pass 2 strings
combine("Well", "come") #positional arguments
우리가 먼저 'come'을, 'well'두 번째를 통과했다고 가정하면 결과는 comewell이됩니다. 또한 함수를 호출하면 3 문자열이 오류가됩니다.
파이썬 3.8은 위치 인자 만 도입했기 때문에이 게시물은 업데이트가 필요합니다.
위치 인수, 키워드 인수, 필수 인수 및 선택적 인수는 종종 혼동됩니다. 위치 인수 는 필수 인수와 동일하지 않습니다 . 및 키워드 인수 는 선택적 인수와 동일하지 않습니다 .
위치 인수 는 함수 정의에서 해당 위치로 호출 할 수있는 인수입니다.
키워드 인수 는 이름으로 호출 할 수있는 인수입니다.
필수 인수 는 함수에 전달해야하는 인수입니다.
선택적 인수 는 함수에 전달할 수없는 인수입니다. 파이썬에서 선택적 인수는 기본값 을 가진 인수입니다 .
선택적 위치 인수 (python 3.8)
def f(a=2, /):
pass
f() # Allowed, argument is optional
f(1) # Allowed, it's a positional argument
f(a=1) # Error, positional only argument
필요한 위치 인수 (python 3.8)
def f(a, /):
pass
f() # Error, argument required
f(1) # Allowed, it's a positional argument
f(a=1) # Error, positional only argument
선택적 키워드 인수
def f(*, a=1):
pass
f() # Allowed
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
필수 키워드 인수
def f(*, a)
pass
f() # Error, argument required
f(1) # Error, keyword only arguments
f(a=1) # Allowed, it's a keyword argument
선택적 위치 및 키워드 인수
def f(a=1)
pass
f() # Allowed, argument is optional
f(1) # Allowed, it's a positional argument
f(a=1) # Allowed, it's a keyword argument
# In fact this function is the same as
def f(*, a=1, /):
pass
필수 위치 및 키워드 인수
def f(a):
pass
f() # Error, argument required
f(1) # Allowed, it's a positional argument
f(a=1) # Allowed, it's a keyword argument
# In fact this function is the same as
def f(*, a, /):
pass
결론적으로, 인수는 동시에 둘 다가 아니라 선택 사항이거나 필수 사항 일 수 있습니다 . 위치, 키워드 또는 동시에 둘 다일 수도 있습니다 .
Python 3.8은 위치 전용 매개 변수를 도입했습니다 .
def f(positional_argument, /, positional_or_keyword_argument, *, keyword_argument):
pass
함수의 키워드 인수를 이해합니다.
키워드 인수는 이름으로 매개 변수를 식별하는 인수입니다.
#keyword arguments example:
def employee(name, Id):
print("Employee Name: ", name)
print("Employee Id : ", Id)
#call employee() and pass 2 arguments
employee(name = "inban", Id = "pay001")
employee(Id = "pay002", name = "karthik") #we can change the order args.
참고 URL : https://stackoverflow.com/questions/9450656/positional-argument-vs-keyword-argument
'Development Tip' 카테고리의 다른 글
matplotlib를 사용하여 두 그림을 표시하는 방법은 무엇입니까? (0) | 2020.11.23 |
---|---|
현재 인터페이스 방향을 얻는 다른 방법? (0) | 2020.11.23 |
사전 구현에 가장 적합한 데이터 구조? (0) | 2020.11.23 |
Chrome 개발자 패널에 요소 선택기에 대한 키보드 단축키가 있습니까? (0) | 2020.11.23 |
WPF 프로그래밍 방법론 (0) | 2020.11.23 |