python 基础学习3-函数

时间:2023-01-27 15:23:15

1. 函数参数-默认参数

  python函数也可以跟C语言一样,在函数的形参中设定默认值。

  >>> def test(flag, port = 8080)

  ... print port,flag

  默认参数可以节省比较多的时间,一般设定都是比较合适的值。

2.函数参数-可变长参数

  有时候可能需要传入的参数是不确定的,这时候可以使用可变长度的参数列表,类似C语言中的varargs参数,python的可变长度参数有2种形式:非关键字的可变长度参数和关键字的可变长度参数。

  非关键字可变长度参数:指参数是元组类型(tuple)。一般参数前面使用*表示。

  

def test(flag, *testtuple):

  print flag

  print testtuple

test(1)

输出:

>>>
1
()

test(1,4,5,6,7)

输出:

>>>
1
(4, 5, 6, 7)

  关键字可变长度参数:指参数是字典类型,一般参数前面使用**表示,具有键-值对。

def test(flag, **testdict):     print flag     print testtuple

test(1)

输出:

>>>
1
{}

3. 函数式编程

  lambda表达式:是一个快速的函数表达方式,必须是在一行,不是代码块。

  >>> f=lambda a,b,c:a+b+c
  >>> f(2,3,5)
  10

  filter函数:对给定的序列进行筛选,如果结果为真,将被添加到一个新的序列中。

  

  >>> def f1(x):

    if x>5:

       return True

    else:   return False

  >>> ls=[1,3,0,-2,5,8,2,56,6,2,9]

  >>> filter(f1,ls)

  [8, 56, 6, 9]

  map函数:对给定的序列调用对应函数,将结果对应到序列的每个位置上,得到一个具有所有返回值的序列。map(func,seq1,seq2...),如果func为空,则相当于zip的功能。

  >>> l1=[0,1,2,3,4,5]
  >>> l2=[2,3,4,5,6,7]
  >>> map(f2,l1,l2)
  [2, 4, 6, 8, 10, 12]

  reduce函数:reduce(func,seq1,seq2...), 即为化简,将上一次迭代的结果与下一个seq序列执行二元func函数。最终获得一个值,化繁为简。

  >>> from functools import reduce

   >>> def f3(x,y):  return x+y

  >>> sum = reduce(f3,(12,3,4))

  >>> print sum

  19