Heim  >  Artikel  >  Backend-Entwicklung  >  Soll ich jetzt Python2 oder Python3 lernen, um Python zu lernen?

Soll ich jetzt Python2 oder Python3 lernen, um Python zu lernen?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-06-15 09:26:323222Durchsuche

Welche Python-Version soll ich jetzt lernen? Python2 oder Python3?

Verwandte Empfehlungen: „Python-Video

Soll ich jetzt Python2 oder Python3 lernen, um Python zu lernen?

Für diejenigen, die gerade erst anfangen, Python zu lernen, sollten Sie direkt die 3 lernen Serienversion, da die 2-Serienversion laut Pythons Entwicklungsplan in Zukunft nicht mehr unterstützt wird. Da die 2-Serienversion jedoch über ein breites Anwendungsspektrum und eine große Anzahl verfügt von historischen Legacy-Projekten, Python-Versionswechsel Der Plan verlief ebenfalls nicht reibungslos (immer wieder verschoben). Für Python ist natürlich eine milde Versionswechselrichtlinie richtig, da es sonst zu vielen Kompatibilitätsproblemen kommen kann.

Obwohl die Python-Sprache in den letzten Jahren große Aufmerksamkeit erregt hat und einen offensichtlichen Aufwärtstrend aufweist, handelt es sich bei der Python-Sprache selbst nicht um eine aufstrebende Programmiersprache. Python und Java sind Programmiersprachen, die erstmals auf den Markt kamen Gleichzeitig wurde die Java-Sprache „schon in jungen Jahren berühmt“, während die Python-Sprache ein „Spätzünder“ ist. Die Python-Sprache wurde in den Anfängen hauptsächlich im Bereich der Webentwicklung eingesetzt. Aufgrund von PHP und Java fand Python jedoch keine große Beachtung.

Mit der Entwicklung von Big Data und künstlicher Intelligenz wurden die Vorteile der Python-Sprache deutlich. Dies ist auch ein wichtiger Grund, warum Python große Aufmerksamkeit und Verwendung gefunden hat Der Schwerpunkt liegt auf Big Data (Analyse) und Bereichen im Zusammenhang mit künstlicher Intelligenz (maschinelles Lernen, Verarbeitung natürlicher Sprache, Computer Vision).

Maschinelles Lernen ist derzeit eine beliebte Richtung, und es ist bequemer, Python zum Implementieren von Algorithmen zu verwenden, sodass Entwickler eher bereit sind, Python zu verwenden. Maschinelles Lernen ist auch eine der wichtigen Methoden der Big-Data-Analyse (die andere sind statistische Methoden), daher gibt es derzeit viele praktische Anwendungen für maschinelles Lernen. Als ich mich anfangs mit der Entwicklung maschinellen Lernens beschäftigte, verwendete ich die Java-Sprache. Später wurde es praktischer, nachdem ich zu Python gewechselt war.

Python hat derzeit neben Big Data und künstlicher Intelligenz auch bestimmte Anwendungen im Embedded-Bereich. Mit der Entwicklung des Internets der Dinge sind auch die Entwicklungsaussichten der Embedded-Entwicklung relativ breit.

Der Unterschied zwischen Python2 und Python3

Neben der Einführung des Imports aus der Zukunft ist es auch notwendig, den Unterschied zwischen den beiden

Drucken zu verstehen Funktion: (Python3 print ist eine Funktion und muss in Klammern eingeschlossen werden; print in Python 2 ist eine Klasse)

Die print-Anweisung von Python 2 wurde durch die Funktion print() ersetzt, was bedeutet, dass wir dies tun müssen Wickeln Sie das, was wir drucken möchten, in Klammern ein.

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

Benutzereingaben durch input() analysieren: (Python3 The Die in Python2 erhaltene Eingabe ist vom Typ int und die raw_input von Python2 ist vom Typ str.) Vereinheitlichen: Eingabe wird in Python3 verwendet, row_input wird in Python2 verwendet und die Eingabe ist str

Lucky Darüber hinaus ist die Das Problem der Speicherung von Benutzereingaben als str-Objekt wurde in Python 3 gelöst. Um das gefährliche Verhalten beim Lesen von Nicht-String-Typen in Python 2 zu vermeiden, müssen wir stattdessen raw_input() verwenden.

Python 2

Python 2.7.6

[GCC 4.0.1 (Apple Inc. Build 5493)] auf Darwin

Typ „ Hilfe“, „Urheberrecht“, „Credits“ oder „Lizenz“ für weitere Informationen.

>>> 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)] auf Darwin

Geben Sie „Hilfe“, „Copyright“, „Credits“ oder „Lizenz“ ein, um weitere Informationen zu erhalten.

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

Teilbar: (keine große Auswirkung)( In Python3, / bedeutet echte Division, % bedeutet Rest, // bedeutet Bodendivision (das Ergebnis wird in Python2 gerundet); / bedeutet, dass das Ergebnis basierend auf dem Dezimalpunkt von Divisor und Dividend erhalten wird, // bedeutet auch Bodendivision) Zur Vereinheitlichung: In Python3 bedeutet / echte Division, % bedeutet Rest, // das Ergebnis wird gerundet, in Python2 bedeutet der Dezimalpunkt / echte Division, % bedeutet Rest, // das Ergebnis wird gerundet

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

Laufergebnis:

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)

Laufergebnis:

Python 3.4.1

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

in Python 3 löst xrange( ) eine benannte Ausnahme aus.
Die Verwendung von xrange() zum Erstellen iterierbarer Objekte ist in Python 2 sehr beliebt. Zum Beispiel: for-Schleife oder Listen-/Satz-/Wörterbuchverständnis.

Dies verhält sich sehr ähnlich wie ein Generator (d. h. „Lazy Evaluation“). Aber dieses xrange-iterable ist unendlich, was bedeutet, dass es unendlich durchlaufen werden kann.

Aufgrund ihrer verzögerten Auswertung ist die Funktion xrange() schneller als range(), wenn Sie sie nur einmal durchlaufen müssen (z. B. in einer for-Schleife). Es wird jedoch nicht empfohlen, statt einer einmaligen Iteration mehrere Iterationen durchzuführen, da der Generator jedes Mal von vorne beginnt.

Vergleich zwischen Python 2.4 und Python 3.0

1. Druckänderungen von Anweisung zu Funktion

Original: Druck 1, 2+3

geändert zu: print ( 1, 2+3 )

2. range und xrange

Original: range( 0, 4 ) Das Ergebnis ist die Liste [0,1,2,3 ]

Geändert in: list( range(0,4) )

Original: xrange( 0, 4 ) Geeignet für die variable Steuerung der for-Schleife

改为: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("?")

Das obige ist der detaillierte Inhalt vonSoll ich jetzt Python2 oder Python3 lernen, um Python zu lernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn