728x90
애스터리스크(*) 연산자
파이썬에는 * 연산자가 존재합니다.
또한 ** 연산자도 존재합니다.
이 연산자의 이름은 '애스터리스크'라고 합니다.
Argument list를 언패킹 할 때 사용됩니다.
(이 외에도 곱셈(*), 거듭 제곱(**), 가변 길이(*args ,**kwargs) 인수로도 사용이 됩니다.)
파이썬 공식 문서 내용
인자들이 이미 리스트나 튜플에 있지만, 분리된 위치 인자들을 요구하는 함수 호출을 위해 언 패킹 해야 하는 경우 반대 상황이 벌어집니다. 예를 들어, 내장 range() 함수는 별도의 start와 stop 인자를 기대합니다. 그것들이 따로 있지 않으면, 리스트와 튜플로부터 인자를 언 패킹하기 위해 *-연산자를 사용해서 함수를 호출하면 됩니다:
>>> list(range(3, 6)) # normal call with separate arguments
[3, 4, 5]
>>> args = [3, 6]
>>> list(range(*args)) # call with arguments unpacked from a list
[3, 4, 5]
같은 방식으로 딕셔너리도 **-연산자를 써서 키워드 인자를 전달할 수 있습니다:
>>> def parrot(voltage, state='a stiff', action='voom'):
... print("-- This parrot wouldn't", action, end=' ')
... print("if you put", voltage, "volts through it.", end=' ')
... print("E's", state, "!")
...
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
다른 예제
# Without unpacking
date = [2023, 7, 10]
event = datetime.datetime(date[0], date[1], date[2])
# With unpacking
date = [2023, 7, 10]
event = datetime.datetime(*date)
* 연산자를 사용하여 목록에서 인수를 풀어주는 것이 훨씬 효율적입니다.
korean_food = ['비빔밥', '불고기']
foreign_food = ['파스타', '스테이크']
dessert = ['마카롱', '약과']
food_list = [*korean_food, *foreign_food, *dessert]
# ['비빔밥', '불고기', '파스타', '스테이크', '마카롱', '약과']
food = {"비빔밥":{"종류","한식"}, "파스타":{"종류":"양식"}}
food_price = {"비빔밥":{"가격":15000}, "파스타":{"가격":18000}}
food_dict = {key: {**food.get(key, {}), **food_price.get(key, {})} for key in set(food) | set(food_price)}
# {'파스타': {'종류': '양식', '가격': 18000}, '비빔밥': {'종류': '한시', 'Price': 15000}}
# 책의 상세 정보가 담긴 딕셔너리
book_details = {
'책 제목': '천 개의 파랑',
'작가': '천선란',
'최초 발행일': 2020
}
# 책의 상세 정보를 출력하는 함수
def print_book_details(book_title, author, year_published):
print(f"'{book_title}'은(는) {author} 작가가 {year_published}년에 출판한 책입니다.")
# 딕셔너리를 풀어서 함수에 전달
print_book_details(**book_details)
# '천 개의 파랑'은(는) 천선란 작가가 2020년에 출판한 책입니다.
참조
4. More Control Flow Tools
Besides the while statement just introduced, Python uses the usual flow control statements known from other languages, with some twists. if Statements: Perhaps the most well-known statement type is...
docs.python.org
반응형
'Server > Python' 카테고리의 다른 글
VS Code에서 Poetry 가상환경 사용하기 (1) | 2024.11.04 |
---|---|
FAST API Debug 실행 오류. Directory 'app/static' does not exist (0) | 2024.06.04 |
[Python] Function Parameter Tip (0) | 2023.06.12 |
[Python] black, pyright, isort, refurb, flake8 설치 및 적용 (0) | 2023.05.31 |