目录
4. 说说你知道的Python3 和 Python2 之间的区别
5. Python3 和 Python2 中 int 和 long 区别?
11. 例举你知道 Python 对象的命名规范,例如方法或者类等
15. Python 代码缩进中是否支持 Tab 键和空格混用。
****************python特性****************
1. 谈谈对 Python 和其他语言的区别
略
2. 简述解释型和编译型编程语言
编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。
解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束。
3. Python 的解释器种类以及相关特点?
CPython
由C语言开发的 使用最广的解释器
IPython
基于cpython之上的一个交互式计时器 交互方式增强 功能和cpython一样
PyPy
目标是执行效率 采用JIT技术 对python代码进行动态编译,提高执行效率
JPython
运行在Java上的解释器 直接把python代码编译成Java字节码执行
IronPython
在微软 .NET 平台上的解释器,把python编译成. NET 的字节码
4. 说说你知道的Python3 和 Python2 之间的区别
一是print的区别。python2中print是语句,要显示的对象不需要括号;python3中print是函数,要显示的对象需要加上括号。如:python2中的print ‘A=’,5。在python3中改为print(‘A=‘,5)
二是字符串存储的区别。python2中 字符串以 8-bit 字符串存储,python3中字符串以 16-bit Unicode 字符串存储。存储格式得到了升级
三是除法的区别。python2中 10/3=3,python3中改为10/3=3.3333333333333335,更精确啦,而10//3=3,这个//才是取整运算符。除法有了多样性选择
四是纠错机制的区别。python2 中try:...except Exception, e :...,改为python3中的 try:...except Exception as e :...。加了个as使代码更清晰啦
四在 Python 2 中 xrange() 创建迭代对象的用法是非常流行的,在 Python 3 中,range() 是像 xrange() 那样实现以至于一个专门的 xrange() 函数都不再存在(在 Python 3 中 xrange() 会抛出命名异常)。range与xrange的区别是:(1)range,函数说明:range([start,]stop[,step]),根据start和stop的范围以及步长step生成一个序列(2)xrange,函数说明:功能和range一样,所不同的是生成的不是一个数组而是一个生成器
(3)主要区别:xrange比range的性能和效率更优,所以,在Range的方法中,它会生成一个list的对象,但是在XRange中,它生成的却是一个xrange的对象。当返回的东西不是很大的时候,或者在一个循环里,基本上都是从头查到底的情况下,这两个方法的效率差不多。但是,当返回的东西很大,或者循环中常常会被Break出来的话,还是建议使用XRange,这样既省空间,又会提高效率。
五 八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。在Python 3.x中,表示八进制字面量的方式只有一种,就是0o1000。
六Python 2.x中不等于有两种写法 != 和 <>Python 3.x中去掉了<>, 只有!=一种写法,还好,我从来没有使用<>的习惯
七 Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long
2)新增了bytes类型,对应于2.X版本的八位串
八 是打开文件的区别。python2中用file(.....)或者open(……)来打开文件,改为python3中只能用open(.....)来打开文件。更符合python之禅中简单明了无歧义的要求
九 是键盘输入的区别。从键盘录入一个字符串,python2中是 raw_input( "提示信息" ),python3中是 input( "提示信息" )。让代码更简洁啦
八是库的变化。python2中的urllib、urilib2两个库合并为python3中的urllib库;python2中的urllib2.urlopen()变为python3中的urllib.request.urlopen();python2中的urllib2.Request()变为python3中的urllib.request.Request();python2中的urllib.quote(text)变为python3中的urllib.parse.quote(text);python2中的urllib.urlencode 变为python3中的urllib.parse.urlencode;python2中的urllib2 变为python3中的urllib.request;python2中的urlparse 变为python3中的 urllib.parse;python2中的cStringIO变为python3中的io
以上的区别都描述的比较具体,便于理解记忆,网上也有更抽象更全面的描述,这里没有引用;
5. Python3 和 Python2 中 int 和 long 区别?
如果32位的编译系统,两者都是4字节,即32bits,如果是64位的编译系统,int是4字节,long是8字节
6. xrange 和 range 的区别
见4
****************编码规范****************
7. 什么是 PEP8?
PEP8是一个编程规范,内容是一些关于如何让你的程序更具可读性的建议
8. 了解 Python 之禅么?
打开界面 import this 可显示
9. 了解 dosctring 么?
三重引号中的信息
10. 了解类型注解么?
用 :
类型
的形式指定函数的 参数类型 ,用 ->
类型
的形式指定函数的 返回值 类型
def add(x, y):
return x + y
可以写成:
def add(
x:int,
y:int) ->
int:
return x + y
这样对于函数读者,可以快速知道输入输出的数据类型;
11. 例举你知道 Python 对象的命名规范,例如方法或者类等
如无特殊情况, 文件一律使用 UTF-8 编码
如无特殊情况, 文件头部必须加入#--coding:utf-8--标识
统一使用 4 个空格进行缩进
每行代码尽量不超过 80 个字符(在特殊情况下可以略微超过 80 ,但最长不得超过 120) 理由: 这在查看 side-by-side 的 diff 时很有帮助 方便在控制台下查看代码 太长可能是设计有缺陷
简单说,自然语言使用双引号,机器标示使用单引号,因此 代码里 多数应该使用 单引号
自然语言 使用双引号 “…” 例如错误信息;很多情况还是 unicode,使用u”你好世界”
机器标识 使用单引号 ‘…’ 例如 dict 里的 key 正则表达式 使用原生的双引号 r”…”
文档字符串 (docstring) 使用三个双引号 “”“……”“”
12. Python 中的注释有几种?
单行注释符号,#
多行注释符号,3对单引号’’’ ‘’’或者3对双引号“”” “””
13. 如何优雅的给一个函数加注释?
同10,函数注释也就是类型注解
14. 如何给变量加注释?
直接加#好了
15. Python 代码缩进中是否支持 Tab 键和空格混用。
不支持,但是notpad++,首选项/语言中可以将TAP替换为空格,对于python文件来说只存在空格即使在编辑的时候你用了tap,这样就不怕python报错了;
16. 是否可以在一句 import 中导入多个库?
可以,建议每次一个
17.在给 Py 文件命名的时候需要注意什么?
有意义
18. 例举几个规范 Python 代码风格的工具
pylint
19. 列举 Python 中的基本数据类型?
int, bool, str, list, tuple, dict, set
20. 如何区别可变数据类型和不可变数据类型
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
不可变数据类型: int, str, tuple
可变数据类型:set, list, dict