문제
진술이 헷갈리네요 " print(kw,":",키워드[kw])" 다음 프로그램에서 Python으로.
def cheeseshop(kind,*arguments,**keywords):
print("--Do you have any",kind,"?")
print("--I'm sorry, we're all out of",kind)
for arg in arguments:
print(arg)
print("-"*40)
print(keywords)
keys=sorted(keywords)
print(keys)
for kw in keys:
print(kw,":",keywords[kw])
cheeseshop("Limburger", "It's very runny, sir.",
"It's really very, VERY runny, sir.",
shopkeeper="Michael Palin",
client="John Cleese",
sketch="Cheese Shop Sketch")
결과는 아래와 같습니다.
--Do you have any Limburger ?
--I'm sorry, we're all out of Limburger
It's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
{'client': 'John Cleese', 'sketch': 'Cheese Shop Sketch', 'shopkeeper': 'Michael Palin'}
['client', 'shopkeeper', 'sketch']
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch
내 생각에는 "kw"는 '고객', '스케치', '가게 주인', 숫자가 아닌데 어떻게 "kw"가 명령문의 키워드 색인이 될 수 있습니까? " print(kw,":",키워드[kw])"?
내 아이디어를 확인하기 위해 다른 프로그램도 시도해 보았습니다.
letters=['a','b']
for kw in letters:
print(letters[kw])
그리고 합리적인 답변이 나타납니다.
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: list indices must be integers, not str
게다가 프로그램의 첫 번째 부분에서 발생한 문제로 인해 혼란스러워졌습니다. 제 생각에는 동일한 오류가 나에게 나타나야 할 것 같습니다.
해결책
함수 인수 앞에 **
함수를 호출할 때 명명된 매개변수를 취하는 "키워드 인수"라고 합니다. 예: client="John Cleese"
귀하의 예에서.이 경우 "client"는 이름이고 "John Cleese"는 값입니다.이 방법으로 전달된 인수는 dict
, 이는 목록이 아닌 키-값 저장소로, 다음 형식에 익숙할 수 있습니다.
x = {
"foo": "bar"
}
print x["foo"] # prints "bar"
다른 팁
키워드 유틸리티를 사용하면 키 이름이있는 배열의 일종입니다.
Python 문서에서 lib 설명을 볼 수 있습니다 여기 / P>
실제로 ** 키워드의 특별한 속성이 있습니다.
이를 사용하는 튜토리얼입니다 (및 그것을 이해하는 것도)과
제휴하지 않습니다 StackOverflow