[python] 위치 인수 대 키워드 인수

이것을 바탕으로

위치 인수는 등호 (=)와 기본값이 뒤 따르지 않는 이름입니다.

키워드 인수 뒤에는 등호와 기본값을 제공하는 표현식이옵니다.

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.

=정의에 있는지 호출에 있는지에 따라 변경 의 의미가 달라집니다.

정의에서 인수를 선택적으로 표시하고 기본값을 설정합니다.

호출에서 원하는 순서대로 어떤 인수가 어떤 값이어야하는지 지정할 수 있습니다.


답변

파이썬 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


답변

키워드 인수는 기본값이있는 위치 인수입니다. 기본값이없는 모든 인수를 지정해야합니다. 즉, 키워드 인수는 특별히 제공되지 않으면 기본값으로 설정되므로 “선택 사항”일뿐입니다.


답변

위치 인수는 순서대로 값을 사용하거나 각각의 이름을 지정하여 호출 할 수 있습니다. 예를 들어, 다음 세 가지 모두 동일한 방식으로 작동합니다.

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 문자열이 오류가됩니다.


답변

함수의 키워드 인수를 이해합니다.

키워드 인수는 이름으로 매개 변수를 식별하는 인수입니다.

#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.


답변

여기에서 매개 변수와 인수를 정의하면 도움이 될 수 있습니다.

  1. 매개 변수 : 명명 된 개체 함수 / 메소드 정의를 지정하는 인수.
  2. 인수 : 함수에 전달 된 값.

예를 들면

def my_function(parameter_1, parameter_2):
    pass

my_function(argument_1, argument_2)

당신이 위치 인수를 말할 때 지금, 당신이 얘기 인수 때문에 함수 정의와는 아무 상관이있다. width그리고 height귀하의 예제에서 위치 매개 변수입니다 또는 키워드 매개 변수 (소위 키워드 위치 또는 파라미터).

함수에 값을 호출 / 전달하는 방법은 위치 인수 인지 키워드 인수 인지를 결정합니다 .

rectangleArea(1, 2) # positional arguments
rectangleArea(width=1, height=2) # keyword arguments

많은 사람들이 알지 못하는 점은 /매개 변수 목록에서 를 사용하여 위치 전용 매개 변수를 지정할 수 있다는 것입니다 ( 여기 에서 예제 참조 ).

def func(positional_only1, positional_only2, /, positional_or_keyword): ...

마찬가지로 *문자 를 사용하여 키워드 전용 매개 변수를 가질 수도 있습니다 .

def func(positional_or_keyword, *, keyword_only1, keyword_only2): ...

마지막으로 var-positional 및 var-keyword (각각 * args 및 ** kwargs라고도 함)도 있습니다. 즉, 함수에 전달되는 위치 인수 또는 키워드 인수의 임의 순서를 가질 수 있습니다.