Python의 Dict Union 연산자 | 펩 584

4915 단어 python
오늘 나는 python web conf 2022를 보고 있었고 그의 Functional Programming 강연 중에 무대에서 새로운 Dict Union Operator Live를 사용하는 것을 보았습니다. 이 연산자는 pep584 과 함께 Python 3.9에 처음 도입되었습니다.

병합 사전



압축 풀기를 사용하여 오랫동안 dicts를 업데이트했습니다. 마지막 항목이 항상 이깁니다. 사용자가 기본 구성을 재정의하는 것이 매우 쉽습니다. pep584가 Python 3.9에 도착하면 이제 | 연산자를 활용하여 동일한 결과를 얻을 수 있습니다.

default_config = {
    'url': 'https://example.com',
    'assets_dir': 'static'
} 
user_config = {'url': 'https://waylonwalker.com'}

# **unpacking goes back much further than 3.9

config = {**default_config, **user_config} 
print(config)
# {'url': 'https://waylonwalker.com', 'assets_dir': 'static'}


# the same can be achieved through the new to python 3.9 | operator

config = default_config | user_config 
print(config)
# {'url': 'https://waylonwalker.com', 'assets_dir': 'static'}






understanding python *args and **kwargs





More on unpacking in this post.


사전 업데이트



릴리스에는 업데이트에 사용할 수 있는 새로운 업데이트 구문|=도 있습니다. 나는 어떤 이유로 변수를 자주 변경하지 않기 때문에 개인적인 사용 사례에서 이에 대한 더 나은 예를 생각할 수 없습니다. 그래서 구성을 만든 다음 업데이트하는 것을 제외하고는 위와 비슷한 예를 들겠습니다.

# old python <3.9 way
config = {
    'url': 'https://example.com', 
    'assets_dir': 'static' 
} 
config.update({'url': 'https://waylonwalker.com'})

# new python 3.9+ way
config = {
    'url': 'https://example.com',
    'assets_dir': 'static'
}
config |= {'url': 'https://waylonwalker.com'}

print(config)
# {'url': 'https://waylonwalker.com', 'assets_dir': 'static'}


당신은 그것을 사용해야합니까?



3.9에서만 실행될 라이브러리/응용 프로그램을 작성하고 있습니까? 그러면 풀릴 것이 없습니다. 누군가가 3.8 또는 이전 버전에서 코드를 실행할 가능성이 있는 경우 ** 또는 .update 를 사용하십시오.

RTFM



이것이 이 새로운 구문을 사용하는 방법에 대해 가장 먼저 떠오르는 것입니다. 자세한 내용은 pep584을 참조하십시오.

연결



  • pep584
  • 좋은 웹페이지 즐겨찾기