range()函数的含义
range函数是一个用来创建
算数级
数序列的通用函数,返回一个[start, start + step, start + 2 * step, ...]结构的整数序列
range()函数的特性
注意:range函数返回一个左闭右开([left,right))的序列数
>>> list=range(10)
>>> print list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(10)
range(0, 10)
>>> type(range(10))
<class 'range'>
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> type(list(range(10)))
<class 'list'>
for i in range(1,10)在python2和python3中都可以使用,但是要生成1-10的列表,就需要用list(range(1,10))
def read_in_block(file_path):
BLOCK_SIZE = 1024
with open(file_path, "r") as f:
while True:
block = f.read(BLOCK_SIZE) # 每次读取固定长度到内存缓冲区
if block:
yield block
else:
return # 如果读取到文件末尾,则退出
def test3():
file_path = "/tmp/test.log"
for block in read_in_block(file_path):
print block
def test4():
with open("/tmp/test.log") as f:
for line in f:
print line
for line in f 这种用法是把文件对象f
当作迭代对象, 系统将自动处理IO缓冲和内存管理, 这种方法是更加pythonic
的方法。 比较简洁。
Pythonic追求的是对Python语法的充分发挥,写出的代码带Python味儿,而不是看着向C或JAVA
这个就面试题的要点是几个特殊Python3字符串前缀u、b、r
所以这道题的正确答案是r
前缀
assert 语句,在需要确保程序中的某个条件一定为真才能让程序运行的话就非常有用
下面做一些assert用法的语句供参考:
assert 1==1
assert 2+2==2*2
assert len(['my boy',12])<10
assert range(4)==[0,1,2,3]
这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断。
assertEqual 和 assertNotEqual
使用方法:
assertEqual(first,second,msg)
其中first
与second
进行比较,如果相等则通过;
msg为失败时打印的信息,选填;
断言assertNotEqual反着用就可以了。
assertTrue和assertFalse
使用方法:
assertTrue(expr,msg)其中express输入相应表达式,如果表达式为真,则pass; msg选填; 断言assertFalse如果表达式为假,则pass
assertIsNone和assertIsNotNone
使用方法: assertIsNone(obj,msg)检查某个元素是否存在
不可变数据类型:
数值型、字符串型string和元组tuple
不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用id()方法可以打印对象的id.
可变数据类型:
列表list和字典dict
允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化
。
相同的值在内存中可能会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
好啦,今天的面试题分解又完毕了,是不是又学到新东西了呢,希望在你升职加薪的路上为你“点火”