语言特性
1.谈谈对 Python 和其余语言的区别python
语言特色:简洁、优雅,省略了各类大括号和分号,还有一些关键字,类型说明; 语言类型:解释型语言,运行的时候是一行一行的解释,并运行,因此调试代码很方便,开发效率很高; 第三方库:python是开源的,而且python的定位时任由其发展,应用领域不少好比Web,运维,自动化测试,爬虫,数据分析,人工智能。Python具备很是完备的第三方库; Python和Java相比 Python比Java要简单。Python是函数为一等公民的语言,而Java是类为一等公民的语言。Python是弱类型语言,而Java是强类型语言.; Python和C相比 对于使用: Python的类库齐全而且使用简洁,不多代码实现的功能用C可能要很复杂对于速度; Python的运行速度相较于C,绝对是很慢了。Python和CPython解释器都是C语言编写的
2.简述解释型和编译型编程语言程序员
编译性和解释型语言
解释型:就是边解释边执行;
编译性:编译后再执行
3.Python 的解释器种类以及相关特色?编程
CPython
c语言开发的 使用最广的解释器
IPython
基于cpython之上的一个交互式计时器 交互方式加强 功能和cpython同样
PyPy
目标是执行效率 采用JIT技术 对python代码进行动态编译,提升执行效率
JPython
运行在Java上的解释器 直接把python代码编译成Java字节码执行
IronPython
运行在微软 .NET 平台上的解释器,把python编译成. NET 的字节码
4.说说你知道的Python3 和 Python2 之间的区别?数组
按照当前时间点(Python 2.7 和 Python3.6),从宏观上介绍下Python 3和Python 2的区别,并举一些对应常见的例子: 1. 统一了字符编码支持。 2. 增长了新的语法。print/exec等成为了函数,格式化字符串变量,类型标注,添加了nonlocal、yield from、async/await、yield for关键词和__annotations__、__context__、__traceback__、__qualname__等dunder方法。 3. 修改了一些语法。metaclass,raise、map、filter以及dict的items/keys/values方法返回迭代对象而不是列表,描述符协议,保存类属性定义顺序,保存关键字参数顺序 4. 去掉了一些语法。cmp、<>(也就是!=)、xrange(其实就是range)、再也不有经典类 5. 增长一些新的模块。concurrent.futures、venv、unittest.mock、asyncio、selectors、typing等 6. 修改了一些模块。主要是对模块添加函数/类/方法(如functools.lru_cache、threading.Barrier)或者参数。 7. 模块更名。把一些相关的模块放进同一个包里面(如httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib放进了http里面,urllib, urllib2, urlparse, robotparse放进了urllib里面),个例如SocketServer改为了socketserver,Queue改为queue等 8. 去掉了一些模块或者函数。gopherlib、md五、contextlib.nested、inspect.getmoduleinfo等。去掉的内容的缘由主要是2点:1. 过期的技术产物,已经没什么人在用了;2. 出现了新的替代产物后者被证实存在乎义不大。理论上对于开发者影响很小。 9. 优化。从新实现了dict能够减小20%-25%的内存使用;提高pickle序列化和反序列化的效率;collections.OrderedDict改用C实现;经过os.scandir对glob模块中的glob()及iglob()进行优化,使得它们如今大概快了3-6倍等.. 这些都是喜大普奔的好消息,一样开发者不须要感知,默默的就会让结果变得更好。 10. 其余。构建过程、C的API、安全性等方面的修改,一般对于开发者不须要关心。
5.Python3 和 Python2 中 int 和 long 区别?安全
python2中有long类型
python3中没有long类型,只有int类型
6.xrange 和 range 的区别?cookie
xrange用于返回xrange对象,而range用于返回一个数组。无论那个范围多大,xrange都使用一样的内存。 注意:python3中没有xrange。 python3中演示: >>> range(10) range(0, 10) >>> type(range(10)) <class 'range'>
编码规范less
7.什么是 PEP8?运维
1. 变量 常量:大写加下划线 USER_CONSTANT。 私有变量 : 小写和一个前导下划线 _private_value。 Python 中不存在私有变量一说,如果遇到须要保护的变量,使用小写和一个前导下划线。但这只是程序员之间的一个约定,用于警告说明这是一个私有变量,外部类不要去访问它。但实际上,外部类仍是能够访问到这个变量。 内置变量 : 小写,两个前导下划线和两个后置下划线 __class__两个前导下划线会致使变量在解释期间被改名。这是为了不内置变量和其余变量产生冲突。用户定义的变量要严格避免这种风格。以避免致使混乱。 2. 函数和方法 整体而言应该使用,小写和下划线。但有些比较老的库使用的是混合大小写,即首单词小写,以后 每一个单词第一个字母大写,其他小写。但如今,小写和下划线已成为规范。 私有方法 :小写和一个前导下划线,这里和私有变量同样,并非真正的私有访问权限。同时也应该注意通常函数不要使用两个前导下划线(当遇到两个前导下划线时,Python 的名称改编特性将发挥做用)。 特殊方法 :小写和两个前导下划线,两个后置下划线这种风格只应用于特殊函数,好比操做符重载等。 函数参数 : 小写和下划线,缺省值等号两边无空格 3. 类 类老是使用驼峰格式命名,即全部单词首字母大写其他字母小写。类名应该简明,精确,并足以从中理解类所完成的工做。 4. 模块和包 除特殊模块 __init__ 以外,模块名称都使用不带下划线的小写字母。 5. 关于参数 5.1 不要用断言来实现静态类型检测。断言能够用于检查参数,但不该仅仅是进行静态类型检测。Python 是动态类型语言,静态类型检测违背了其设计思想。断言应该用于避免函数不被毫无心义的调用。 5.2 不要滥用 *args 和 **kwargs。*args 和 **kwargs 参数可能会破坏函数的健壮性。它们使签名变得模糊,并且代码经常开始在不该该的地方构建小的参数解析器。 6. 其余 6.1 使用 has 或 is 前缀命名布尔元素 is_connect = True has_member = False 6.2 用复数形式命名序列 members = ['user_1', 'user_2'] 6.3 用显式名称命名字典 person_address = {'user_1':'10 road WD', 'user_2' : '20 street huafu'} 6.4 避免通用名称 诸如 list, dict, sequence 或者 element 这样的名称应该避免。 6.5 避免现有名称 诸如 os, sys 这种系统已经存在的名称应该避免。 7. 一些数字 一行列数 : PEP 8 规定为 79 列。根据本身的状况,好比不要超过满屏时编辑器的显示列数。 一个函数 : 不要超过 30 行代码, 便可显示在一个屏幕类,能够不使用垂直游标便可看到整个函数。 一个类 : 不要超过 200 行代码,不要有超过 10 个方法。一个模块 不要超过 500 行。
8.了解 Python 之禅么?socket
import this "The Zen of Python, by Tim Peters 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!"
9.了解 dosctring 么?async
就是函数方法的内置解释,随便import一个模块,好比re正则,输出re.__doc__就出现相似help(re)的文档内容,不过比help()简短多了。
10.了解类型注解么?
Python解释器会在运行的时候动态判断变量和参数的类型,这样的好处是编写代码速度很快,很灵活,可是坏处也很明显,很差维护,可能代码写过一段时间从新看就很难理解了,由于那些变量、参数、函数返回值的类型,全都给忘记了。
并且当你在读别人的代码的时候,也没法一眼看出变量或者参数的类型,常常要本身推敲,这样给学习带来了很大的障碍。
因此Python3里有了这个新特性,能够给参数、函数返回值和变量的类型加上注解,不过这个仅仅是注释而已,对代码的运行来讲没有任何影响,变量的真正类型仍是会有Python解释器来肯定,你所作的只是在提升代码的可读性,仅此而已。