filter(func, seq)函数
- 是一个高阶函数,它的第一个参数是函数,第二个参数是序列对象
- 传给filter函数的函数(第一个参数),它接受一个参数,执行的结果必须为True或False
- 序列对象中每一个元素分别作为函数的参数,计算结果为True则保留,为False舍弃
from random import randint
# def func1(x):
# return True if x % 2 ==1 else False
if __name__ == '__main__':
nums = [randint(1,100) for i in range(10)]
print(nums)
# result = filter(func1,nums)
# print(list(result))
result2 = filter(lambda x:True if x % 2 ==1 else False,nums)
print(list(result2))
map(func, seq)函数
- map是一个高阶函数,它的第一个参数是函数,第二个参数是序列对象
- 序列对象中的每个元素都将作为函数的参数进行处理,处理的结果全部保存下来
def func1(s):
return s + '.com'
if __name__ == '__main__':
alist = ['qq','sohu','163']
result = map(func1,alist)
print(list(result))
匿名函数
- 一般函数使用def定义,def后面是函数名
- 匿名函数就是没有名字的函数
- 使用lambda关键字定义
>>> def add(x, y):
... return x + y
...
>>> myadd = lambda x, y: x + y
>>> myadd(1, 2)
3
>>> add(1, 2)
3
参数组
- 定义参数时,参数前加\*表示使用元组接收参数
- 定义参数时,参数前加\*\*表示使用字典接收参数
- 传参时,参数前加\*表示把序列对象拆开
- 传参时,参数前加\*\*表示把字典拆开
>>> def func1(*args):
... print(args)
>>> func1()
()
>>> func1(123)
(123,)
>>> func1(123, 'bob', 'hello')
(123, 'bob', 'hello')
>>> def func2(**kwargs):
... print(kwargs)
...
>>> func2()
{}
>>> func2(name='bob', age=20)
{'name': 'bob', 'age': 20}
```
变量
全局变量:在函数外定义的变量,全局变量从它定义的位置到程序结束,一直可见可用
局部变量:在函数内定义的变量,只能在函数内使用
x=10
def func1():
print(x)
func1()
print(x) #x = 10
def func2():
global x
x =100
print(x)
func2()
print(x) ##x =100
### 偏函数
- 改造现有函数,将现有函数的一些参数固定下来,生成新函数
>>> from functools import partial
>>> def add(a,b,c,d,e):
... return a+b+c+d+e
...
>>> myadd = partial(1,2,3,4,add)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: the first argument must be callable
>>> myadd = partial(add,20,30,40,5) ##不管固定前面还是固定后面,函数名称必须写在第一个
>>> myadd(1)
96
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)