##函数基础
不定长传参
不定长传参数 *args **kawargs
def print_me(arg1,*args):#*args为不定长参数,其中的args看为元组,kwargs字典
print(arg1)
for arg in args:
print("*args: ",arg)
print_me(10)
print_me(70,60,50)
#70
#*args:60
#*args:50
data=(60,50)
print_me(70,*data)
#70
#*args:60
#*args:50
###可变对象与不可变对象
- Python中,一切皆是对象
- 可变对象:定义以后可改变
- 列表 list
- 字典 dict
- 不可变对象:定义后不能修改,但是可以覆盖
- 数值型:整型int,浮点型float……
- 字符串:str
- 元组:tuple
- 空:None
默认参数必须指向不可变对象
def func(num=None):
if num is None:
num=[]
num.append(0)
return num
###作用域
变量类型 | 作用域 | 访问权限 |
---|---|---|
局部变量 | 函数内部 | 被声明的函数内访问 |
全局变量 | 函数外部 | 整个程序范围内访问 |
全局变量和局部变量最好不重名
- 匿名函数lambda
- 定义函数执行的行为/效果
- 函数名=lambda 参数列表:表达式
- map/reduce
-
map(函数,序列) [对序列中的元素执行函数操作]
data=["abx\n","xyz\n"] clean_data=map(lambda x: x[:-1],data) print(list(clean_data))
-
- reduce(函数,序列)#迭代运算
```python
from functools import reduce
result=reduce(lambda x,y: x+y,[47,11,42,13])
print(list(result))
```
- filter(函数,序列)
- 返回序列中使得函数成立的元素,并组成新的序列