zoukankan      html  css  js  c++  java
  • python2.7过渡到python3.6时遇到的差异总结

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://www.cnblogs.com/yy-cxd/p/11793150.html

    *** python2.7版本只支持到2020年1月1日 ,建议新学习者安装python3版本。

     1.2.1 终端输入区别

    Python2.7:

    (1)input() 可以自动判断其类型,即输入什么类型的数据,就是什么类型,没有引号的英文字符会被判断为变量,会在全文中找对应的变量。如果str类型必须加单引号或者双引号,不然类型不对,报错;

    (2)raw_input() 输入所有数据都按照str类型处理,如果是整形输入,使用时要str转int,用(int)强制转换;

    Python3.6:


    python3将raw_input和input进行了整合,只有input,输入的为str


    (1)input() 输入所有数据都按照str类型处理,如果是整形输入,使用时要str转int,用(int)强制转换;

    (2)raw_input() 不再使用; 

    1.2.2 print区别

    Python2.7:print 为class ,后面直接跟打印数值;

    Python3.6:print() 为函数,打印数值必须用括号括起来;

    1.2.3 编码区别

    Python2.7:默认ASCII处理字符(字符串以8-bit存储),因此使用汉字前加# -*- coding:utf-8 -*- ;

    Python3.6:全部用的是Unicode(万国码、统一码固定2字节,字符串以16-bit 存储)字符集,utf-8(可动态变化1-6字节,en:1byte  zh:3bytes) 是对Unicode的压缩和优化,因此支持中文;


     1.2.4 字符串编码区别

    Python2.7:在Python2中,作为两种类型的字符序列,str与unicode需要转换,它们是这样转换的.
    str——decode方法——》unicode——encode方法——》str   u'string'       

    Python3.6:在python3中可以这样对应这转换,配合上面的图,也许会好理解一点。
    byte——decode(解码)方法——》str——>encode(编码)方法——》byte   b'string'   

     1.2.5 真除、整除区别

    Python2.7:带上小数点/表示真除,%表示取余,//表示地板除(结果取整);


    Python3.6:/表示真除,%表示取余,//表示地板除(结果取整);
     

     1.2.6 range、xrange区别

    Python2.7:range()生成一个列表,xrange()生成一个生成器;


    Python3.6:list( range(0,4) )列表,range()生成一个生成器,xrange()不再使用;

    python3中没有了xrange,python3的range就是xrange,也就是说range()返回的不再是一个列表而是一个class,如果要得到列表需要list(),for i in range(3)照样可以这样使用

     1.2.7 字典类方法区别

    Python3.6:字典的items()和keys()返回的不再是一个列表而是一个class,需要用list()转换为list;

    python3中字典类方法has_key()也不再支持,用运算符处理,eg:'abc' in dic

     1.2.8 打开文件区别

    Python2.7:file()、open()都可打开文件;


    Python3.6:file()不再使用,只用open()打开文件;

     1.2.9 八进制标识区别

    Python2.7:八进制以数字0开头,例如oct(64)0100

    Python3.6:八进制:以数字0开头,第二位用字母o,后面跟上你的八进制数,例如oct(64)0o100

    • 以前确实是用 o ,但新版本为了防止字母 o 与数字 0 之间产生混淆,舍弃了字母 o 这个前缀
    • 这就解释了为什么 x 还在用,而 o 改为

    在python2.7中可以使用os.chmod("/tmp/foo.txt", 777),但切换到python3.6中这样使用会报错,正确的使用应该是os.chmod("/tmp/foo.txt", 0o1411)

    参考链接:

    python2.7和python3.6常用区别 

    python2.7过渡到python3.6时遇到的差异总结  

    [Python3 填坑] 004 关于八进制  

  • 相关阅读:
    用DropDownList实现的省市级三级联动
    hcheck 脚本
    转 How To Stop A Running Job Using DBMS_JOB
    转 UTL_FILE Throws ORA-29284 Or ORA-29283 When Attempting To READ File
    转 Monitoring Restore/Recovery Progress
    转 禁用HAIP,cluster_interconnects配错了集群无法启动
    转 LIST INCARNATION OF DATABASE
    转 AIX7.2+11.2.0.4RAC实施
    opatch on-line patch and standby-fisrt patch
    转 Oracle]如何在Oracle中设置Event
  • 原文地址:https://www.cnblogs.com/yy-cxd/p/11793150.html
Copyright © 2011-2022 走看看