Offcanvas

������ ������

패턴 매칭 지원 外··· '파이썬 3.10', 무엇이 달라졌을까

파이썬의 최신 버전(v3.10)은 강력한 패턴 매칭, 개선된 오류 보고, 래핑된 함수에 관한 스마트한 입력 구문 등을 제공한다.   파이썬 3.10(Python 3.10)이 지난 10월 4일 출시됐다. 용감무쌍한 파이썬 개발자라고 해도 적절한 예방 조치(예: 가상 환경 사용 등)와 함께 코드를 테스트하는 게 좋다.  엄밀히 말해서 파이썬 3.10에는 진정으로 새로운 기능이 많진 않지만 그중 하나인 ‘구조적 패턴 매칭(Structural Pattern Matching)’은 async 이후 언어 구문에 가장 중요한 추가 기능일지도 모른다. 여기에서는 파이썬 3.10의 모든 새로운 기능과 코드를 지원하는 방법을 살펴본다.    구조적 패턴 매칭  구조적 패턴 매칭을 사용하면 가능한 값 세트 중 하나와 변수를 일치시킬 수 있다. 또 값의 패턴(예: 특정 속성이 특정 값으로 설정된 객체)과도 일치시킬 수 있다. 이를 통해 가능성의 범위가 크게 확장되고, 다양한 시나리오를 포함하는 코드를 신속하게 작성할 수 있다. 예는 아래와 같다. 패턴 매칭을 사용하는 방법에 관한 자세한 내용은 이곳에서 확인할 수 있다.    command = input() match command.split():     case ["quit"]:         quit()     case ["load", filename]:         load_from(filename)     case ["save", filename]:         save_to(filename)     case _:         print (f"Command '{command}' ...

파이썬 개발 언어 프로그래밍 언어 패턴 매칭

2021.10.06

파이썬의 최신 버전(v3.10)은 강력한 패턴 매칭, 개선된 오류 보고, 래핑된 함수에 관한 스마트한 입력 구문 등을 제공한다.   파이썬 3.10(Python 3.10)이 지난 10월 4일 출시됐다. 용감무쌍한 파이썬 개발자라고 해도 적절한 예방 조치(예: 가상 환경 사용 등)와 함께 코드를 테스트하는 게 좋다.  엄밀히 말해서 파이썬 3.10에는 진정으로 새로운 기능이 많진 않지만 그중 하나인 ‘구조적 패턴 매칭(Structural Pattern Matching)’은 async 이후 언어 구문에 가장 중요한 추가 기능일지도 모른다. 여기에서는 파이썬 3.10의 모든 새로운 기능과 코드를 지원하는 방법을 살펴본다.    구조적 패턴 매칭  구조적 패턴 매칭을 사용하면 가능한 값 세트 중 하나와 변수를 일치시킬 수 있다. 또 값의 패턴(예: 특정 속성이 특정 값으로 설정된 객체)과도 일치시킬 수 있다. 이를 통해 가능성의 범위가 크게 확장되고, 다양한 시나리오를 포함하는 코드를 신속하게 작성할 수 있다. 예는 아래와 같다. 패턴 매칭을 사용하는 방법에 관한 자세한 내용은 이곳에서 확인할 수 있다.    command = input() match command.split():     case ["quit"]:         quit()     case ["load", filename]:         load_from(filename)     case ["save", filename]:         save_to(filename)     case _:         print (f"Command '{command}' ...

2021.10.06

오픈JDK 커뮤니티, 새 제안 공개··· “자바 패턴 매칭 개선한다” 

자바에서 패턴 매칭의 표현력을 개선하는 것 그리고 데이터 지향 쿼리를 활성화하는 것을 목표로 하는 2가지 개발 제안서 초안이 오픈JDK 커뮤니티에서 제기됐다.  자바 프로그래밍에서 레코드 패턴과 배열 패턴 그리고 스위치 표현식 및 구문의 패턴 매칭을 개선하는 기능이 제안됐다. 하지만 이 기능들이 언제 지원될지는 아직 정해지진 않았다.    지난 3월 23일 온라인 프레젠테이션에서 오라클의 기술 부문 컨설팅 담당 개빈 비어맨이 2가지 오픈 JDK 프로젝트 제안을 공개하면서 이러한 기능들을 언급했다. 이들은 앞으로 출시 예정인 (하지만 정확하게 결정되진 않은) 자바 릴리즈에 프리뷰 단계로 포함될 예정이다. 올해 9월로 예정된 JDK 17 릴리즈에 포함될 것으로 예상되고 있다.  제안서 초안에 따르면 자바에서 유형 패턴(자바16부터 지원)과 함께, 레코드 패턴 및 배열 패턴을 지원하면 패턴 매칭의 표현력과 효용성이 크게 향상되며 더욱더 정교하고 구성 가능한 데이터 쿼리를 활성화할 수 있다. 레코드 패턴, 배열 패턴, 유형 패턴은 패턴 내의 패턴처럼 중첩될 수 있다. 유형 패턴의 구문 또는 의미는 변경되지 않는다고 제안서는 덧붙였다.  패턴 매칭은 프로그램의 공통 로직, 즉 객체에서 구성 요소의 조건부 추출을 허용하는 메커니즘이다. 해당 제안서는 지난 3월 16일에 발표된 JDK 16에서 Instanceof 연산자가 유형 패턴을 취하고 패턴 매칭을 수행하도록 확장됐다고 설명했다. 이번 레코드 패턴 및 배열 패턴 제안은 Instanceof의 패턴 매칭(JEP 394)을 기반으로 한다.  한편 스위치에 대한 패턴 매칭을 제기한 제안서 초안에 따르면 이를 사용해 각각 특정 작업이 있는 여러 패턴에 대해 표현식을 테스트할 수 있으므로 복잡한 데이터 지향 쿼리를 안전하고 간결하게 표현할 수 있다.  이 제안의 목표는 스위치 패턴이 케이스 레이블에 표시되도록 하고 원하는 경우 널-호스틸리티(null-ho...

자바 오픈JDK 패턴 매칭 자바 17

2021.03.25

자바에서 패턴 매칭의 표현력을 개선하는 것 그리고 데이터 지향 쿼리를 활성화하는 것을 목표로 하는 2가지 개발 제안서 초안이 오픈JDK 커뮤니티에서 제기됐다.  자바 프로그래밍에서 레코드 패턴과 배열 패턴 그리고 스위치 표현식 및 구문의 패턴 매칭을 개선하는 기능이 제안됐다. 하지만 이 기능들이 언제 지원될지는 아직 정해지진 않았다.    지난 3월 23일 온라인 프레젠테이션에서 오라클의 기술 부문 컨설팅 담당 개빈 비어맨이 2가지 오픈 JDK 프로젝트 제안을 공개하면서 이러한 기능들을 언급했다. 이들은 앞으로 출시 예정인 (하지만 정확하게 결정되진 않은) 자바 릴리즈에 프리뷰 단계로 포함될 예정이다. 올해 9월로 예정된 JDK 17 릴리즈에 포함될 것으로 예상되고 있다.  제안서 초안에 따르면 자바에서 유형 패턴(자바16부터 지원)과 함께, 레코드 패턴 및 배열 패턴을 지원하면 패턴 매칭의 표현력과 효용성이 크게 향상되며 더욱더 정교하고 구성 가능한 데이터 쿼리를 활성화할 수 있다. 레코드 패턴, 배열 패턴, 유형 패턴은 패턴 내의 패턴처럼 중첩될 수 있다. 유형 패턴의 구문 또는 의미는 변경되지 않는다고 제안서는 덧붙였다.  패턴 매칭은 프로그램의 공통 로직, 즉 객체에서 구성 요소의 조건부 추출을 허용하는 메커니즘이다. 해당 제안서는 지난 3월 16일에 발표된 JDK 16에서 Instanceof 연산자가 유형 패턴을 취하고 패턴 매칭을 수행하도록 확장됐다고 설명했다. 이번 레코드 패턴 및 배열 패턴 제안은 Instanceof의 패턴 매칭(JEP 394)을 기반으로 한다.  한편 스위치에 대한 패턴 매칭을 제기한 제안서 초안에 따르면 이를 사용해 각각 특정 작업이 있는 여러 패턴에 대해 표현식을 테스트할 수 있으므로 복잡한 데이터 지향 쿼리를 안전하고 간결하게 표현할 수 있다.  이 제안의 목표는 스위치 패턴이 케이스 레이블에 표시되도록 하고 원하는 경우 널-호스틸리티(null-ho...

2021.03.25

파이썬 3.10의 새 '패턴 매칭'이 할 수 있는 일

파이썬(Python)은 강력하고 인기가 높지만, 다른 언어에는 있는 플로우 제어(flow control)가 결여되어 있었다. 이는 하나의 값을 가져와, 여러 가능한 조건 중 하나에 대해 명쾌하게 매칭 할 수 있는 방법이다. C와 C++는 switch/case 구성이, 러스트(Rust)에서는 ‘패턴 매칭’이 여기에 해당한다. 파이썬에서 이를 처리하는 전통적인 방법은 그리 명확하지 않다. 첫 번째는 if/elif/else 연쇄 표현식을 쓰는 방법이다. 또 다른 방법은 매칭할 값을 사전에 키로 저장하고, 이 값들을 사용하는 것이다. 예를 들어, 함수를 값으로 저장하고, 키나 다른 변수를 입력으로 사용한다. 잘 작동하는 경우가 많지만, 구성과 유지관리가 번거로울 수 있다. 파이썬에 switch/case 같은 구문을 추가하려는 많은 계획들이 실패한 후, 파이썬 언어를 만든 ‘구이도 반 로섬’과 여러 사람들이 제안한 파이썬 ‘3.10: 구조적 패턴 매칭(Structural Pattern Matching)’에 대한 제안이 최근 수락됐다. 구조적 패턴 매칭은 단순한 switch/case 형태의 매칭은 물론 더 광범위한 유지 케이스를 지원한다.   파이썬 구조적 패턴 매칭 구조적 패턴 매칭은 파이썬에 match/case 명령문과 패턴 구문을 도입한다. match/case 명령문에는 switch/case와 동일한 원칙이 적용된다. 객체를 가져와, 이 객체를 하나 이상의 매칭 패턴에 대해 테스트하고, 매칭되면 조치를 취한다. 각 case 명령문 다음에는 매칭할 패턴이 위치한다. 위 예제는 간단한 문자열을 매칭 대상으로 사용하고 있지만, 더 복잡한 매칭도 가능하다. 파이썬은 맨위부터 맨아래까지 case 목록을 조사해 매칭을 수행한다. 첫 번째 매칭에서 파이썬은 해당되는 case 블록의 명령물을 실행한 다음 match 블록의 끝으로 건너뛴다. 그리고 프로그램 나머지 부분을 계속 수행한다. case 사이에 ‘fall-through’가 없지만, 하나의 case 블...

파이썬 3.10 패턴 매칭 객체 매칭 매칭 로직

2021.03.05

파이썬(Python)은 강력하고 인기가 높지만, 다른 언어에는 있는 플로우 제어(flow control)가 결여되어 있었다. 이는 하나의 값을 가져와, 여러 가능한 조건 중 하나에 대해 명쾌하게 매칭 할 수 있는 방법이다. C와 C++는 switch/case 구성이, 러스트(Rust)에서는 ‘패턴 매칭’이 여기에 해당한다. 파이썬에서 이를 처리하는 전통적인 방법은 그리 명확하지 않다. 첫 번째는 if/elif/else 연쇄 표현식을 쓰는 방법이다. 또 다른 방법은 매칭할 값을 사전에 키로 저장하고, 이 값들을 사용하는 것이다. 예를 들어, 함수를 값으로 저장하고, 키나 다른 변수를 입력으로 사용한다. 잘 작동하는 경우가 많지만, 구성과 유지관리가 번거로울 수 있다. 파이썬에 switch/case 같은 구문을 추가하려는 많은 계획들이 실패한 후, 파이썬 언어를 만든 ‘구이도 반 로섬’과 여러 사람들이 제안한 파이썬 ‘3.10: 구조적 패턴 매칭(Structural Pattern Matching)’에 대한 제안이 최근 수락됐다. 구조적 패턴 매칭은 단순한 switch/case 형태의 매칭은 물론 더 광범위한 유지 케이스를 지원한다.   파이썬 구조적 패턴 매칭 구조적 패턴 매칭은 파이썬에 match/case 명령문과 패턴 구문을 도입한다. match/case 명령문에는 switch/case와 동일한 원칙이 적용된다. 객체를 가져와, 이 객체를 하나 이상의 매칭 패턴에 대해 테스트하고, 매칭되면 조치를 취한다. 각 case 명령문 다음에는 매칭할 패턴이 위치한다. 위 예제는 간단한 문자열을 매칭 대상으로 사용하고 있지만, 더 복잡한 매칭도 가능하다. 파이썬은 맨위부터 맨아래까지 case 목록을 조사해 매칭을 수행한다. 첫 번째 매칭에서 파이썬은 해당되는 case 블록의 명령물을 실행한 다음 match 블록의 끝으로 건너뛴다. 그리고 프로그램 나머지 부분을 계속 수행한다. case 사이에 ‘fall-through’가 없지만, 하나의 case 블...

2021.03.05

회사명:한국IDG 제호: ITWorld 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 편집인 : 박재곤 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2022 International Data Group. All rights reserved.

10.4.0.31