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년에 출판한 책입니다.
참조
반응형
'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 |