22
33![ ] ( http://image.iswbm.com/20200602135014.png )
44
5- ---
5+ ## 0. 去哪里找
66
7- 从今天开始,小明将和你一起过一下,那些在面试「Python开发」岗位时面试官喜欢问的问题。内容基础,但是你不一定会噢 。
7+ 这块的内容,你随便使用搜索引擎都可以查到 。
88
9- 这些问题全部来自个人经验,群友推荐以及网络上的帖子。如果你有好的问题,也可以随时向我提出(不要觉得简单),我会筛选后整理出来在这里,供大家学习取经,给大家在求职路上贡献一份力。
10-
11- 开篇讲些什么好呢?
12-
13- 今天就来罗列一下,Python2.x和3.x到底有哪些区别吧。
14-
15- ## 去哪里找
16-
17- 你随便全使用搜索引擎都可以查到这些资料,但是大家说的都是一些普遍都知道的事儿。或者都是抄来抄去,内容相差无几。
9+ 但是大家好像都在抄来抄去,内容相差无几。
1810
1911授人以鱼,不如授人以渔。
2012
3426接下来。和大家一起过一下,Python2.x和3.x到底有哪些区别,这不仅在你开发过程中需要考虑的,也是面试过程面试官经常会问及的。
3527
3628
37- ## 1.1.1 print
29+ ## 1. print
3830
3931在Python 2.6之前,只支持
4032```
@@ -52,7 +44,7 @@ print("hello")
5244print ("hello")
5345```
5446
55- ## 1.1.2 编码方式
47+ ## 2. 编码方式
5648
5749在Python2.x中,默认使用` ASCII ` 编码。
5850
@@ -76,7 +68,7 @@ print str1
7668
7769所以我们可以在程序中,随意的使用中文(但并不推荐),不会报错。
7870
79- ## 1.2.3 除法运算
71+ ## 3. 除法运算
8072
8173Python 2.x中除法运算,整数间运算只保留整数(向下取整)。
8274``` python
@@ -108,7 +100,7 @@ Python 3.x中除法运算,全部保留小数(即使能被整除)。
108100-3.0
109101```
110102
111- ## 1.2.4 异常捕获
103+ ## 4. 异常捕获
112104
113105在 Python 3 中,只能使用 ` as ` 作为关键词。而在Python 2中经常使用 ` except Exception, e `
114106使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。
@@ -120,7 +112,7 @@ Python 2.6已经支持这两种语法。
120112
121113在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。
122114
123- ## 1.2.5 xrange
115+ ## 5. xrange
124116
125117首先,要了解的是,xrange是只有在Python2.x中才有的产物。
126118
@@ -139,7 +131,7 @@ xrange(1, 5)
139131range(0, 10)
140132```
141133
142- ## 1.2.6 用户输入
134+ ## 6. 用户输入
143135
144136在2.x 中,有两个函数。raw_input()和input()。
145137- raw_input():将所有输入作为字符串看待,返回字符串类型。
@@ -148,7 +140,7 @@ range(0, 10)
148140在3.x 中,对这两个函数进行整合,只留下一个` input() ` ,既可输入数字,也可输入字符串,返回的是字符串类型。
149141
150142
151- ## 1.2.7 数据类型
143+ ## 7. 数据类型
152144
153145Python 3.x 一个很重要的特性是,对字符串和二进制数据流做了明确的区分。
154146
@@ -160,7 +152,7 @@ Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符
160152
161153还有一点是,3.X去除了long类型,取代它的是整型(int)。3.x的整型是没有限制大小的,可以当做long类型使用, 但实际上由于机器内存的有限,我们使用的整数是不可能无限大的。
162154
163- ## 1.2.8 函数式编程
155+ ## 8. 函数式编程
164156
165157在Python中,我们常常使用到的map,filter,reduce,在2.x和3.x中也有所不同。
166158
@@ -195,13 +187,13 @@ Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符
195187```
196188对于 reduce 函数,它在 Python 3.x 中已经不属于 built-in 了,被挪到 functools 模块当中。
197189
198- ## 1.2.9 协程关键字
190+ ## 9. 协程关键字
199191
200192在Python3.3后,协程中,新增了yield from 和 async/await 关键字,这在2.x中是没有。
201193
202194关于yield from的语法剖析,可以前往查看我的另一篇文章。
203195
204- ## 1.2.10 类的类型
196+ ## 10. 类的类型
205197
206198Python2.x 默认使用经典类,只有显示继承object才是新式类。
207199
@@ -217,7 +209,7 @@ class Cls(object):
217209 pass
218210```
219211
220- ## 1.2.11 变量作用域
212+ ## 11. 变量作用域
221213
222214- 在2.x中无法将局部变量声明为全局变量。
223215- 在3.x中可以使用nonlocal语法将局部变量声明为全局变量。
@@ -236,7 +228,7 @@ foo()
236228# 3.x输出:200
237229```
238230
239- ## 1.2.12 元类的使用
231+ ## 12. 元类的使用
240232
241233在2.x 中
242234``` python
@@ -257,17 +249,17 @@ class Person(metaclass=MetaPerson):
257249 pass
258250```
259251
260- ## 1.2.13 模块变化
252+ ## 13. 模块变化
261253
262254- 去掉了一些模块。由于不常用,这里就不列举了。
263255- 新增了一些模块。比如:concurrent.futures,asyncio等
264256- 修改了一些模块。比如:Queue改成queue。
265257
266258----
267259
268- 大概就是这些内容,可能还有更细微的差别,这些内容要前往官网查看。但是那些对于我们普通开发者来说,并不那么重要。完全可以不去关注。
260+ 大概就是这些内容,可能还有更细微的差别,这些内容要前往官网查看。
269261
270- 实际上,当我熟悉一个版本后,基本上是可以无缝过渡到另一个版本的。这篇文章,更多的是为了科普和应对面试 。
262+ 但是那些对于我们普通开发者来说,并不那么重要,个人感觉可以不去关注 。
271263
272264----
273265
0 commit comments