1、函数
1)参数传递
1)参数为不可变数据类型 string
umber uple
通过函数体不能修改函数外变量的值
2)参数为可变数据类型 listsetdict
通过函数体来改变函数外参数的值
2)参数类型
参数基本类型分为:必需参数,关键字参数,默认参数,不定长参数
1)必需参数:须以正确的顺序传入函数,调用时参数数量必须和声明时一样。
def a(name,age):
print(name,age)
a('鱼',18)
2)关键字参数:允许函数调用时参数顺序与声明不一致,因为解释器会根据参数名去匹配参数值的
def a(name,age):
print(name,age)
a(age=18,name='醉逍遥')
3)默认参数
def a1(name,age=35):
print(name,age)
a1('wly',19)
a1(name='大圣',age=18)
4)不定长参数:你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数
1)参数前面带*,把不确定长度的参数存储元组里,可以通过元组调用其中某一个参数
# def a(name,*a):
# print(name)
# print(a)
# print(a[0])
2)参数前面带**,把不确定长度的参数存储字典里
# def a3(name,**a):
# print(name)
# print(a,type(a))
# print(a["name3"])
3)*可以单独出现,调用的时候必须铜鼓关键字传参数
# def getstudent5(num1,num2,*,num4):
# return num1+num2+num4
#
# print(getstudent5(1,2,num4=4)) # 调用用关键字传入
3)函数嵌套
1)调用嵌套
def a7():
print('hello a')
def b7():
print("hello b")
a7()
b7()
2)定义嵌套
def a8():
print("hello a8")
def b():
print("hello b8")
b()
a8()
4)函数递归 一定注意死循环的问题,需要加判断条件,python中死循环是会有报错的
1)自己调用自己
def a9():
print("hello a9")
a9()
a9()
#调用其他函数
def a10():
print("hello a10")
b10()
def b10():
print("hello b10")
a10()
b10()
5)匿名函数
# 匿名函数
# 匿名函数语法结构:
# lambda 参数1,参数2,....:表达式
sum1=lambda a,b:a+b
print('匿名函数求和:',sum1(3,4))