函数

定义一个可变参数函数

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

定义可变参数,在参数前加上*,调用函数时,可以传入任意参数,包括0个参数。因为在函数调用时,这任意个参数会自动组装成一个tuple。

>>> calc(1, 2)

python还允许在list和tuple前加*号,将其转化为可变参数传入。

>>> nums = [1, 2, 3]
>>> calc(*nums)

关键字参数允许我们传入任意个喊参数名的参数。这些参数在传入时自动组装成一个dict

def person(name, age, **kw):
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

也可以只传入必选参数

>>> person('Michael', 30)

也可以先组装一个dict,再把dict作为关键字参数传入

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)

要限制关键字参数的名字,使用命名关键字参数,参数前需要一个特殊分割符 *,  *,后的参数被认为时命名关键字参数

def person(name, age, *, city, job):
>>> person('Jack', 24, city='Beijing', job='Engineer')

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数不再需要 *,

def person(name, age, *args, city, job):

高阶函数的使用:

map()将传入的函数依次作用到序列的每个元素,并将结果作为新的Interator返回

>>> def f(x):
...     return x * x
...
>>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> list(r)
[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce()把一个函数作用在一个序列上,这个函数必须接受两个参数,reduce()把结果继续和序列的下一个元素进行累计运算

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

filter()函数用于过滤序列

和map()一样,接受一个函数和一个序列,把函数依次作用在序列的每个元素,然后根据返回值时True还是False,决定保留还是丢弃元素

def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

sorted函数也是高阶函数,除了普通的排序,它还可以接受一个key函数来实现自定义排序

按绝对值大小排序

>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]

忽略大小写排序

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']

忽略大小写并反向排序

>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True)
['Zoo', 'Credit', 'bob', 'about']

匿名函数

def f(x):
    return x * x   = lambda x : x * x

匿名函数只能有一个表达式,不用写return,返回值就是表达式的值

也可以把匿名函数作为返回值返回

def build(x, y):
    return lambda: x * x + y * y









阅读更多
文章标签: python
个人分类: python
上一篇python基础
下一篇面向对象编程
想对作者说点什么? 我来说一句

API函数API函数API函数API函数

2008年09月05日 946KB 下载

C++函数C++函数C++函数

2008年11月26日 82KB 下载

现代数学基础丛书].[整函数

2007年10月07日 2.46MB 下载

JSTL函数JSTL函数

2009年11月20日 26KB 下载

EXCEL函数速查资料

2009年05月23日 52KB 下载

复变函数 复变函数 复变函数

2008年12月04日 4.95MB 下载

复变函数导论

2018年01月15日 17.5MB 下载

复变函数PPT详解教程

2009年11月22日 1.77MB 下载

没有更多推荐了,返回首页

关闭
关闭