Python 面试快问快答,理论要的就是速度与精准,Python 面试题 No2
今天的面试题
第 1 题:python2 和 python3 的 range(100)的区别
range()函数的含义
range 函数是一个用来创建
算数级
数序列的通用函数,返回一个[start, start + step, start + 2 * step, ...]结构的整数序列
range()函数的特性
如果 step 参数缺省,默认 1;如果 start 参数缺省,默认 0。
如果 step 是正整数,则最后一个元素(start + i * step)小于 stop。
如果 step 是负整数,则最后一个元素(start + i * step)大于 stop。
step 参数必须是非零整数,否则抛出 VauleError 异常。
注意:range 函数返回一个左闭右开([left,right))的序列数
python2 中的 range 返回一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表
python3 中的 range 返回的是一个迭代器
for i in range(1,10)在 python2 和 python3 中都可以使用,但是要生成 1-10 的列表,就需要用 list(range(1,10))
第 2 题:在 Python 中读取大文件
利用生成器 generator
迭代器进行迭代遍历:for line in file
for line in f 这种用法是把文件对象f
当作迭代对象, 系统将自动处理 IO 缓冲和内存管理, 这种方法是更加pythonic
的方法。 比较简洁。
Pythonic 追求的是对 Python 语法的充分发挥,写出的代码带 Python 味儿,而不是看着向 C 或 JAVA
第 3 题:如何避免转义,给字符串加哪个字母表示原始字符串?
这个就面试题的要点是几个特殊 Python3 字符串前缀 u、b、r
无前缀 & u 前缀
字符串默认创建即以 Unicode 编码存储,可以存储中文。
b 前缀
字符串存储为 Ascll 码,无法存储中文。
r 前缀
与上述两种不是一样的东西了。r 前缀就相当于三引号,主要解决的是 转义字符,特殊字符 的问题,其中所有字符均视为普通字符。
所以这道题的正确答案是r
前缀
第 4 题:python 中断言方法举例?
assert 语句,在需要确保程序中的某个条件一定为真才能让程序运行的话就非常有用
下面做一些 assert 用法的语句供参考:
这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断。
assertEqual
assertNotEqual
assertTrue
assertFalse
assertIsNone
assertIsNotNone
assertEqual 和 assertNotEqual
assertEqual:如两个值相等,则 pass
assertNotEqual:如两个值不相等,则 pass
使用方法:
assertEqual(first,second,msg)
其中first
与second
进行比较,如果相等则通过;msg 为失败时打印的信息,选填;断言 assertNotEqual 反着用就可以了。
assertTrue 和 assertFalse
assertTrue:判断 bool 值为 True,则 pass
assertFalse:判断 bool 值为 False,则 Pass
使用方法:
assertTrue(expr,msg)其中 express 输入相应表达式,如果表达式为真,则 pass;msg 选填;断言 assertFalse 如果表达式为假,则 pass
assertIsNone 和 assertIsNotNone
assertIsNone:不存在,则 pass
assertIsNotNone:存在,则 pass
使用方法:assertIsNone(obj,msg)检查某个元素是否存在
第 5 题:列出 python 中可变数据类型和不可变数据类型,并简述原理
不可变数据类型:
数值型、字符串型 string 和元组 tuple
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用 id()方法可以打印对象的 id.
可变数据类型:
列表 list 和字典 dict
允许变量的值发生变化,即如果对变量进行 append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化
。
相同的值在内存中可能会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
写在后面
好啦,今天的面试题分解又完毕了,是不是又学到新东西了呢,希望在你升职加薪的路上为你“点火”
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/1a524c68516e71905c5784660】。文章转载请联系作者。
评论