스택큐힙리스트

파이썬에서 별표 *는 무엇을 의미합니까? [중복] 본문

카테고리 없음

파이썬에서 별표 *는 무엇을 의미합니까? [중복]

스택큐힙리스트 2023. 4. 18. 13:07
반응형

이 질문은 이미 답변이 있습니다 :

What does ** (double star/asterisk) and * (star/asterisk) do for parameters?

1. Hello - 안녕하세요 2. Goodbye - 안녕히 가세요 3. Yes - 네 4. No - 아니요 5. Thank you - 감사합니다 6. Please - 부탁합니다 7. Sorry - 미안해요 8. Excuse me - 저기요 9. How are you? - 어떻게 지내세요? 10. I'm fine, thank you - 잘 지내고 있어요, 감사합니다 11. What is your name? - 이름이 뭐에요? 12. My name is ___ - 제 이름은 ___ 입니다 13. Where are you from? - 어디서 왔어요? 14. I'm from ___ - 저는 ___에서 왔어요 15. What time is it? - 지금 몇 시에요? 16. Can you help me? - 도와주세요 17. I don't understand - 이해하지 못해요 18. How much does it cost? - 얼마에요? 19. Where is the bathroom? - 화장실이 어디에 있나요? 20. I love you - 사랑해요 21. Happy birthday - 생일 축하해요 22. Merry Christmas - 메리 크리스마스 23. Happy New Year - 새해 복 많이 받으세요 24. Congratulations - 축하해요 25. Good luck - 행운을 빕니다 26. See you later - 나중에 봐요

9년전에 닫혔습니다.

파이썬에서도 C 언어와 마찬가지로 * 기호는 특별한 의미를 가지나요? 저는 파이썬 쿡북에서 다음과 같은 함수를 본 적이 있습니다:

def get(self, *a, **kw)

제발 그것을 설명해주시거나 답을 찾을 수 있는 곳을 가리켜주세요 (*은 와일드 카드 문자로 Google에서는 만족스러운 답을 찾을 수 없습니다).

답변 1

언어 참조에서 Function Definitions 를 참조하세요.

만약 *identifier 형식이 있다면, 빈 튜플을 기본값으로 사용하여 모든 추가 위치적 매개변수를 받는 튜플로 초기화됩니다. 만약 **identifier 형식이 있다면, 빈 새 사전을 기본값으로 사용하여 모든 추가 키워드 인수를 받는 새 사전으로 초기화됩니다.

또한, Function Calls를 참조하십시오.

가정하에 위치 인자와 키워드 인자에 대해 알고 있다면, 다음은 몇 가지 예제입니다:

Hello, how are you today?

번역 1:

안녕하세요, 오늘 어떻게 지내고 있나요?

# Excess keyword argument (python 2) example:

def foo(a, b, c, **args):

print a = %s % (a,)

print b = %s % (b,)

print c = %s % (c,)

print args

foo(a=testa, d=excess, c=testc, b=testb, k=another_excess)

위의 예제에서 볼 수 있듯이, 우리는 a, b, c 매개변수만 foo 함수의 서명에 가지고 있습니다. d 과 k 가 없기 때문에, 이들은 args 딕셔너리에 넣어집니다. 프로그램의 출력은 다음과 같습니다:

a = testa

b = testb

c = testc

{'k': 'another_excess', 'd': 'excess'}

I love Korean food.

저는 한국 음식을 좋아합니다.

# Excess positional argument (python 2) example:

def foo(a, b, c, *args):

print a = %s % (a,)

print b = %s % (b,)

print c = %s % (c,)

print args

foo(testa, testb, testc, excess, another_excess)

여기서는 위치 인자를 테스트하므로 초과 인자는 끝에 있어야하며 *args가 이를 튜플로 묶습니다. 따라서이 프로그램의 출력은 다음과 같습니다:

a = testa

b = testb

c = testc

('excess', 'another_excess')

함수의 인수로 사전이나 튜플을 풀어서 사용할 수도 있습니다:

def foo(a,b,c,**args):

print a=%s % (a,)

print b=%s % (b,)

print c=%s % (c,)

print args=%s % (args,)

argdict = dict(a=testa, b=testb, c=testc, excessarg=string)

foo(**argdict)

인쇄:

a=testa

b=testb

c=testc

args={'excessarg': 'string'}

그리고

def foo(a,b,c,*args):

print a=%s % (a,)

print b=%s % (b,)

print c=%s % (c,)

print args=%s % (args,)

argtuple = (testa,testb,testc,excess)

foo(*argtuple)

인쇄합니다:

a=testa

b=testb

c=testc

args=('excess',)

답변 2

복잡한 코드를 작성하고 개발을 하다 보면, 기존 코드에서 존재하는 다양한 특수기호들을 그렇게 특이한 것은 아닌 것처럼 사용하게 되는 경우가 있습니다. 이러한 특수기호 중 하나인 Asterisk(별표) * 기호는 파이썬에 있어서 굉장히 중요한 역할을 합니다.

파이썬에서 Asterisk(별표) * 기호는 여러 가지 용도로 사용될 수 있습니다. 이 중에서 가장 대표적인 용도는 가변 인자(Variadic Arguments)를 처리하는 것입니다. 가변 인자란 개수가 일정하지 않은 인자들을 받아들일 수 있는 인자로, 이러한 인자를 처리하는 함수를 작성할 때 * 기호를 이용할 수 있습니다.

예를 들어, 다음과 같은 함수가 있다고 가정해봅시다.

```

def add_nums(a, b, *args):

print(a)

print(b)

print(args)

```

위의 함수는 a와 b를 더한 결과값과, args에 들어온 여러 개의 인자들을 출력하는 함수입니다. 이 함수를 호출할 때 * 기호를 이용해서 가변 인자를 처리할 수 있습니다.

```

add_nums(1, 2, 3, 4, 5)

# 결과값

# 1

# 2

# (3, 4, 5)

```

위의 결과값을 보면, a와 b는 각각 1과 2라는 값을 가지고 있으며, args라는 가변인자는 3, 4, 5라는 값을 튜플 형태로 가지고 있음을 확인할 수 있습니다.

Asterisk(별표) * 기호는 그 외에도 많은 용도로 사용될 수 있습니다. 다음은 간단한 예시입니다.

- 언패킹 연산자(Unpacking operator)

- 두 개의 리스트를 합칠 때 사용할 수 있습니다.

- 키워드 가변 인자(Keyword Variadic Arguments)

- 인자를 하나의 딕셔너리로 받아들일 때 사용할 수 있습니다.

- 리스트, 튜플, 딕셔너리 컴프리헨션

- Asterisk(별표) * 기호를 사용해서 간단하게 컴프리헨션을 작성할 수 있습니다.

파이썬에서 별표 * 기호의 용도는 정말 다양합니다. 자신이 작성하는 코드에서 이 기호를 사용할 때, 어느 상황에서 어떤 용도로 사용할 수 있는지 잘 파악하고 사용하는 것이 중요합니다. 이를 통해 더욱 효율적이며 직관적인 코드를 작성할 수 있을 것입니다.

반응형
Comments