728x90
반응형

parameter-passing 3

매개 변수에 붙는 ** 와 * 의 의미

질문 : ** (이중 별표 / 별표) 및 * (별표 / 별표)는 매개 변수에 대해 무엇을합니까? 다음 메서드 정의에서 * 및 ** 는 param2 무엇을합니까? def foo(param1, *param2): def bar(param1, **param2): 답변 *args 및 **kwargs 는 Python 문서의 함수 정의 에 대한 추가 섹션에 설명 된대로 함수에 임의의 수의 인수를 허용하는 일반적인 관용구입니다. *args 는 모든 함수 매개 변수 를 튜플로 제공합니다 . def foo(*args): for a in args: print(a) foo(1) # 1 foo(1,2,3) # 1 # 2 # 3 **kwargs 는 형식 매개 변수에 해당하는 것을 제외한 모든 키워드 인수를 사전으로 제공합니다. ..

Java는 "참조에 의한 전달" 일까? "값에 의한 전달" 일까?

질문 : Java는 "참조에 의한 전달"또는 "값에 의한 전달"입니까? 나는 항상 Java가 pass-by-reference를 사용한다고 생각했습니다. 그러나 저는 그렇지 않다고 주장하는 블로그 게시물 (예 : 이 블로그 )을 몇 개 보았습니다 (블로그 게시물에서는 Java가 값에 의한 전달을 사용한다고 말합니다). 나는 그들이 만드는 구별을 이해하지 못한다고 생각합니다. 설명은 무엇입니까? 답변 Java는 항상 값에 의한 전달 입니다. 불행히도 우리가 객체를 다룰 때 우리는 실제로 값으로 전달되는 참조라고 불리는 객체 핸들을 다룹니다. 이 용어와 의미는 많은 초보자를 쉽게 혼동합니다. 다음과 같이 진행됩니다. public static void main(String[] args) { Dog aDog = ..

함수 호출에서 별표 및 이중 별표 연산자가 의미하는 것

질문 : 함수 호출에서 별표 및 이중 별표 연산자는 무엇을 의미합니까? * zip(*x) 또는 f(**k) 와 같은 코드에서와 같이 Python에서 무엇을 의미합니까? 답변 단일 별표 * 는 시퀀스 / 컬렉션을 위치 인수로 압축 해제하므로 다음과 같이 할 수 있습니다. def sum(a, b): return a + b values = (1, 2) s = sum(*values) 이것은 실제로 다음과 같이 실행되도록 튜플을 압축 해제합니다. s = sum(1, 2) 이중 별표 ** 는 딕셔너리와 명명 된 인수 만 사용하여 동일합니다. values = { 'a': 1, 'b': 2 } s = sum(**values) 다음을 결합 할 수도 있습니다. def sum(a, b, c, d): return a + b ..

728x90
반응형