【Python学习记录】2015-02-17

python函数的参数:

可变参数:

Python函数的参数是可以使用可变参数的.可变参数以一个list或tuple

def fun(*m):
<span style="white-space:pre">	</span>sum=0
<span style="white-space:pre">	</span>for n in m
<span style="white-space:pre">		</span>sum+=n
<span style="white-space:pre">	</span>return sum
fun(1,2,3)<span style="white-space:pre">	</span># output: 6
fun(2,5,6,9)<span style="white-space:pre">	</span># output: 22

l=[1,2,3,4]
fun(*l)<span style="white-space:pre">		</span># output: 10

关键字参数:

关键字参数允许传入带参数名的参数,这些关键字参数在函数内部形成一个dict

def fun(**kw):
<span style="white-space:pre">	</span>print kw
fun(name='xiaoming',age=7)<span style="white-space:pre">	</span># output: {'name'='xiaoming','age'=7}


d={'name'='xiaoming','age'=7}
fun(**d)<span style="white-space:pre">			</span># output: <span style="font-family: Arial, Helvetica, sans-serif;">{'name'='xiaoming','age'=7}</span>

参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。


生成器(generator)

我们知道,Python中允许有列表生成式([x*x for x in range(10)]). 但是有的时候当数据规模很大,我们可以考虑另一种形式:生成器.

生成器只需要把列表生成式的[ ]换成( )就可以实现,使用.next()方法可以依次取出元素.实际使用的时候,通常使用for来迭代.

g=(x*x for x in range(10))
g.next()<span style="white-space:pre">			</span># output: 1
g.next()<span style="white-space:pre">			</span># output: 4

for x in g:
<span style="white-space:pre">	</span>print x<span style="white-space:pre">			</span># output: 1 4 9 16 25 ...

另一种生成器的形式是函数生成器,函数中讲输出的位置换成 yield.这个函数就变成了生成器,每次使用 .next()方法的时候,都会执行到yield处停止, 下次再调用 .next()的时候,会从上次yield的位置继续执行. 同样,也可用for来迭代.

def fun(n):
<span style="white-space:pre">	</span>for x in range(n):
<span style="white-space:pre">		</span>yield x*x

o=fun(10)
o.next()<span style="white-space:pre">			</span># output: 1
o.next()<span style="white-space:pre">			</span># output: 4
<pre name="code" class="python">
</pre>for x in o:<span style="white-space:pre">	</span>print x<span style="white-space:pre">			</span># output: 1 4 9 16 25 ...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值