2014-10-06 5 views
4

2to3 파이썬 2.x는 소스 코드를 읽고 https://docs.python.org/3.4/library/2to3.html#fixers에 나와있는 마흔의 정착액을 고려 유효 파이썬 3.x의 코드어떤 2to3 해결사가 유효한 Python 2 코드를 출력합니까?

로 변환하는 정착액의 시리즈를 적용 파이썬 프로그램입니다. 설계 상으로는 모두 유효한 Python 3 코드를 출력합니다. 어떤 출력이 유효한가 파이썬 2 코드인가? != 정착액 제로 "이름 바꾸기 그 반면 유효 파이썬 2뿐만 아니라 파이썬 3.

때문에

는 예를 들어, 정착액 NE는,이 속성을 갖는다"!=-<> 이전 같지 않음 신택스 변환 " __nonzero__ to __bool__ "에는 속성이 없으므로 __bool__이 Python 2.7에 포함되어 있습니다. What's New In Python 3.0에서

+2

"3to2 차단기"입니다. "to3"은 "Python 2"로가는 것에 관심이 없다. 제목을 직접 작업으로 변경해야합니다. 예 : Python 3을 Python 2로 자동 백 포트/'수정'하는 방법? 또는 Python 2를 Python 3으로 업데이트하여 최소한의 수정/수정이 필요한 방법은 무엇입니까? – user2864740

답변

1

:

파이썬 2.6과 3.0 모두에서 변경 를 실행하는 소스 코드를 작성하려고하지 않는 것이 좋습니다

; 매우 흐린 코딩 스타일을 사용해야합니다 (예 : 인쇄 문, 메타 클래스를 피하고 많은 . Python 2.6과 Python 3.0을 모두 지원해야하는 라이브러리를 유지하는 경우 가장 좋은 방법은 소스 코드의 2.6 버전을 편집하고 3.0을 편집하는 대신 2to3 번역기를 다시 실행하여 위의 3 단계를 수정하는 것입니다 소스 코드는 코드입니다. 그것은 또한 귀하의 질문에, 당신이있어 무엇을 찾을 수있는 가장 가까운 일에 관해서는 3.0

대부분의 주요 새로운 기능 및 변경 사항의 나열하기 때문에 꽤 좋은 일이, 거기까지 연결

묻는 것은 변환기 또는 해결사가 아닌 Six이지만 많은 변형 된 코딩을 처리하는 호환성 라이브러리입니다. 즉, 나는 그것이 얼마나 잘 작동하는지 모르며, 어쨌든 그것을 활용하기 위해 기존 코드를 많이 변경해야합니다.

가장 큰 문제점은 파이썬 3.x가 구문의 많은 근본적인 측면을 변경했기 때문에 같은 코드가 3.x와 2.x에서 같은 방식으로 작동하는 것이 거의 불가능하다는 것입니다. . 파이썬 2의 문자열은 파이썬 3의 문자열과 다릅니다. 정수도 마찬가지이며, 파이썬 3은 긴 타입을 더 이상 가지지 않습니다 (파이썬 3 int는 길었던 것이었고 오래된 파이썬 2 int는 없어졌습니다). 많은 기본 제공 함수와 특성의 이름이 변경되거나 수정되었으며 구문의 대부분이 이전 버전과 완전히 호환되는 방식으로 변경되거나 정리되었습니다.

Porting code to Python 3 with 2to3은 약 2to3에 대해 설명하고 나열된 구문 변경 사항의 양은 더 이상 결과 코드가 더 이상 Python 2.x에서 작동하지 않는 이유를 설명하기에 충분할 것으로 예상됩니다.

+1

감사합니다. 나는 6 개의 프로젝트를 사용했다. 그 릴리스 노트는 망상 적입니다. –