7.函数和模块

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))

原文地址:https://www.cnblogs.com/Murraya/p/14020970.html