Python34-06-函数(function)

#函数(function)的参数(arguments)传递

 

##位置传递

##def f(a,b,c):

##    return a+b+c

##

##print(f(1,2,3))

 

##关键字传递

##有些情况下,用位置传递会感觉比较死板。关键字(keyword)传递是根据每个参数的名字传递参数。关键字并不用遵守位置的对应关系。依然沿用上面f的定义,更改调用方式:

##print(f(c=3,b=2,a=1))

##关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前

##print(f(1,c=3,b=2))

 

 

##参数默认值

##在定义函数的时候,使用形如a=19的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值

##def f(a,b,c=10):

##    return a+b+c

##

##print(f(3,2))

##print(f(3,2,1))

 

 

#包裹传递

##定义函数时,我们有时候并不知道调用的时候会传递多少个参数。这时候,包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会非常有用。

##包裹传递的关键在于定义函数时,在相应元组或字典前加*或**

 

##包裹位置传递

##def func(*name):

##    print (type(name))

##    print (name)

##

##func(1,4,6)

##func(5,6,7,1,2,3)

##两次调用,尽管参数个数不同,都基于同一个func定义。在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple),这就是包裹位置传递

 

##包裹关键字传递

##def func(**dict):

##    print (type(dict))

##    print (dict)

##

##func(a=1,b=9)

##func(m=2,n=1,c=11)

##在dict前加**

 

##解包裹

##*和**,也可以在调用的时候使用,即解包裹(unpacking)

def func(a,b,c):

    print (a,b,c)

 

args = (1,3,4)

func(*args)

##所谓的解包裹,就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c

 

##对词典的解包裹

dict = {'a':1,'b':2,'c':3}

func(**dict)

##在传递词典dict时,让词典的每个键值对作为一个关键字传递给func

 

 

##混合

##在定义或者调用参数时,参数的几种传递方式可以混合。但在过程中要小心前后顺序。

##基本原则是,先位置,再关键字,再包裹位置,再包裹关键字,

##并且根据上面所说的原理细细分辨

 ##lambda函数

##func = lambda x,y: x + y

##print (func(3,4))

##lambda生成一个函数对象。该函数参数为x,y,返回值为x+y。函数对象赋给func。func的调用与正常函数无异

##以上定义可以写成以下形式

##def func(x, y):

##    return x + y

##print (func(3,4))

 

##函数作为参数传递--函数可以作为一个对象,进行参数传递

##def test(f, a, b):

##    print ('test')

##    print (f(a, b))

 

##test(func, 3, 5)

 

##也可以如下写

##test((lambda x,y: x**2 + y), 6, 9)

 

 

##map()函数 --- Python的内置函数。它的第一个参数是一个函数对象

##re = map((lambda x: x+3),[1,3,5,6])

##这里,map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表。

##map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。

##map通过读入的函数(这里是lambda函数)来操作数据(这里“数据”是表中的每一个元素,“操作”是对每个数据加3)。

 

re = map((lambda x,y: x+y),[1,2,3],[6,7,9])

##map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数

 

##filter()函数

#第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True,则该次的元素被储存于返回的表中。filter通过读入的函数来筛选数据。同样,在Python 3.X中,filter返回的不是表,而是循环对象

def func(a):

    if a > 100:

        return True

    else:

        return False

 

print filter(func,[10,56,101,500])

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值