>  기사  >  백엔드 개발  >  파이썬을 배우려면 지금 python2나 python3을 배워야 할까요?

파이썬을 배우려면 지금 python2나 python3을 배워야 할까요?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-06-15 09:26:323175검색

이제 어떤 버전의 Python을 배워야 할까요? python2 또는 python3?

관련 추천: "python video"

파이썬을 배우려면 지금 python2나 python3을 배워야 할까요?

Python을 이제 막 배우기 시작한 사람들은 3 시리즈 버전을 직접 배워야 합니다. Python의 개발 계획에 따라 2 시리즈 버전은 더 이상 지원되지 않기 때문입니다. 향후 Python도 버전 전환을 진행 중이지만, 2 시리즈 버전의 폭넓은 적용과 다수의 역사적 레거시 프로젝트로 인해 Python의 버전 전환 계획이 원활하지 않습니다(반복 연기). 물론 Python의 경우 가벼운 버전 전환 정책이 맞습니다. 그렇지 않으면 많은 호환성 문제가 발생할 수 있습니다.

파이썬(Python) 언어가 최근 몇 년간 폭넓은 관심을 받아 상승 추세가 뚜렷하지만, 파이썬 언어 자체가 신흥 프로그래밍 언어는 아니지만, 파이썬과 자바는 동시에 나온 프로그래밍 언어입니다. 그러나 Java 언어는 "젊은" 유명인이 되는 반면 Python 언어는 "늦은 꽃"입니다. 초기에는 웹 개발 분야에서 주로 Python 언어를 사용했으나, PHP와 Java로 인해 널리 주목을 받지는 못했습니다.

빅데이터와 인공지능의 발달로 파이썬 언어의 장점이 반영된 것도 파이썬이 폭넓게 주목받고 사용되는 중요한 이유입니다. 따라서 현재 파이썬의 대중적인 방향은 빅데이터에 집중되어 있습니다. (분석) 및 인공 지능 관련 방향 (머신 러닝, 자연어 처리, 컴퓨터 비전).

현재 머신러닝이 대중적인 방향이고, Python을 사용하여 알고리즘을 구현하는 것이 더 편리하므로 개발자는 Python을 더 기꺼이 사용하게 됩니다. 머신러닝 역시 빅데이터 분석의 중요한 방법 중 하나(다른 하나는 통계적 방법)로, 현재 머신러닝의 실무적 응용 사례가 많이 있습니다. 초기에 머신러닝 개발을 할 때는 Java 언어를 사용했는데, 나중에 Python으로 전환하고 나서 더 편해졌습니다.

빅 데이터와 인공 지능 외에도 Python은 현재 임베디드 분야에서도 특정 응용 프로그램을 보유하고 있으며, 사물 인터넷의 발전으로 임베디드 개발의 발전 전망도 상대적으로 넓어졌습니다.

python2와 python3의 차이점

future에서 가져오기를 소개하는 것 외에도 두

print 함수의 차이점을 이해하는 것도 필요합니다. (Python3의 print는 함수이므로 괄호로 묶어야 합니다. Python2의 print는 클래스입니다)

Python 2의 print 선언은 print() 함수로 대체되었습니다. 즉, 인쇄하려는 개체를 괄호로 묶어야 함을 의미합니다.

Python 2

print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
run result:
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line

Python 3

print('Python', python_version())
print('Hello, World!')
print("some text,", end="")
print(' print more text on the same line')
run result:
Python 3.4.1
Hello, World!
some text, print more text on the same line

