파이썬의 3.0 버전은 보통 파이썬 3000 (Py3k) 이라고 불린다. 이는 Python 의 이전 버전에 비해 큰 업그레이드입니다.
Python 3.0 은 큰 부담을 주지 않기 위해 이전 버전과의 호환성을 고려하지 않고 설계되었습니다.
이전 Python 버전용으로 설계된 많은 프로그램이 Python 3.0 에서 제대로 작동하지 않습니다.
기존 프로그램을 돌보기 위해 Python 2.6 은 기본적으로 Python 2.x 의 구문과 라이브러리를 사용하며 Python 3.0 으로의 마이그레이션을 고려하면 Python 3.0 의 일부 구문과 기능을 사용할 수 있습니다.
새로운 파이썬 프로그램은 파이썬 버전 3.0 의 구문을 사용할 것을 권장합니다.
실행 환경에서 Python 3.0 을 설치할 수 없거나 프로그램 자체에서 Python 3.0 을 지원하지 않는 타사 라이브러리를 사용하지 않는 한. 파이썬 3.0 을 지원하지 않는 타사 라이브러리는 Twisted, py2exe, PIL 등입니다.
대부분의 타사 라이브러리는 파이썬 3.0 과의 호환성을 위해 노력하고 있습니다. Python 3.0 을 바로 사용할 수 없더라도 Python 3.0 호환 프로그램을 먼저 작성한 다음 Python 2.6, Python 2.7 로 실행하는 것이 좋습니다.
파이썬 3.0 의 변경 사항은 주로 다음과 같습니다.
1. 인쇄 기능
Print 문이 사라지고 대신 print () 함수가 사용됩니다. Python 2.6 및 Python 2.7 섹션에서는 이러한 형식의 인쇄 구문을 지원합니다. 파이썬 2.6 과 파이썬 2.7 에서 다음 세 가지 형식은 동일합니다.
인쇄? "물고기"
인쇄? ("물고기")? # 인쇄 후 공백이 있습니다.
인쇄 ("물고기")? #print () 는 다른 인수를 수락할 수 없습니다. 그러나 파이썬 2.6 은 실제로 새로운 print () 구문을 지원합니다.
어디서 왔어요? _ _ 미래 _ _? 수입? 인쇄 _ 기능
인쇄 ("물고기", "팬더",? Sep=',?' ) 2.? 통일코드
파이썬 2 에는 ASCII str () 유형이 있고 유니코드 () 는 바이트 유형이 아닌 개별 유형입니다.
이제 Python 3 에서 유니코드 (UTF-8) 문자열과 바이트 클래스인 byte 와 bytearrays 가 생겼습니다.
파이썬 3 부터 시작합니다. 기본적으로 x 소스 파일은 UTF-8 인코딩을 사용하므로 다음 코드를 사용할 수 있습니다.
& gt& gt& gt? 중국? =? 중국?
& gt& gt& gt 인쇄?
중국 파이썬 2.x
& gt& gt& gt? Str? =? "나는 베이징의 천안문 광장을 좋아한다"
& gt& gt& gt? 잠수함용 열 중성자 원자로 (submarine thermal reactor 의 약자)
Xe6 \ x88 \ x91\ xe7 \ x88 \ XB1\ xe5 \ x8c \ x97 \ xe4 \
& gt& gt& gt? Str? =? U "나는 베이징의 천안문 광장을 좋아한다"
& gt& gt& gt? 잠수함용 열 중성자 원자로 (submarine thermal reactor 의 약자)
U' \ u6211\ u7231\ u5317 \ u4eac \ u53
& gt& gt& gt? Str? =? "나는 베이징의 천안문 광장을 좋아한다"
& gt& gt& gt? 잠수함용 열 중성자 원자로 (submarine thermal reactor 의 약자)
나는 베이징의 천안문 광장을 좋아한다. 나누기
파이썬의 나눗셈은 다른 언어보다 더 고급스럽고 복잡한 규칙이 있다. 파이썬에는 두 개의 나누기 연산자,/및//
3. 1 첫 번째/나누기:
Python 2.x 의 /division 은 Java, c 등과 같은 대부분의 친숙한 언어와 유사합니다. 정수 나눗셈의 결과는 정수이고 소수 부분은 완전히 무시됩니다. 부동 소수점 나눗셈은 부동 소수점 결과를 얻기 위해 소수 부분을 유지합니다.
파이썬 3.x 에서는 더 이상/나눗셈을 하지 않으며 정수 간 나눗셈의 결과도 부동 소수점 숫자가 됩니다.
파이썬 2.x:
& gt& gt& gt? 1? /? 2
& gt& gt& gt? 1.0? /? 2.0
0.5 파이썬 3.x:
& gt& gt& gt? 1/2
0.5//나눗셈의 경우 이 나눗셈을 바닥 나눗셈이라고 하며 나눗셈 결과에 대해 바닥 연산을 자동으로 수행합니다. 이는 파이썬 2.x 와 파이썬 3.x 에서 일치합니다 .....
파이썬 2.x:
& gt& gt& gt? -1? //? 2
-1파이썬 3.x:
& gt& gt& gt? -1? //? 2
-1 소수 부분은 버려지지 않고 반올림을 한다는 점에 유의하십시오. 소수 부분을 자르려면 수학 모듈의 trunc 함수를 사용해야 합니다.
파이썬 3.x:
& gt& gt& gt? 수입? 수학
& gt& gt& gt? Math.trunc( 1? /? 2) 을 참조하십시오
& gt& gt& gt? Math.trunc(- 1? /? 2) 을 참조하십시오
비정상이다
Python 3 에서는 예외 처리도 약간 바뀌었고, 이제 as 를 키워드로 사용합니다.
예외를 포착하는 구문은 무엇입니까? Exc 말고 var? 변경? 변수로서의 exc 를 제외하고.
Except (exc 1, exc2) 구문을 var 로 사용하여 여러 유형의 예외를 동시에 캡처합니다. 파이썬 2.6 은 이미 두 구문을 모두 지원합니다.
1.2.x 시대에는 모든 유형의 물체를 직접 던질 수 있습니다. 3.x 시대에는 BaseException 에서 상속된 객체만 던질 수 있었습니다.
2.2.x raise 문은 던져진 객체 유형과 매개 변수를 쉼표로 구분합니다. 3.x 는 이 멋진 표기법을 취소하고 생성자를 직접 호출하여 객체를 던졌습니다.
2.x 시대에는 예외가 프로그램 오류를 나타내는 것 외에도 일반 제어 구조가 해야 할 일을 자주 했다. 3.x 에서 볼 수 있듯이 디자이너는 예외를 보다 구체적으로 만들어 오류가 발생할 때만 예외 캡처 문으로 처리할 수 있습니다.
5.xrange
Xrange () 를 사용하여 반복 객체를 만드는 것은 파이썬 2 에서 매우 인기가 있습니다. 예를 들어 For 루프 또는 목록/컬렉션/사전에서 파생됩니다.
이 성능은 발전기 (예: 게으른 평론). 하지만 이 xrange-iterable 은 무한합니다. 즉, 무한히 반복할 수 있습니다.
불활성 평가로 인해 한 번만 트래버스하면 xrange () 함수가 range () 보다 빠릅니다 (예: for 루프). 그러나 생성기는 매번 처음부터 시작되므로 한 번의 반복보다 여러 번 반복하는 것이 좋습니다.
Python 3 에서 range () 의 구현은 xrange () 와 유사하므로 특별한 xrange () 함수가 더 이상 없습니다 (Python 3 에서는 xrange () 에서 이름 지정 예외가 발생함).
파이썬 3?
수입? 시간
N? =? 10000
Def? 테스트 범위 (n):
반환? 뭐 때문에? 나? 네? 범위 (n):
합격이다
Def? Test_xrange(n):
뭐 때문에? 나? 네? Xrange(n):
PassPython 2
인쇄? 파이썬',? 파이썬 _ 버전 ()
인쇄? \ n 타이밍? 범위 ()'
%timeit? 테스트 범위 (n)
인쇄? \ n \ 타이밍? Xrange ()'?
%timeit? Test_xrange(n)
파이썬? 2.7.6
타이밍? 범위 ()
1000? 순환? 최고야? 의? 3:? 433? S? 피터? 고리
타이밍? Xrange() 1000? 순환? 최고야? 의? 3:? 350? S? 피터? 고리
파이썬? 2.7.6
타이밍? 범위 ()
1000? 순환? 최고야? 의? 3:? 433? S? 피터? 고리
타이밍? Xrange ()
1000? 순환? 최고야? 의? 3:? 350? S? 피터? 루프 파이썬 3
인쇄 ('파이썬',? 파이썬 _ 버전 ())
인쇄 ('\ n 타이밍? Range ()')
%timeit? 테스트 범위 (n)
파이썬? 3.4. 1
타이밍? 범위 ()
1000? 순환? 최고야? 의? 3:? 520? S? 피터? 루프 인쇄 (xrange (10))
--
NameError? 추적? 대부분? 가장 가까운 것? 전화하세요? 마지막으로)
& ltipython-input-5-5d8f9b79ea70 > -응? 네? & lt 모듈> ()
-> -응? 1? 인쇄 (xrange( 10))
NameError:? 이름? Xrange? 그래요? 그렇지 않나요? 6 이 정의되었습니다. 8 진수 문자 표현
8 진수는 0o777 로 작성해야 하며, 원시 형식 0777 로 쓸 수 없습니다. 바이너리는 0b 1 1 1 으로 작성해야 합니다.
정수를 이진 문자열로 변환하는 bin () 함수가 추가되었습니다. 파이썬 2.6 은 이미 두 구문을 모두 지원합니다.
파이썬 3.x 에서는 8 진수 문자량이 0o 1000 으로 한 가지 방법으로 표현됩니다.
파이썬 2.x
& gt& gt& gt? 0o 1000
5 12
& gt& gt& gt? 0 1000
512 파이썬 3.x
& gt& gt& gt? 0 1000
파일? "< 표준 입력 >,? 선? 1
0 1000
~
문법 오류:? 유효하지 않습니까? 토큰
& gt& gt& gt? 0o 1000
5 127 ...? 부등산자
파이썬 2.x 는 두 가지 표기법이 있다는 뜻은 아닙니다! = 및
파이썬 3.x 에서는
8. repr 표현식 `````````` 이 삭제되었습니다.
파이썬 2.x 의 역따옴표 ` ` 는 repr 의 함수와 같습니다.
파이썬 3.x 에서는 ```````````````````````````````````````````````````` 가 제거되어 repr 함수만 사용할 수 있습니다. 이렇게 하는 목적은 코드를 더 선명하게 보이게 하기 위한 것입니까? 하지만 repr 을 사용할 기회가 거의 없는 것 같다. 일반적으로 디버깅 시에만 사용됩니다. Str 함수는 객체를 문자열로 설명하는 데 사용되는 경우가 많습니다.
Def? SendMail(from_:? Str,? 끝:? Str,? 제목:? Str,? 본문:? Str)? -> -응? 부울:
PEP8 에 따라 Pass 다중 모듈의 이름이 변경되었습니다.
이제 Stringio 모듈이 새 입출력 모듈에 통합되었습니다. 신규, MD5, gopherlib 등의 모듈이 삭제되었습니다. 파이썬 2.6 은 새로운 입출력 모듈을 지원합니다.
Httplib, basehttpserver, CGI httpserver, simple httpserver, 쿠키 및 쿠키 lib 는 http 패키지에 통합됩니다.
Exec 문은 취소되고 exec () 함수만 남습니다. 파이썬 2.6 은 이미 exec () 함수를 지원합니다.
9. 데이터 유형
1)Py3. X 는 long 유형을 제거하고 지금은 단 하나의 integer-int 만 있지만 2 처럼 동작합니다. 엑스판 용.
2) 버전 2 의 8 비트 문자열에 해당하는 바이트 유형이 추가되었습니다. 10, 1 바이트 문자의 양을 정의하는 방법은 다음과 같습니다.
& gt& gt& gt? B? =? "중국"?
& gt& gt& gt? (b) 형?
& lt 유형? 바이트'> 문자열 객체와 바이트 객체를 사용할 수 있습니다. Encode () (str-> >; 바이트) 또는. Decode () (바이트-> Str) 메서드는 서로 변환됩니다.
& gt& gt& gt? S? =? B.decode ()?
& gt& gt& gt? S?
중국?
& gt& gt& gt? B 1? =? S.encode ()?
& gt& gt& gt? B 1?
중국의 사전. 키 (),. 프로젝트 및. Values () 메서드는 반복자를 반환하고 iterkeys () 와 같은 이전 함수는 무시됩니다. Dict.has_key () 도 제거되어 in 으로 대체되었습니다.