基于python2快速掌握python3

0. 前言

  1. 这是一篇road map。
  2. 如果你会python2,读完这篇文章之后,你将掌握python3

1. 为什么会出现python3

Why Python3 exists

  1. python2中的string类型存在歧义,它是一个C字符串也是一个str对象。

    python3去除这一不明确的string用法。
  2. python2 对unicode兼容不好。

    因为python的第一个版本早于unicode的第一个版本。
  3. python的后续版本不希望向后兼容1)和2)

基于以上三点,出现了python3. 总之就是想弄的更好又不想束手束脚。

2. python的禅

Zen of python

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

3. 基于python2的python3教程

Porting to Python3

3.1 不得不porting的两个理由

1. Python 3 is simply a nicer language than Python 2.
2. more code will be written in Python 3 than in Python 2 over the history of the Python language, so not porting means your project will eventually be left behind.

3.2 主要的区别

3.2.1 除法

python2里的除法是与C语言保持一致的,一个斜杠“/”代表向下取整。

python3里不在是这样,有两个符号表示除法“/”,和“//”

一个斜线‘/’代表严格意义的除法,结果是float类型。结果为int向下取整的除法是两个斜线‘//’。

3.2.2 类

python3中所有类派生自object类。

python2中不是这样的???好吧。。。

3.2.3 字符串与二进制

python2中用str对象表示字符串和二进制,用unicode对象表示unicode。

python3中用bytes对象表示二进制,用str对象表示一切text。

3.2.4 print

print从一个表达式变成了一个函数。所以在python3里,print需要加括号。像python2里那个的语法将报错。

3.2.5 异常捕获

在python3,多个异常类型,需要用括号括起来,如:

>>> import sys
>>> try:
... a = 1/'0'
... except (ZeroDivisionError, TypeError):

3.2.6 int和long

在python3里,int和long类型被合并。在数组后边加后缀L的语法会报错,如:

“1024L”

在python3里,0开头的数字也会报错。0o开头代表8进制,0x开头代表16进制。

3.2.7 unicode和binary

在python3里,

尽管这两个语法也好使:

u"", b""

但应该尽量选择用下面这种:

u(), b()

3.2.8 C扩展时的区别

python2的C扩展与python3不同,然后python2的本来我就不熟。略。

3.2.9 缩进

在python2里,一个tab和8个空格可能对等互换。也就是说在python2里,你可以一个tab和8个空格混用来缩进

解释器也不会报错。

在python3里,这样是不用的。一个tab只能与一个tab等价。

3.3 所有python2与python3之间的不同

differences


好了,现在可以快乐的python3了。

[dev][python] 从python2进阶到python3你都需要了解什么的更多相关文章

  1. 【python】python2.x 与 python3.x区别对照+缩进错误解决方法

    仅仅列出我用到的,不全. 划重点: 1. urllib2 用 urllib.request 代替 2. urllib.urlencode 用 urllib.parse.urlencode 代替 3. ...

  2. 在Windows下同时安装Python2.x和Python3.x

    前言: Python现在是两个版本共存,Python2.x和Python3.x都同时在更新.但是Python2.x和Python3.x的区别还是很多的(以后我可能会写一篇文章列举一下Python2.x ...

  3. python之路-python2.x与python3.x区别

    Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. Python2.x 与 Python3.x的区别: python2.x:源码混乱,重复代码较多,冗余. python3.x:源码规范,崇 ...

  4. Python第一天:python2.x和python3.x的区别

    查看Python版本 # python -V Python2.7.5是centos7中默认安装的Python [root@localhost ~]# python -V Python [root@lo ...

  5. python环境搭建-Linux系统下python2.7升级python3.5.2步骤

    首先Python 查看版本 , 在Linux下特别注意权限问题,创建目录时候切记给予权限 如果是 ubnutu 请使用首先切换到 sudo su , 否则 make install 会出现问题.. 升 ...

  6. python 内置2to3工具将python2代码转换为python3代码

    python2与python3代码不兼容,如果需要python2代码在python3环境下运行,需要将代码进行转换,本文介绍使用python3内置工具2to3.py对代码进行转换 一:2to3.py在 ...

  7. python:python2与python3共存时,pip冲突,提示Fatal error in launcher: Unable to create process using '"d:\python27\python2.exe" "D:\Python27\Scripts\pip2.exe" '

    问题背景: 机器上同时装了python2.和python3后,导致只能用pip3了,使用pip2时提示:Fatal error in launcher: Unable to create proces ...

  8. Python第五十一天 python2升级为python3

    Python第五十一天  python2升级为python3 公司使用的生产环境系统是centos7,所以这里以centos7系统为基础,讲解将python2升级为python3的方法 centos7 ...

  9. Python语言基础-语法特点、保留字与标识符、变量、基本数据类型、运算符、基本输入输出、Python2.X与Python3.X区别

    Python语言基础 1.Python语法特点 注释: 单行注释:# #注释单行注释分为两种情况,例:第一种#用于计算bim数值bim=weight/(height*height)第二种:bim=we ...

随机推荐

  1. 关于 min_25 筛的入门以及复杂度证明

    min_25 筛是由 min_25 大佬使用后普遍推广的一种新型算法,这个算法能在 \(O({n^{3\over 4}\over log~ n})\) 的复杂度内解决所有的积性函数前缀和求解问题(个人 ...

  2. 让CPU占用率曲线听你指挥

    使用GetTickCount()和Sleep(): Code#include <stdio.h> #include <unistd.h> #include <time.h ...

  3. 【原创】大数据基础之ElasticSearch(1)简介、安装、使用

    ElasticSearch 6.6.0 官方:https://www.elastic.co/ 一 简介 ElasticSearch简单来说是对lucene的分布式封装,增加了shard(每个shard ...

  4. ionic3 打包 混淆代码

    ionic3 项目中遇到安全漏洞 解决办法: https://www.npmjs.com/package/ionic-voricles-obfuscate 安装插件 cordova plugin ad ...

  5. vmware安装centOs操作系统配置网络的一系列问题

    1:最近公司在测试项目,需要在linux操作系统上面测试,可惜自己之前学linux操作系统不是很深,配置网络也不是很熟练,网上方法太多,但是不是很好用,确实难为了自己一把,在这里自己总结一下配置网络的 ...

  6. 527D.Clique Problem

    题解: 水题 两种做法: 1.我的 我们假设$xi>xj$ 那么拆开绝对值 $$xi-w[i]>x[j]+w[j]$$ 由于$w[i]>0$,所以$x[i]+w[i]>x[j] ...

  7. c# 向数据库插数据超过1000条

    今天想着如何大批量插入数据到数据库中  最开始的想法是使用insert循环插入 但每次都要创建数据库连接 这是非常消耗时间和消耗资源的事.后在网上看到了说使用SqlBulkCopy ,就看了看文档和别 ...

  8. P4147 玉蟾宫 二维DP 悬线法

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  9. ISP PIPLINE (七) gamma

    what is the gamma? CCD.CMOS成像方式是通过像点中的"硅"感受光线的强弱而获得画面.而硅感光是物理成像,它真实地反应光线强度的变化,来多少就输出多少,因此它 ...

  10. 第九篇 蓝图 blueprint

    在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_use ...