Python基础之函数(2)

参数传递

单参数:

  1. def add(x):
  2. a=10
  3. return a+x
  4. [in]:x=3
  5. add(x)
  6. [out]:13

参数收集: 
既然有很多不确定性,那么函数的参数的个数,也当然有不确定性,函数怎么解决这个问题呢?python用这样的方式解决参数个数的不确定性:

 
  1. def func(x,*arg):
  2. print(x)
  3. result = x
  4. print(arg)
  5. for i in arg:
  6. result +=i
  7. return result
  8. print func(1,2,3,4,5,6,7,8,9)
  9. 结果
  10. 1
  11. (2,3,4,5,6,7,8,9)
  12. 45

从上面例子可以看出,如果输入的参数个数不确定,其它参数全部通过*arg,以元组的形式由arg收集起来。对照上面的例子不难发现:

  • 值1传给参数x
  • 值2,3,4,5,6,7,8,9被塞入一个tuple里面,传给arg

除了用args这种形式的参数接受多个值之外,还可以用*kargs的形式接收数值,有点不一样:

 
  1. def foo(**kargs):
  2. print kargs
  3. foo(a=1,b=2,c=3)
  4. [out]:{'a': 1, 'b': 2, 'c': 3}

如果用**kargs的形式收集值,会得到dict类型的数据,但是,需要在传值的时候说明“键”和“值”,因为在字典中是以键值对形式出现的。 
python支持多种范型的语言,可以进行函数式编程 
filter、map、reduce、lambda、yield

lambda函数使用方法:

  • 在lambda后面跟变量
  • 变量后面是冒号
  • 冒号后面是表达式,表达式计算结果就是本函数的返回值 
    lambda arg1,arg2,...argN:expression using arguments

注意虽然lambda函数可以接收任意多个参数并且返回单个表达式的值,但是**lambda函数不能包含命令,包含表达式不能超过一个。不要试图向lambda函数中塞入太多东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长

map基本样式: 
map(func,seq) 
func是一个函数,seq是一个序列对象。在执行的时候,序列对象中的每个元素,按照从左到右的顺序,依次被取出来,并塞入到func那个函数里面,并将func的返回值依次存到一个list中。

编写函数的注意事项

编写函数,在开发实践中是非常被咬和常见的,一般情况,写的函数应该是:

1.尽量不要使用全局变量。 
2.如果参数是可变类型数据,在函数内,不要修改它。 
3.每个函数的功能和目标要单纯,不要试图一个函数做很多事情。 
4.函数的代码函数尽量少。 
5.函数的独立性越强越好,不要跟其他的外部东西产生关联。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值