programing

위치 인수 vs 키워드 인수

padding 2023. 8. 6. 09:53
반응형

위치 인수 vs 키워드 인수

를 기준으로

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

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

def rectangleArea(width, height):
    return width * height

    
print rectangleArea(width=1, height=2)

질문입니다.둘 다width그리고.height위치 인수입니다.그렇다면 키워드 인수 구문으로도 부를 수 있는 이유는 무엇입니까?

당신이 인용한 텍스트는 완전히 다른 두 가지에 대해 혼동하는 것 같습니다.

  • 위치 및 키워드 인수는 함수 호출의 기능입니다(Python 참조 섹션 참조).
  • 기본값은 섹션에 따라 함수 정의의 기능입니다.

저는 그 코스웨어를 조립한 사람들이 파이썬에 완전히 익숙하지 않았을 것이라고 생각합니다 :-) 따라서 당신이 제공하는 링크는 그다지 좋은 품질의 링크가 아닙니다.


함수 호출에서 "키워드 인수" 기능을 사용하고 있습니다(인수의 위치에 의존하지 않고 인수의 이름을 지정합니다).그렇지 않으면 값은 순서만 기준으로 이름에 바인딩됩니다.따라서 이 예에서는 다음 두 호출이 동일합니다.

def process_a_and_b(a, b):
   blah_blah_blah()

process_a_and_b(1, 2)
process_a_and_b(b=2, a=1)

다른 예로 다음 정의 및 호출을 참조하십시오.

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.

위치 매개 변수, 키워드 매개 변수, 필수 매개 변수 및 선택적 매개 변수는 종종 혼동됩니다.위치 매개 변수는 필수 매개 변수와 동일하지 않으며 키워드 매개 변수는 선택적 매개 변수와 동일하지 않습니다.

위치(전용) 매개 변수는 호출에서 제공되는 위치 인수, 즉 위치별로 바인딩됩니다.Python 3.8에 도입되었습니다.

키워드(전용) 매개 변수는 호출에 제공된 키워드 인수, 즉 이름으로 바인딩됩니다.

위치 또는 키워드 매개 변수는 위치 또는 이름으로 호출에 제공된 위치 인수 또는 키워드 인수에 바인딩됩니다.

필수 매개 변수는 호출에 제공된 인수에 바인딩되어 있습니다.

선택적 매개 변수는 정의에 제공된 기본 인수에 바인딩됩니다.

매개 변수를 선언하기 위한 Python 구문은 다음과 같습니다.

def f(positional_parameter, /, positional_or_keyword_parameter, *, keyword_parameter):
    pass
  • Python 3.8 이후에 필요한 위치 매개 변수:

    def f(a, /):
        pass
    
    
    f()  # error, argument is required
    f(1)  # allowed, positional argument
    f(a=1)  # error, keyword argument
    
  • Python 3.8 이후 선택 사항인 위치 매개 변수:

    def f(a=2, /):
        pass
    
    
    f()  # allowed, argument is optional
    f(1)  # allowed, positional argument
    f(a=1)  # error, keyword argument
    
  • 필요한 키워드 매개 변수:

    def f(*, a):
        pass
    
    
    f()  # error, argument is required
    f(1)  # error, positional argument
    f(a=1)  # allowed, keyword argument
    
  • 선택 사항인 키워드 매개 변수:

    def f(*, a=1):
        pass
    
    
    f()  # allowed, argument is optional
    f(1)  # error, positional argument
    f(a=1)  # allowed, keyword argument
    
  • 필요한 위치 지정 또는 키워드 매개 변수:

    def f(a):
        pass
    
    
    f()  # error, argument is required
    f(1)  # allowed, positional argument
    f(a=1)  # allowed, keyword argument
    
    
    # In fact that function is the same as this one.
    
    def f(/, a, *):
        pass
    
  • 위치 지정 또는 키워드 매개 변수(선택 사항):

    def f(a=1):
        pass
    
    
    f()  # allowed, argument is optional
    f(1)  # allowed, positional argument
    f(a=1)  # allowed, keyword argument
    
    
    # In fact that function is the same as this one.
    
    def f(/, a=1, *):
        pass
    

결론.매개 변수는 필수 또는 선택 사항일 수 있지만 동시에 둘 다 사용할 는 없습니다.위치, 키워드 또는 둘 다 동시에 사용할 수도 있습니다.

키워드 인수는 기본값을 가진 위치 인수일 뿐입니다.기본값이 없는 모든 인수를 지정해야 합니다.즉, 키워드 인수는 특별히 제공되지 않은 경우 기본값으로 설정되기 때문에 "선택 사항"일 뿐입니다.

