python总结6
来源:互联网 发布:java实现线程安全 编辑:程序博客网 时间:2024/05/06 00:26
函数:
函数的定义:所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用
函数的使用包含两个步骤:
1. 定义函数—封装独立的功能
2. 调用函数—享受封装的成果
函数的作用:在开发程序时,使用函数可以提高编写的效率以及代码的重用
参数的作用:
1.函数,把具有独立功能的代码块组织为一个小的模块,在需要的时候调用
2. 函数调用的时候,安装函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递
形参和实参:
函数:
函数的定义:所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用
函数的使用包含两个步骤:
1. 定义函数—封装独立的功能
2. 调用函数—享受封装的成果
函数的作用:在开发程序时,使用函数可以提高编写的效率以及代码的重用
参数的作用:
1.函数,把具有独立功能的代码块组织为一个小的模块,在需要的时候调用
2. 函数调用的时候,安装函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递
形参和实参:
1.形参:定义函数时,小括号中的的参数,是用来接受参数用的,在函数内部作业变量使用
2. 实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的
随机数
函数名称 函数功能参数说明rand(d0, d1, …, dn) 产生均匀分布的随机数dn为第n维数据的维度
randn(d0, d1, …, dn) 产生标准正态分布随机数dn为第n维数据的维度
randint(low[, high, size, dtype]) 产生随机整数low:最小值;high:最大值;size:数据个数
random_sample([size]) 在[0,1)内产生随机数size:随机数的shape,可以为元祖或者列表,[2,3]表示2维随机数,维度为(2,3)
random([size]) 同random_sample([size])同random_sample([size])
ranf([size]) 同random_sample([size])同random_sample([size])
sample([size])) 同random_sample([size])同random_sample([size])
choice(a[, size, replace, p]) 从a中随机选择指定数据a:1维数组 size:返回数据形状
bytes(length) 返回随机位length:位的长度
生成器
生成器是这样一个函数,它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。
生成器不仅“记住”了它数据状态;生成器还“记住”了它在流控制构造(在命令式编程中,这种构造不只是数据值)中的位置。
生成器的特点:
生成器是一个函数,而且函数的参数都会保留。
迭代到下一次的调用时,所使用的参数都是第一次所保留下的,即是说,在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的
生成器表达式示例:
–sum(x** 2 for x in xrange(4))
–而不用多此一举的先构造一个列表:
–sum([x** 2 for x in xrange(4)])
•语法上和函数类似:
–区别:生成器使用yield语句返回一个值,而常规函数使用return语句返回一个值
•自动实现迭代器协议:
–对于生成器,Python会自动实现迭代器协议,(如for循环,sum函数)。由于生成器自动实现了迭代器协议,所以,我们可以调用它的next()方法,并且,在没有值可以返回的时候,生成器自动产生StopIteration异常
•状态挂起:
–生成器使用yield语句返回一个值。yield语句挂起该生成器函数的状态,保留足够的信息,以便之后从它离开的地方继续执行
•生成器的好处是延迟计算,一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用
–sum([ifor i inxrange(10000000000)])
–sum(ifor i inxrange(10000000000))
•对于前一个表达式还没有看到最终结果电脑就已经卡死,对于后一个表达式,几乎没有什么内存占用。
•代码简洁,易于阅读
–求一段文字中,每个单词出现的位置
defindex_words(text):
result=[]
if text:
result.append(0)
for index,letter in enumerate(text,1):
if letter == ' ':
result.append(index)
return result
result=index_words("I am rong")
for a in result:
print(a)
使用生成器的情况:
defindex_words(text):
if text:
yield 0;
for index,letter in enumerate(text,1):
阅读全文