반응형
다음 예제를 이해하지 못합니다. 이러한 기능이 있다고 가정 해 보겠습니다.
# python likes
def save(filename, data, **kwargs):
fo = openX(filename, "w", **kwargs) # <- #1
fo.write(data)
fo.close()
# python doesnt like
def save2(filename, data, **kwargs):
fo = openX(filename, "w", kwargs) # <- #2
fo.write(data)
fo.close()
def openX(filename, mode, **kwargs):
#doing something fancy and returning a file object
# 1이 올바른 솔루션이고 # 2가 잘못된 솔루션 인 이유는 무엇입니까? ** kwargs
는 기본적으로 dict이므로 openX에 인수를 전달하려면 올바른 방법은 **
없이 dict를 제공하는 것입니다. 그러나 파이썬은 분명히 두 번째 것을 좋아하지 않으며 2 개의 인수 대신 3 개의 인수를 주었다고 말합니다.
그래서 그 이유는 무엇입니까?
해결 방법
두 번째 예에서는 파일 이름, 모드 및 사전 ( kwargs
)의 3 가지 인수를 제공합니다. 그러나 파이썬은 2 개의 형식 인수와 키워드 인수를 기대합니다.
사전 앞에 '**'를 붙이면 키워드 인수에 사전 kwargs
의 압축을 풉니 다.
사전 (유형 dict
)은 키-값 쌍을 포함하는 단일 변수입니다.
'키워드 인수'는 키-값 메소드 매개 변수입니다.
모든 사전은 함수 호출 중에 **
접두사를 붙여 키워드 인수로 압축을 풀 수 있습니다.
참조 페이지 https://stackoverflow.com/questions/9867562
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python은 파일에서 문자열을 읽고 값으로 분할합니다. (0) | 2020.09.17 |
---|---|
파이썬 Python UDP 클라이언트 / 서버 프로그램, 문제 (0) | 2020.09.17 |
파이썬 기준과 일치하는 첫 번째 시퀀스 항목 찾기 (0) | 2020.09.17 |
파이썬 목록에서 요소를 제거하려고 할 때 ValueError를 어떻게 무시할 수 있습니까? (0) | 2020.09.16 |
파이썬 Python에서 모듈 가져 오기-모범 사례 (0) | 2020.09.16 |
댓글