첫째, 매개 변수는 함수/메소드 정의에서 인수를 지정하는 명명된 엔터티입니다.인수는 함수에 전달된 값입니다.

예를들면,

def rectangle_area(height, width):
    pass

rectangle_area(argument_1, argument_2)

height, width이며, 는 함수 매개 변수입니다.argument_1, argument_2함수에 전달되는 인수입니다.위치 인수를 말할 때는 인수를 말하는 것이며 함수 정의와는 아무런 관련이 없습니다.width그리고.height(Python에서는 기본적으로) 위치 매개 변수 또는 키워드 매개 변수(위치 매개 변수 또는 키워드 매개 변수라고 함)입니다.따라서 위치나 키워드로 인수를 전달할 수 있습니다.

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

함의경우에 rectangle_area우리는 똑같이 그렇게 부를 수 있습니다.

rectangle_area(1, 2) # positional arguments
rectangle_area(width=2, height=1) # keyword arguments
  • 첫 번째 호출에서는 값을 위치에 전달합니다. 1은 높이로 전달되고 2는 너비로 전달됩니다.즉, 파이썬은 당신이 말할 때 그것을 추론합니다.1, 2우리는 그들이 통과한 위치를 기준으로 높이가 1이고 너비가 2라는 것을 의미합니다(즉, 함수 정의에서 첫 번째 매개 변수는height 두 는 그고두번는째리입니다.width).
  • 두 번째 호출에서는 키워드로 값을 전달합니다.우리는 Python에게 어떤 매개 변수에 인수를 전달할 것인지 암시하고 있습니다.두 번째 예에서는 인수의 순서를 뒤집지만 Python에게 높이는 여전히 1이고 너비는 여전히 2라고 말합니다.두 호출 모두 결과가 동일합니다.

위치만 및 키워드만

많은 사람들이 알지 못하는 것은 위치 전용 매개 변수를 지정할 수 있다는 것입니다./매개 변수 목록에 있습니다(여기서부터 시작).

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

마찬가지로 다음을 사용하여 키워드 전용 매개 변수를 사용할 수도 있습니다.*성격.

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

마지막으로, 우리는 또한 var-position 및 var-keyword(각각 *.k.a args 및 *.kwargs)를 가지고 있습니다.즉, 임의의 위치 인수 시퀀스 또는 키워드 인수를 함수에 전달할 수 있습니다.

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

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 

먼저 '오십시오'를 통과하고, 다음에 '글쎄요'를 통과하면 결과가 좋아질 것이라고 가정합니다.또한 함수 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.

저는 너비와 높이가 모두 위치적인 주장이라고 가정합니다.그렇다면 키워드 인수 구문으로도 부를 수 있는 이유는 무엇입니까?

위치 전용 인수를 사용할 수 없도록 하려면 다음을 수행합니다.

def rectangleArea(width, height, /):
    return width * height

print rectangleArea(width=1, height=2)

오류 메시지는 다음과 같습니다.

유형 오류: 직사각형 영역()에서 일부 위치 전용 인수가 키워드 인수 'width, height'로 전달되었습니다.

@Nazime Lakehal의 훌륭한 답변을 완료하기 위한 추가 정보가 있습니다.

위치 매개변수(선택 사항)는 다음과 같이 필요한 위치 매개변수 또는 위치-또는 키워드 매개변수 뒤에 올 수 없습니다.

# SyntaxError.

def f(a=1, b, /):
    pass


# SyntaxError.

def f(a=1, /, b):
    pass

위치 또는 키워드 매개 변수(선택 사항)는 필수 위치 또는 키워드 매개 변수 다음에 올 수 없습니다.

# SyntaxError.

def f(a=1, b):
    pass

선택적인 위치 매개변수를 바인딩하려면 선택적인 이전의 모든 위치 매개변수를 바인딩해야 하므로 모든 매개변수가 효과적으로 필요합니다.이것이 위치 매개변수와 필수 매개변수가 혼동된 원인일 수 있습니다.

def f(a=1, b=2, /):
    pass


f(1, 0)

선택 사항인 키워드 매개 변수 또는 위치 또는 키워드 매개 변수를 바인딩하는 경우 다른 모든 키워드 매개 변수와 위치 또는 키워드 매개 변수를 바인딩할 필요가 없습니다.이것이 키워드 매개변수와 선택적 매개변수가 혼동된 원인일 수 있습니다.

def f(c=3, *, a=1, b=2):
    pass


f(b=0)


def f(a=1, b=2, *, c=3):
    pass


f(b=0)

언급URL : https://stackoverflow.com/questions/9450656/positional-argument-vs-keyword-argument

반응형