相干引荐:《python视频》
关于刚最先进修Python的人来讲,应当直接进修3系列版本,因为依据Python的生长规划,将来将不再支撑2系列版本,现在Python也正处在版本转换的过程当中,然则因为2系列版本有普遍的运用和大批的汗青遗留项目,所以Python的版本切换设计也并不顺遂(频频推延)。固然,关于Python来讲,温文的版本切换政策是准确的,不然有可能会带来大批的兼容性题目。
Python言语虽然在近几年获得了普遍的关注,而且上升趋向显著,然则Python言语自身并非一门新兴的编程言语,Python与Java是一致时代面世的编程言语,只不过Java言语“幼年成名”,而Python言语则属于“大器晚成”。Python言语初期主要运用于Web开辟范畴,然则因为PHP和Java的缘由,Python并没有获得普遍的注重。
跟着大数据和人工智能的生长,Python言语的上风才获得了表现,这也是Python获得普遍关注和运用的主要缘由,所以当前Python比较热点的方向就鸠合在大数据(剖析)和人工智能相干方向(机械进修、自然言语处置惩罚、计算机视觉)。
机械进修方向是现在比较热点的方向,而且采纳Python来完成算法完成是比较轻易的,所以开辟人员更情愿采纳Python。机械进修同时也是大数据剖析的主要体式格局之一(另一种是统计学体式格局),所以现在机械进修的落地运用也比较多。我在初期处置机械进修开辟的时刻一直在运用Java言语,厥后改用Python以后确切要越发轻易一些。
除了大数据和人工智能方向以外,现在Python在嵌入式范畴也有肯定的运用,跟着物联网的生长,嵌入式开辟的生长前景也比较辽阔。
python2和python3的区分
除了引入import from future,相识一下二者的区分也是很必要的
print函数:(Python3中print为一个函数,必需用括号括起来;Python2中print为class)
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中input获得的为str;Python2的input的到的为int型,Python2的raw_input获得的为str范例)一致一下:Python3顶用input,Python2顶用row_input,都输入为str
荣幸的是,在 Python 3 中已处理了把用户的输入存储为一个 str 对象的题目。为了防止在 Python 2 中的读取非字符串范例的风险行动,我们不能不运用 raw_input() 替代。
Python 2
Python 2.7.6
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> 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)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> my_input = input('enter a number: ') enter a number: 123 >>> type(my_input) <class 'str'>
整除:(没有太大影响)(Python3中/示意真除,%示意取余,//示意地板除(效果取整);Python2中/示意依据除数被除数小数点位获得效果,//一样示意地板除)一致一下:Python3中/示意真除,%示意取余,//效果取整;Python2中带上小数点/示意真除,%示意取余,//效果取整
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
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('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)
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() 函数 比 range() 更快(比方 for 轮回)。尽管如此,对照迭代一次,不发起你反复迭代屡次,因为生成器每次都从头最先。
python 2.4 与 python 3.0 的比较
一、 print 从语句变成函数
原: print 1, 2+3
改成: print ( 1, 2+3 )
二、range 与 xrange
原 : range( 0, 4 ) 效果 是 列表 [0,1,2,3 ]
改成:list( range(0,4) )
原 : xrange( 0, 4 ) 适用于 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("?")
以上就是如今学python该学python2照样python3?的细致内容,更多请关注ki4网别的相干文章!