Maison >développement back-end >Tutoriel Python >Dois-je apprendre python2 ou python3 maintenant pour apprendre python ?
Quelle version de Python dois-je apprendre maintenant ? python2 ou python3 ?
Recommandations associées : "Vidéo Python"
Pour ceux qui commencent tout juste à apprendre Python, vous devriez apprendre les 3 séries version directement , car selon le plan de développement de Python, la version de la série 2 ne sera plus prise en charge à l'avenir. Python est actuellement en cours de conversion de version. Cependant, car la version de la série 2 a un large éventail d'applications et un grand nombre. des projets hérités historiques, changement de version Python Le plan n'a pas non plus été fluide (reporté à plusieurs reprises). Bien entendu, pour Python, une politique de changement de version douce est correcte, sinon cela peut entraîner de nombreux problèmes de compatibilité.
Bien que le langage Python ait reçu une grande attention ces dernières années et ait une tendance évidente à la hausse, le langage Python lui-même n'est pas un langage de programmation émergent. Python et Java sont des langages de programmation sortis au cours des dernières années. à la même époque. Le langage Java "est devenu célèbre dès son plus jeune âge", tandis que le langage Python est "à floraison tardive". Au début, le langage Python était principalement utilisé dans le domaine du développement Web. Cependant, à cause de PHP et Java, Python n’a pas reçu une grande attention.
Avec le développement du Big Data et de l'intelligence artificielle, les avantages du langage Python se sont reflétés. C'est également une raison importante pour laquelle Python a reçu une attention et une utilisation généralisées. Par conséquent, la direction populaire actuelle de Python est. axé sur les orientations liées au big data (analyse) et à l'intelligence artificielle (apprentissage automatique, traitement du langage naturel, vision par ordinateur).
L'apprentissage automatique est actuellement une direction populaire, et il est plus pratique d'utiliser Python pour implémenter des algorithmes, les développeurs sont donc plus disposés à utiliser Python. L'apprentissage automatique est également l'une des méthodes importantes d'analyse du Big Data (l'autre étant les méthodes statistiques), il existe donc actuellement de nombreuses applications pratiques de l'apprentissage automatique. Lorsque j'étais engagé dans le développement d'apprentissage automatique au début, j'utilisais le langage Java. Plus tard, cela est devenu plus pratique après être passé à Python.
Outre le big data et l'intelligence artificielle, Python a actuellement également certaines applications dans le domaine de l'embarqué. Avec le développement de l'Internet des objets, les perspectives de développement du développement embarqué sont également relativement larges.
La différence entre python2 et python3
En plus d'introduire l'importation depuis le futur, il est également nécessaire de comprendre la différence entre les deux
imprimer function : (Python3 print est une fonction et doit être mis entre parenthèses ; print en Python 2 est une classe)
L'instruction print de Python 2 a été remplacée par la fonction print(), ce qui signifie que nous devons enveloppez ce que nous voulons imprimer entre parenthèses dans les objets .
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
Analyser les entrées de l'utilisateur via input() : (Python3 Le l'entrée obtenue en Python2 est de type int, et le raw_input de Python2 est de type str.) Unify : l'entrée est utilisée en Python3, row_input est utilisée en Python2 et l'entrée est str
Lucky De plus, le le problème du stockage des entrées utilisateur en tant qu'objet str a été résolu dans Python 3. Pour éviter le comportement dangereux lié à la lecture de types non-chaînes dans Python 2, nous devons plutôt utiliser raw_input().
Python 2
Python 2.7.6
[GCC 4.0.1 (Apple Inc. build 5493)] sur Darwin
Tapez « help", "copyright", "credits" ou "licence" pour plus d'informations.
>>> my_input = input('enter a number: ') enter a number: 123 >>> type(my_input) <type 'int'> >>> my_input = raw_input('enter a number: ') enter a number: 123 >>> type(my_input) <type 'str'>
Python 3
Python 3.4.1
[GCC 4.2.1 (Apple Inc. build 5577)] sur Darwin
Tapez « aide », « copyright », « crédits » ou « licence » pour plus d'informations.
>>> my_input = input('enter a number: ') enter a number: 123 >>> type(my_input) <class 'str'>
Divisible : (pas beaucoup d'impact)( Dans Python3, / signifie vraie division, % signifie reste, // signifie division en étage (le résultat est arrondi) ; en Python2, / signifie que le résultat est obtenu en fonction de la virgule décimale du diviseur et du dividende, // signifie également division en étage) Pour unifier : / en Python3 signifie vraie Division, % signifie reste, //le résultat est arrondi ; en Python2, le point décimal / signifie vraie division, % signifie reste, //le résultat est arrondi
Python 2
print 'Python', python_version() print '3 / 2 =', 3 / 2 print '3 // 2 =', 3 // 2 print '3 / 2.0 =', 3 / 2.0 print '3 // 2.0 =', 3 // 2.0
résultat d'exécution :
Python 2.7.6
3 / 2 = 1 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
Python 3
print('Python', python_version()) print('3 / 2 =', 3 / 2) print('3 // 2 =', 3 // 2) print('3 / 2.0 =', 3 / 2.0) print('3 // 2.0 =', 3 // 2.0)
résultat d'exécution :
Python 3.4.1
3 / 2 = 1.5 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0
module xrange :
Dans Python 3, range() est implémenté comme xrange() afin qu'une fonction xrange() dédiée n'existe plus (dans Python 3 xrange( ) lèvera une exception nommée).
L'utilisation de xrange() pour créer des objets itérables est très populaire en Python 2. Par exemple : boucle for ou compréhension de liste/ensemble/dictionnaire.
Cela se comporte beaucoup comme un générateur (c'est-à-dire une "évaluation paresseuse"). Mais ce xrange-iterable est infini, ce qui signifie que vous pouvez parcourir l'infini.
En raison de son évaluation paresseuse, la fonction xrange() est plus rapide que range() si vous devez la parcourir une seule fois (comme une boucle for). Cependant, plutôt que d’effectuer une itération une fois, il n’est pas recommandé d’itérer plusieurs fois car le générateur repart de zéro à chaque fois.
Comparaison entre python 2.4 et python 3.0
1. Imprimer les changements de l'instruction à la fonction
Original : imprimer 1, 2+3
remplacé par : print ( 1, 2+3 )
2. range et xrange
Original : range( 0, 4 ) Le résultat est une liste [0,1,2,3]
Modifié en : list( range(0,4) )
Original : xrange( 0, 4 ) Convient pour le contrôle variable de la boucle for
改为: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("?")
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!