创建函数的一般形式
def function_name(parameters):
function_body
函数参数注意事项
- 参数值传递:引用?传值?
- 收集参数
- map,filter,reduce
1. 参数值传递:引用?传值?
针对第一条,我们可以参考如下文章
参数值传递:引用?传值?
2.收集参数 如果不知道用户要输入多少参数,我们可以用*号来将 剩余 的参数全部收集起来,如下例
In [1]: def test(*para):
...: return para
In [2]: test('abc')
Out[2]: ('abc',)
In [3]: test('abc','bcv')
Out[3]: ('abc', 'bcv')
可以看到*号的作用是将括号中的剩余参数收集起来,形成了一个元组。
如果需要收集关键词参数,我们可以用**号,见下例
In [4]: def test2(**para):
...: return para
In [5]: test2(a=1,b=3,c=4)
Out[5]: {'a': 1, 'b': 3, 'c': 4}
可以看到,**将关键词参数收集成一个字典形式。这和字典的生成方式有些相似.
map,filter,reduce函数
map函数将序列中的元素全部传给一个指定的函数。filter函数可以基于一个返回布尔值的函数来对元素进行过滤。reduce函数将序列中的前两个元素传给一个指定的函数,然后将结果和第三个元素传给相同的函数,循环进行。
#map
In [13]: map(str,[1,2,3,4])
Out[13]: ['1', '2', '3', '4']
#filter
In [31]: def test(string):
...: return string.islower()
...:
...: filter(test,['abc','VVVVV'])
Out[31]: ['abc']
#reduce
In [34]:
...: def test(string1,string2):
...: return string1+string2
...: reduce(test,['1+','2+','3'])
Out[34]: '1+2+3'