第一次
定义一个带有默认的函数
“”"
为什么默认参数要写到后面
第一个数值,一定会给第一个参数,所以第一个参数一定会有数据,除非你不传值
“”"
def add(x,y=10):
sum01=x+y
return sum01
“”"
1.add(2) x=2 y=10
2.add(2,3) x=2 y=3
"""
print(add(2))
print(add(2,3))
“”"
能不能传参传入一个序列类型,比如list,让他默认是[]
“”"
def add(list01=[]):
list01.append(1)
return list01
#第一次调用
print(add()) #[1]
#第二次调用
print(add()) #[1, 1]
#第三次调用
print(add()) #[1, 1, 1]
“”"
一个* :代表的是可变参数(就是可以是多个值)
“”"
def add(x,*y):
sum01=x
for i in y:
sum01 += i
return sum01
print(add(1,2,3,4,5)) #15
“”"
** :可以是任意 键值(字典) 作为参数
**y就相当于字典类型
“”"
def func_add(x,**y):
sum01=x
#切记这里是字典的循环
for k,v in y.items():
print(k,v)
#把v(值)进行和x相加
sum01 += v
return sum01
“”"
判断name是否等于main,如果等于main就执行,不等于main就不执行
main在Java中叫主函数,也是程序入口,必不可少
name什么时候等于main
1.执行本文件的时候,name==main
2.在被import导入到别的文件的时候,name==文件名字
“”"
if __name__ == "__main__":
#调用 a=3,b=4,c=5 -----> {"a":3,"b":4,"c":5}
print(func_add(1,a=3,b=4,c=5)) #13
def func_add(x,**y):
sum01 = x
for k,v in y.items():
print(k,v)
sum01 *= v
return sum01
print(func_add(1,a=2,b=4,c=1,d=3)) #24
第二次
def func_a(x):
return x*2
xxy=map(func_a,[1,2,3,4,5])
print(list(xxy)) #[2, 4, 6, 8, 10]
def func_add(x):
return x>0
wd=filter(func_add,[1,9,-10,8,3,-6,-2,4])
print(list(wd)) #[1, 9, 8, 3, 4]
from functools import reduce
def func_add(x,y):
return x%y
b=reduce(func_add,[80,9,5,2])
print(b) #1
list01=["张三","李四","王五","赵六","翠花"]
list02=[20,30,18,90,80]
c=zip(list01,list02)
print(list(c)) #[('张三', 20), ('李四', 30), ('王五', 18), ('赵六', 90), ('翠花', 80)]
第三次
def fo1(x):
def fo2(y):
return x//y
return fo2
f=fo1(6)
a=f(4)
print(a)
第四次
from functools import partial
def fo1(x,y):
return x//y
a=partial(fo1,y=2)
f=a(8)
print(f)
第五次
list01=[1,2,3,4]
“”"
第一种普通函数
“”"
def func_add01(list01):
list02=[]
for i in list01:
list02.append(i+1)
return list02
“”"
第二种生成器
“”"
def func_add02(list01):
for i in list01:
yield i+1
“”"
第三种高阶函数
map(func,list01) 转换
"""
def func_add04(x):
for i in list01:
return x+1
map(func_add04,list01)
“”"
lambda 表达式
1.把函数进行简写
2.利用高阶函数map()
“”"
#把add04进行简写---lambda x:x+1
lambda x:x+1
map(lambda x:x+1,list01)