input()을 통해 사용자 입력을 구문 분석합니다. (Python3의 입력은 str을 가져오고 Python2의 입력은 int 유형을 가져오고 Python2의 raw_input은 (str 유형)을 가져옵니다. input은 Python3에서 사용되고, row_input은 Python2에서 사용되고, 입력은 str

다행히 사용자 입력을 str 객체로 저장하는 문제는 Python 3에서 해결되었습니다. Python 2에서 문자열이 아닌 유형을 읽는 위험한 동작을 피하려면 대신 raw_input()을 사용해야 합니다.

Python 2

Python 2.7.6

[GCC 4.0.1 (Apple Inc. build 5493)] on darwin

"help", "copyright", "credits" 또는 "license"를 입력하여 자세한 내용을 확인하세요.

>>> my_input = input('enter a number: ')
enter a number: 123 
>>> type(my_input)
<type &#39;int&#39;> 
>>> my_input = raw_input(&#39;enter a number: &#39;)
enter a number: 123 
>>> type(my_input)
<type &#39;str&#39;>

Python 3

Python 3.4.1

[GCC 4.2.1 (Apple Inc. build 5577)] on darwin

"help", "copyright", "credits" 또는 "license"를 입력하여 자세한 내용을 확인하세요.

>>> my_input = input(&#39;enter a number: &#39;)
enter a number: 123 
>>> type(my_input)
<class &#39;str&#39;>

정수 나누기: (큰 영향을 미치지 않음) (/ Python3에서는 실제 나누기를 의미하고 %는 나머지를 의미하며 // 바닥 나누기를 의미합니다(결과는 반올림됨). Python2에서 /는 소수점을 기준으로 결과를 얻는다는 의미입니다. //동일은 바닥 나누기를 의미) 통합: Python3에서 /는 진정한 나누기를 의미하고, %는 나머지를 의미하며, // Python2에서는 결과가 반올림됩니다. / 소수점은 진정한 나누기를 의미하고, %는 의미합니다. 나머지, // 결과는 반올림됩니다.

Python 2

print &#39;Python&#39;, python_version()
print &#39;3 / 2 =&#39;, 3 / 2
print &#39;3 // 2 =&#39;, 3 // 2
print &#39;3 / 2.0 =&#39;, 3 / 2.0
print &#39;3 // 2.0 =&#39;, 3 // 2.0

run result:

Python 2.7.6

3 / 2 = 1
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

Python 3

print(&#39;Python&#39;, python_version())
print(&#39;3 / 2 =&#39;, 3 / 2)
print(&#39;3 // 2 =&#39;, 3 // 2)
print(&#39;3 / 2.0 =&#39;, 3 / 2.0)
print(&#39;3 // 2.0 =&#39;, 3 // 2.0)

run result:

Python 3.4.1

3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0

xrange 모듈 :

Python 3에서 range()는 전용 xrange() 함수가 더 이상 존재하지 않는 방식으로 xrange()가 구현되는 것과 같습니다(Python 3에서는 xrange()가 명명된 예외를 발생시킵니다).

Python 2에서는 반복 가능한 객체를 생성하기 위해 xrange()를 사용하는 것이 매우 인기가 있습니다. 예: for 루프 또는 목록/설정/사전 이해.

이것은 생성기와 매우 유사하게 동작합니다(예: "지연 평가"). 하지만 이 xrange-iterable은 무한합니다. 즉, 무한히 탐색할 수 있다는 의미입니다.

느린 평가로 인해 xrange() 함수는 for 루프처럼 한 번만 반복해야 하는 경우 range()보다 빠릅니다. 하지만 한 번 반복하는 것보다 여러 번 반복하는 것은 생성기가 매번 처음부터 시작되기 때문에 권장되지 않습니다.

python 2.4와 python 3.0의 비교

1. print가 명령문에서 함수로 변경되었습니다.

원본: print 1, 2+3

변경: print (1, 2+3)

2.

원본: range(0, 4) 결과는 목록 [0,1,2,3]

다음으로 변경됨: list( range(0,4))

원본: xrange(0, 4) 다음에 적합 루프 변수 제어

改为:range(0,4)

三、字符串

原: 字符串以 8-bit 字符串存储

改为: 字符串以 16-bit Unicode 字符串存储

四、try except 语句的变化

原:

try:
          ......
     except    Exception, e :
         ......

改为

  try:
          ......
     except    Exception as e :
         ......

五、打开文件

原: file( ..... )

    或 open(.....)

改为:

    只能用 open(.....)

六、从键盘录入一个字符串

原: raw_input( "提示信息" )

改为: input( "提示信息" )

七、bytes 数据类型

A bytes object is an immutable array. The items are 8-bit bytes, represented by integers in the range 0 <= x < 256.

bytes 可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。

由于在 python 3.0中字符串以 unicode 编码存储,当写入二进制文件时,字符串无法直接写入(或读取),必须以某种方式的编码为字节序列后,方可写入。

(一)字符串编码(encode) 为 bytes

例:   s = "张三abc12"

       b = s.encode( 编码方式)

       # b 就是 bytes 类型的数据

      # 常用的编码方式为 : "uft-16"    , "utf-8", "gbk", "gb2312", "ascii" , "latin1" 等

      # 注 : 当字符串不能编码为指定的“编码方式”时,会引发异常

(二) bytes 解码(decode)为字符串

      s = "张三abc12"

       b = s.encode( "gbk")    # 字符串 s 编码为 gbk 格式的字节序列

       s1 = b.decode("gbk")   # 将字节序列 b以gbk格式 解码为字符串

       # 说明,当字节序列不能以指定的编码格式解码时会引发异常

(三)使用方法举例

#coding=gbk
f = open("c:\\1234.txt", "wb")
s = "张三李四abcd1234"
# -------------------------------
# 在 python2.4 中我们可以这样写:
# f.write( s )
# 但在 python 3.0中会引发异常
# -------------------------------
b = s.encode("gbk")
f.write( b )
f.close()
input("?")

读取该文件的例子:

#coding=gbk
f = open("c:\\1234.txt", "rb")
f.seek(0,2) #定位至文件尾
n = f.tell() #读取文件的字节数
f.seek(0,0) #重新定位至文件开始处
b = f.read( n )
# ------------------------------
# 在 python 2.4 中 b 是字符串类型
# 要 python 3.0 中 b 是 bytes 类型
# 因此需要按指定的编码方式确码
# ------------------------------ 
s = b.decode("gbk")
print ( s )
# ------------------------------
# 在 python 2.4 中 可以写作 print s 或 print ( s )
# 要 python 3.0 中 必须写作 print ( s )
# ------------------------------ 
f.close()
input("?")

运行后应显示:

张三李四abcd1234

(四) bytes序列,一但形成,其内容是不可变的

例:

s="ABCD"
b=s.encode("gbk")
print b[0]       # 显示   65
b[0] = 66

执行该句,出现异常: 'bytes' object does not support item assignment

八、 chr( K ) 与 ord( c )

python 2.4.2以前

   chr( K )   将编码K 转为字符,K的范围是 0 ~ 255

   ord( c )   取单个字符的编码, 返回值的范围: 0 ~ 255

python 3.0

   chr( K )   将编码K 转为字符,K的范围是 0 ~ 65535

   ord( c )   取单个字符的编码, 返回值的范围: 0 ~ 65535

九、 除法运算符

python 2.4.2以前

   10/3      结果为 3     

python 3.0

   10 / 3 结果为 3.3333333333333335

   10 // 3 结果为 3

十、字节数组对象 --- 新增

(一) 初始化

  a = bytearray( 10 )

     # a 是一个由十个字节组成的数组,其每个元素是一个字节,类型借用 int

     # 此时,每个元素初始值为 0

(二) 字节数组 是可变的

a = bytearray( 10 )
a[0] = 25

     # 可以用赋值语句更改其元素,但所赋的值必须在 0 ~ 255 之间

(三)   字节数组的切片仍是字节数组

(四)   字符串转化为字节数组

 #coding=gbk
     s ="你好"
     b = s.encode( "gbk")     # 先将字符串按某种“GBK”编码方式转化为 bytes
     c = bytearray( b )          #再将 bytes 转化为 字节数组

     也可以写作

 c = bytearray( "你好", "gbk")

(五)   字节数组转化为字符串

 c = bytearray( 4 )
       c[0] = 65 ; c[1]=66; c[2]= 67; c[3]= 68
      s = c.decode( "gbk" )
       print ( s )

      # 应显示: ABCD           

(六) 字节数组可用于写入文本文件

#coding=gbk
f = open("c:\\1234.txt", "wb")
s = "张三李四abcd1234"
# -------------------------------
# 在 python2.4 中我们可以这样写:
# f.write( s )
# 但在 python 3.0中会引发异常
# -------------------------------
b = s.encode("gbk")
f.write( b )
c=bytearray( "王五","gbk")
f.write( c )
f.close()
input("?")

위 내용은 파이썬을 배우려면 지금 python2나 python3을 배워야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.