Development Tip

위치 인수 대 키워드 인수

yourdevel 2020. 11. 23. 20:18
반응형

위치 인수 대 키워드 인수


이것을 바탕으로

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

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

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

반응형