Data Science and Data Proicessing

Python 3.9의 새로운 기능

최신 Python 버전에 포함 된 최고의 기능 살펴보기

Image for post
~의 사진파블로 게레로의 위에Unsplash

다시 한 번 새로운 버전의 Python이 임박했습니다. 이제 베타 버전 (3.9.0b3)에서 곧 Python 3.9의 전체 릴리스를 볼 수 있습니다.

최신 기능 중 일부는 매우 흥미롭고 출시 후 사용되는 것을 보면 놀라 울 것입니다. 다음 내용을 다룹니다.

  • 사전 통합 연산자
  • 유형 힌트
  • 두 가지 새로운 문자열 메서드
  • 새로운 파이썬 파서— 이것은 매우 멋지다

이러한 새로운 기능과 사용 방법을 먼저 살펴 보겠습니다.

(이탈리아어 버전)

사전 연합

세련된 구문으로 내가 가장 좋아하는 새로운 기능 중 하나입니다. 두 개의 사전이있는 경우병합해야하므로 이제조합원.

우리는병합운영자|:

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
c = a | b
print(c)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e'}

그리고최신 정보운영자| =, 원본 사전을 업데이트합니다.

a = {1: 'a', 2: 'b', 3: 'c'}
b = {4: 'd', 5: 'e'}
a |= b
print(a)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e'}

우리 사전이공통 키, 두 번째 사전의 키-값 쌍이 사용됩니다.

a = {1: 'a', 2: 'b', 3: 'c', 6: 'in both'}
b = {4: 'd', 5: 'e', 6: 'but different'}
print(a | b)

[밖]:{1 : 'a', 2 : 'b', 3 : 'c',6 : '하지만 다르다', 4 : 'd', 5 : 'e'}

Iterables로 사전 업데이트

의 또 다른 멋진 동작| =운영자는 능력입니다최신 정보새로운 키-값 쌍이있는 사전반복 가능객체 — 목록 또는 생성기와 같은 :

a = {'a': 'one', 'b': 'two'}
b = ((i, i**2) for i in range(3))
a |= b
print(a)

[밖]:{ 'a': 'one', 'b': 'two',0 : 0, 1 : 1, 2 : 4}

표준 유니온 연산자로 동일하게 시도하면|우리는 얻을 것이다TypeError그것은 사이의 결합 만 허용하기 때문에dict유형.

Image for post

유형 힌트

Python은 동적으로 입력되므로 코드에서 데이터 유형을 지정할 필요가 없습니다.

이것은 괜찮지 만 때로는 혼란 스러울 수 있으며 갑자기 Python의 유연성이 다른 무엇보다 성가신 문제가됩니다.

3.5부터 유형을 지정할 수 있었지만 꽤 번거 롭습니다. 이 업데이트는 진정으로 변경되었습니다. 예를 들어 보겠습니다.

Image for post
유형 힌트 없음 (왼쪽) v 3.9의 유형 힌트 (오른쪽)

우리의add_int함수, 우리는 분명히 같은 숫자를 자체에 추가하고 싶습니다 (정의되지 않은 신비한 이유 때문에). 하지만 저희 에디터는 그것을 모르고 있습니다.+— 따라서 경고가 제공되지 않습니다.

이제 우리가 할 수있는 것은 예상되는 입력 유형을 다음과 같이 지정하는 것입니다.int. 이를 사용하여 편집자는 즉시 문제를 파악합니다.

포함 된 유형에 대해서도 매우 구체적으로 알 수 있습니다. 예를 들면 다음과 같습니다.

Image for post

유형 힌트는 모든 곳에서 사용할 수 있으며 새로운 구문 덕분에 이제 훨씬 깔끔해 보입니다.

Image for post
sum_dict의 인수를 dict로 지정하고 반환 된 값을 int로 지정합니다. 테스트 정의 중에 유형도 결정합니다.

문자열 방법

다른 새로운 기능만큼 화려하지는 않지만 특히 유용하므로 언급 할 가치가 있습니다. 접두사 및 접미사를 제거하기위한 두 가지 새로운 문자열 메서드가 추가되었습니다.

"Hello world".removeprefix("He")

[밖]:"llo 세계"

Hello world".removesuffix("ld")

[밖]:"안녕하세요 세상"

새 파서

이것은 보이지 않는 변화에 가깝지만 Python의 미래 진화에 가장 중요한 변화 중 하나가 될 가능성이 있습니다.

파이썬은 현재 주로 LL (1) 기반 문법을 사용하는데, 이는 LL (1) 파서에 의해 파싱 될 수 있습니다.이 문법은 코드를 위에서 아래로, 왼쪽에서 오른쪽으로, 단 하나의 토큰으로 미리보기로 파싱합니다.

자, 저는 이것이 어떻게 작동하는지 거의 알지 못합니다.하지만이 방법을 사용하기 때문에 파이썬에서 현재 몇 가지 문제를 알려 드릴 수 있습니다.

  • 파이썬은 비 LL (1) 문법을 포함합니다; 이로 인해 현재 문법의 일부는 해결 방법을 사용하여 불필요한 복잡성을 만듭니다.
  • LL (1)은 Python 구문에 제한을 만듭니다 (가능한 해결 방법 없음).이번 호다음 코드는 현재 파서를 사용하여 구현할 수 없음을 강조합니다.SyntaxError) :
with (open("a_really_long_foo") as foo,
open("a_really_long_bar") as bar):
pass
  • LL (1)은 파서에서 왼쪽 재귀로 중단됩니다. 특정 재귀 구문이 구문 분석 트리에서 무한 루프를 일으킬 수 있음을 의미합니다.귀도 반 로섬, Python의 창시자,여기에 설명.

이러한 모든 요소 (그리고 단순히 이해할 수없는 더 많은 요소)는 Python에 큰 영향을줍니다. 그들은 언어의 진화를 제한합니다.

다음을 기반으로하는 새로운 파서못,Python 개발자에게 훨씬 더 많은 유연성을 제공 할 것입니다.Python 3.10 이상.

이것이 곧 출시 될 Python 3.9에서 기대할 수있는 모든 것입니다. 정말 기다릴 수 없다면 최신 베타 릴리스 인 3.9.0b3여기에서 사용할 수 있습니다.

질문이나 제안이 있으시면 언제든지트위터또는 아래 의견에.

읽어 주셔서 감사합니다!

이 기사를 즐겼고 Python의 잘 알려지지 않은 기능에 대해 더 알고 싶다면 이전 기사에 관심이있을 것입니다.

+ Recent posts