**kwargs에 키가 있는지 확인하는 방법?
Python 3.2.3.여기에 몇 가지 아이디어가 나열되어 있습니다. 일반적인 var에서 작동하지만 **kwargs는 다른 규칙에 따라 경기하는 것 같습니다.그렇다면 왜 이것이 작동하지 않고 **kwargs의 키가 있는지 확인하려면 어떻게 해야 합니까?
if kwargs['errormessage']:
print("It exists")
저도 이것이 효과가 있어야 한다고 생각하지만, 그렇지 않습니다.
if errormessage in kwargs:
print("yeah it's here")
제가 추측하기에 크와그가 견딜만 한 것 같아요?특정 키가 있는지 확인하기 위해 반복해야 하나요?
너는 원한다
if 'errormessage' in kwargs:
print("found it")
의 가치를 얻기 위해errormessage
if 'errormessage' in kwargs:
print("errormessage equals " + kwargs.get("errormessage"))
이런 식으로.kwargs다른 것일 뿐입니다.dict첫 번째 예는if kwargs['errormessage']는 "키 "오류 메시지"와 연관된 값을 kwargs로 가져온 다음 bool 값을 확인합니다."를 의미합니다.그래서 만약 그런 열쇠가 없다면, 당신은 그것을 얻을 것입니다.KeyError.
두 번째 예는if errormessage in kwargs:"만약"을 의미합니다.kwargs에서 명명한 요소를 포함합니다.errormessage그리고 "가 아니면"errormessage변수의 이름입니다, 당신은 다음을 얻을 것입니다.NameError.
나는 사전에도 방법이 있다는 것을 언급해야 합니다..get()기본 매개 변수를 수락합니다(기본값으로 변경 가능).None), 그래서kwargs.get("errormessage")키가 존재할 경우 값을 반환합니다.None그렇지 않은 경우(계속)kwargs.get("errormessage", 17)여러분이 생각할 수 있는 일을 합니다.기존 키와 보유 키의 차이에 관심이 없을 때None값 또는 키가 존재하지 않는 경우 유용할 수 있습니다.
DSM과 Tadek의 답변은 질문에 직접 답변합니다.
내 대본에서 나는 종종 편리한 것을 사용합니다.dict.pop()선택적 인수 및 추가 인수를 처리합니다.여기 간단한 예가 있습니다.print()포장지:
def my_print(*args, **kwargs):
prefix = kwargs.pop('prefix', '')
print(prefix, *args, **kwargs)
그러면:
>>> my_print('eggs')
eggs
>>> my_print('eggs', prefix='spam')
spam eggs
보다시피, 만약에prefix에 포함되지 않음kwargs그 다음 기본값''(빈 문자열)이 로컬에 저장되고 있습니다.prefix변수.값이 지정된 경우 값이 사용됩니다.
이것은 일반적으로 모든 종류의 기능을 위한 포장지를 작성하기 위한 작고 읽을 수 있는 레시피입니다.항상 당신이 이해하지 못하는 통과된 주장들, 그리고 그것들이 존재하는지조차 알지 못합니다.당신이 항상 통과한다면,*args그리고.**kwargs당신은 당신의 코드를 더 느리게 만들고, 약간 더 많은 타이핑을 요구하지만, 만약 호출된 함수의 인터페이스라면 (이 경우)print)가 변경되면 코드를 변경할 필요가 없습니다.이 접근 방식은 모든 인터페이스 변경을 지원하는 동시에 개발 시간을 단축합니다.
바로 다음과 같습니다.
if 'errormessage' in kwargs:
print("yeah it's here")
키가 사전에 있는지 확인해야 합니다.그 구문은 다음과 같습니다.some_key in some_dict서)some_key해시 가능한 것이며 반드시 문자열은 아닙니다.)
링크한 아이디어(이 아이디어)에는 반환된 사전에 특정 키가 있는지 확인하기 위한 예제가 포함되어 있습니다.locals()그리고.globals()에서특키존의재확를있인유예다사니합제때가문기에고에서 특정 키의 하는 것이기 합니다.kwargs사전(키워드 인수가 들어 있는 사전)을 선택합니다.
한 가지 방법은 스스로 추가하는 것입니다! 어떻게?병합을 통해kwargs많은 채무 불이행으로.예를 들어 키를 미리 알지 못하는 경우와 같이 모든 경우에 적합하지 않습니다.그러나 이러한 경우에는 다음과 같은 간단한 예를 참조하십시오.
import sys
def myfunc(**kwargs):
args = {'country':'England','town':'London',
'currency':'Pound', 'language':'English'}
diff = set(kwargs.keys()) - set(args.keys())
if diff:
print("Invalid args:",tuple(diff),file=sys.stderr)
return
args.update(kwargs)
print(args)
.args여기에는 우리가 기대하는 모든 열쇠가 포함되어 있습니다.우리는 먼저 왜건에 예기치 않은 키가 있는지 확인합니다.그런 다음 업데이트합니다.args와 함께kwargs사용자가 설정한 새 값을 덮어씁니다.키가 있는지 테스트할 필요가 없습니다. 이제 사용합니다.args 더 이 없는 리의주장사로그더다없필습니이성요이의상우리고서.kwargs.
여러분은 스스로 이러한 것들을 쉽게 발견할 수 있습니다.
def hello(*args, **kwargs):
print kwargs
print type(kwargs)
print dir(kwargs)
hello(what="world")
if kwarg.__len__() != 0:
print(kwarg)
언급URL : https://stackoverflow.com/questions/12399803/how-to-check-if-a-key-in-kwargs-exists
'programing' 카테고리의 다른 글
| 돌연변이 내부의 돌연변이 배열 내보내기.js (0) | 2023.06.12 |
|---|---|
| Excel - 다른 워크시트에서 동일한 값을 가진 셀을 찾은 후 왼쪽에 값을 입력합니다. (0) | 2023.06.12 |
| *.d.ts 파일의 용도는 무엇입니까? (0) | 2023.06.12 |
| 질문이 있는 경우 Oracle sql이 true를 반환합니다. (0) | 2023.06.12 |
| R에서 루프 작동 속도 향상 (0) | 2023.06.12 |