중화사전망 - 자전 검색 - 파이썬 3.4 는 노트 3.x 와 2.x 의 차이점을 배워 지속적으로 업데이트한다.
파이썬 3.4 는 노트 3.x 와 2.x 의 차이점을 배워 지속적으로 업데이트한다.
2.x 에서: html 을 인쇄합니다. 3.x 에서는 인쇄 (html) 로 변경해야 합니다.
Urllib2 가져오기
ImportError:' urllib2' 라는 모듈이 없습니다
파이썬 3.x 에서는 urllib2 대신 urllib.request 를 사용합니다.
스레드를 가져옵니다
ImportError:' thread' 라는 모듈이 없습니다
Python3.x 에서는 thread 대신 _thread (앞에 밑줄 표시) 를 사용합니다.
2.x 에서 Exception 예외, e: 3.x 에서 except (예외):
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
인쇄 기능
Print 구문은 Python 3 의 작은 변화이므로 널리 알려져 있어야 하지만, Python 2 의 print 문은 Python 3 에서 print () 함수로 대체되므로 출력해야 하는 객체는 Python 3 에서 괄호로 묶어야 합니다.
파이썬 2 에서도 추가 괄호를 사용할 수 있습니다. 반면 Python 3 의 print 함수를 Python2 에서 괄호로 묶지 않고 호출하려는 경우 SyntaxError 가 트리거됩니다.
파이썬 2.7.6
Python, python_version () 을 인쇄합니다
인쇄 "안녕, 세상! 클릭합니다
인쇄 ("안녕, 세상!" " ) 을 참조하십시오
인쇄 "텍스트"; [한 줄에 더 많은 텍스트 인쇄] 를 인쇄합니다
출력:
안녕, 세상!
안녕, 세상!
텍스트 같은 줄에 더 많은 텍스트를 인쇄합니다
--
파이썬 3.4.1
인쇄 ('파이썬', 파이썬 _ 버전 ())
인쇄 ("안녕, 세상!" " ) 을 참조하십시오
Print("some text, ",end=" ")
인쇄 ("한 줄에 더 많은 텍스트 인쇄")
출력:
안녕, 세상!
일부 텍스트, 한 줄에 더 많은 텍스트 인쇄
인쇄 "안녕, 세상! 클릭합니다
파일 "& ltipython-input-3-1 39a7c5835bd >, 줄1
인쇄 "안녕, 세상! 클릭합니다
~
구문 오류: 잘못된 구문
참고: 파이썬에서 괄호 유무에 관계없이' 헬로 월드' 를 출력하는 것은 정상입니다.
그러나 여러 객체가 괄호 안에 동시에 출력되면 tuple 이 만들어집니다. Python 2 에서 print 는 함수 호출이 아니라 명령문이기 때문입니다.
Python, python_version () 을 인쇄합니다
인쇄 ('a',' b')
A',' b' 인쇄
파이썬 2.7.7
('갑',' 을')
B 1 개
--
정수 나누기
사람들은 종종 정수 나눗셈에서 파이썬 3 의 변화를 무시하기 때문에 (잘못 쓰면 구문 오류가 트리거되지 않음), 파이썬 2 에서 코드를 이식하거나 파이썬 3 의 코드를 실행할 때 이런 변화에 각별히 주의해야 한다.
그래서 파이썬의 코드를 피하기 위해 파이썬 3 스크립트의 3/2 대신 플로트 (3)/2 또는 3/2.0 을 사용하려고 합니다.
2 환경으로 인해 오류가 발생할 수 있습니다 (또는 반대로 Python 2 스크립트에서 from __future__ import division 을 사용하여 Python 사용).
3) 나누기.
파이썬 2.7.6
3/2 = 1
3 // 2 = 1
3/2.0 = 1.5
3 // 2.0 = 1.0
파이썬 3.4.1
3/2 = 1.5
3 // 2 = 1
3/2.0 = 1.5
3 // 2.0 = 1.0
--
통일코드
Python 2 에는 별도의 유니코드 () 함수를 통해 유니코드 유형으로 변환할 수 있는 ascii 기반 str () 유형이 있지만 byte 유형은 없습니다.
파이썬 3 에는 유니코드 (bytes-8) 문자열과 바이트 및 바이트 클래스라는 두 바이트 클래스가 있습니다.
파이썬 2.7.6
인쇄 유형 (유니코드 ('python3 문자열 유형과 유사'))
& lt "유니코드" > 를 입력합니다
인쇄 유형 (b' 바이트 유형이 존재하지 않음')
& lt "문자열" 유형>
인쇄 "그들은 정말 동일 합니다."
그들은 정말 똑같다.
플롯 유형 (bytearray (b'bytearray 가 이상하게 존재하긴 하지만'))
& lt "bytearray”& gt;; 를 입력합니다
파이썬 3.4.1있음 & ltclass' bytes'>
Print('and Python', python_version (), end= "")
Print(' also has', type(bytearray(b'bytearrays'))
파이썬 3.4.1도< 클래스' bytearray”& gt;;
1
데이터에 문자열'+b' 바이트' 를 추가할 수 없습니다
--
유형 오류 역추적 (최근 호출)
& ltipython-input-13-d3e8942ccf81> & lt 모듈> () 에서
-> 1' 데이터에 문자열'+b' 바이트' 를 추가할 수 없습니다
TypeError:' bytes' 객체를 암시적으로 str 로 변환할 수 없습니다
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
파이썬 2.4 와 파이썬 3.0 의 비교
1. 문에 함수의 변경 사항을 인쇄합니다.
원문: 인쇄 1, 2+3
다음으로 변경: 인쇄 (1, 2+3)
둘째, range 와 xrange
Original: range (0,4) 결과는 목록 [0, 1, 2,3] 입니다.
변경 대상: 리스트 (범위 (0,4))
원문: xrange( 0, 4) 는 for 루프의 변수 제어에 적용됩니다.
변경 대상: 범위 (0,4)
셋째, 문자열
Original: 문자열은 8 비트 문자열로 저장됩니다.
바꿀 내용: 문자열은 16 비트 유니코드 문자열로 저장됩니다.
넷째, try except 문의 변경
2.x 에서 Exception 예외, e: 3.x 에서 except (예외):
다섯째, 파일 열기
원본: 파일 (...)
또는 열기 (...)
바꿀 내용:
Open (...) 만 사용할 수 있습니다
6. 키보드에서 문자열을 입력합니다.
Original: raw_input ("프롬프트 정보")
변경 대상: 입력 (프롬프트 정보)
7, 바이트 데이터 유형
Bytes 객체는 변경되지 않는 배열입니다. 이들 항목은 0<= x & lt256.
Bytes 는 각 요소가 0~255 범위의 8 비트 바이트인 "바이트 배열" 객체로 간주할 수 있습니다.
파이썬 3.0 에서는 문자열이 유니코드로 저장되기 때문에 이진 파일을 작성할 때 문자열을 직접 쓰거나 읽을 수 없으며 어떤 식으로든 바이트 시퀀스로 인코딩해야 쓸 수 있습니다.
(a) 문자열 인코딩 (encode) 은 바이트입니다.
예: s = "장삼abc12"
B = s.encode (인코딩 방법)
# b 는 바이트 유형의 데이터입니다.
# 일반적으로 사용되는 인코딩 방식은' UFT- 16',' UTF-8',' GBK',' GB 23 12',' ASCII' 입니다
# 참고: 지정된 인코딩 방법으로 문자열을 인코딩할 수 없을 때 예외가 발생합니다.
(2) 바이트가 문자열로 디코딩됩니다.
S = "장삼ABC12"
B = s.encode( "gbk") # String s gbk 형식으로 인코딩된 바이트 시퀀스.
S 1 = b.decode("gbk") # 바이트 시퀀스 b 를 gbk 형식의 문자열로 디코딩합니다.
# Description, 바이트 시퀀스를 지정된 인코딩 형식으로 디코딩할 수 없을 때 예외가 발생합니다.
(3) 사용 방법의 예
# 인코딩 =gbk
F = 켜기 ("c:\\ 1234.txt", "WB")
S = "장사 ABCD 1234"
#-
# 파이썬 2.4 에서는 다음과 같이 쓸 수 있습니다.
# F. 쓰기
# 하지만 파이썬 3.0 에서 예외가 발생했습니다.
#-
B = S. encode ("gbk")
F. 쓰기 (b)
F.close ()
입력 ("? ) 을 참조하십시오
파일 읽기의 예:
# 인코딩 =gbk
F = open("c:\\ 1234.txt ","Rb ")
F.seek (0,2) # 파일 끝으로 이동합니다.
N = f.tell() # 파일의 바이트 수를 읽습니다.
파일의 시작 부분으로 다시 이동합니다.
B = f.read( n)
#-
# B 는 파이썬 2.4 의 문자열 유형입니다.
# 파이썬 3.0 의 b 가 바이트가 되기를 바랍니다.
# 따라서 지정된 인코딩 방법에 따라 인코딩을 확인해야 합니다.
#-
S = b.decode("gbk ") 입니다
인쇄물
#-
# python 2.4 에서 print s 또는 print s 를 작성할 수 있습니다.
# python 3.0 으로 인쇄물을 작성해야 합니다.
#-
F.close ()
입력 ("? ) 을 참조하십시오
실행 후 다음과 같이 표시되어야 합니다.
장리삼사 ABCD 1234
(4) 바이트 시퀀스가 형성되면 그 내용은 변경할 수 없습니다. 예를 들면 다음과 같습니다.
S="ABCD "
B = S. encode ("gbk")
인쇄 b[0] # 디스플레이 65
B[0] = 66
# 이 문을 실행하는 동안 예외가 발생했습니다.' bytes' 객체는 항목 할당을 지원하지 않습니다.
여덟, chr( K) 및 주문 (c)
파이썬 2.4.2 이전
Chr( K) 는 코드 K 를 문자로 변환하고 K 의 범위는 0 ~ 255 입니다.
Ord( c) 는 단일 문자의 코드를 가져옵니다. 반환 값 범위는 0 에서 255 까지입니다.
파이썬 3.0
Chr( K) 는 코드 K 를 문자로 변환하고 K 의 범위는 0 ~ 65535 입니다.
Ord( c) 는 단일 문자의 코드를 가져옵니다. 반환 값 범위는 0 에서 65535 까지입니다.
9, 나누기 연산자
파이썬 2.4.2 이전
10/3 결과는 3 입니다.
파이썬 3.0
10/3 의 결과는 3.30000000005 입니다
10 // 3 결과 3
X. 바이트 배열 객체-신규
(1) 초기화
A = 바이트 배열 (10)
# a 는 10 바이트로 구성된 배열이며 배열의 각 요소는 1 바이트이며 유형은 int 를 차용합니다.
# 이 시점에서 각 요소의 초기 값은 0 입니다.
(2) 바이트 배열은 변수입니다.
A = 바이트 배열 (10)
A[0] = 25
# 대입문을 사용하여 해당 요소를 변경할 수 있지만 할당은 0 에서 255 사이여야 합니다.
(3) 바이트 배열의 슬라이스는 여전히 바이트 배열입니다.
(4) 문자열을 바이트 배열로 변환합니다.
# 인코딩 =gbk
S = "안녕하세요"
B = s.encode( "GBK") # 첫째, 문자열은 "GBK" 인코딩에 따라 바이트로 변환됩니다.
C = bytearray( b) # 그런 다음 바이트를 바이트 배열로 변환합니다.
너도 쓸 수 있어
C = bytearray ("Hello ","gbk ")
(5) 바이트 배열을 문자열로 변환합니다.
C = bytearray( 4)
C [0] = 65; C [1] = 66; C [2] = 67; C[3]= 68
S = c.decode( "gbk ")
인쇄물
# 표시 예정: ABCD
(6) 바이트 배열은 텍스트 파일을 작성하는 데 사용할 수 있습니다.
# 인코딩 =gbk
F = 켜기 ("c:\\ 1234.txt", "WB")
S = "장사 ABCD 1234"
#-
# 파이썬 2.4 에서는 다음과 같이 쓸 수 있습니다.
# F. 쓰기
# 하지만 파이썬 3.0 에서 예외가 발생했습니다.
#-
B = S. encode ("gbk")
F. 쓰기 (b)
C=bytearray ("왕오", "gbk")
F. 쓰기 (c)
F.close ()
입력 ("? ) 을 참조하십시오