函数的定义
函数的参数传递
函数参数调用时的内存使用
1 ''' 2 在函数调用过程中,进行参数的传递 3 4 如果是不可变对象,在函数体的修改不会影响实参的值arg1的修改为100,不会影响n1的值 5 6 如果是可变对象,在函数体的的修改会影响到实参的值arg2的修改,append(10),会影响到n2的值 7 8 参数的变不变化取决于对象的类型 9 '''
函数返回值
函数的返回值
(1)如果函数没有返回值【函数执行完毕之后,不需要给调用处提供数据】return可以省略不写
(2)函数的返回值,如果是1个,直接返回类型
(3)函数的返回值,如果是多个,返回的结果为元组
函数的参数定义
默认值参数
个数可变的参数
有两种
1 # 2 # @author:浊浪 3 # @version:0.1 4 # @time: 2021/4/7 9:14 5 # 6 7 8 def fun(*args): 9 print(args) 10 11 fun(10) 12 fun(20,30,40) # 元组形式 13 14 def fun1(**args): 15 print(args) 16 17 # fun1(20) # 报错 18 fun1(a = 1) 19 fun1(a = 1, b = 2) # 字典形式 20 21 ''' 22 def fun2(*args,*a): 23 pass 24 以上代码,程序会报错,个数可变的位置参数,只能是1个 25 26 def fun2(**args,**args): 27 pass 28 以上代码,程序会报错,个数可变的关键字参数,只能是1个 29 ''' 30 31 def fun2(*args1, **args2): 32 pass 33 34 ''' 35 ’def fun3(**args1,*arg2): 36 pass # 37 以上代码不能执行 38 在一个函数的定义过程中,既有个数可变的关键字形参,也有个数可变的位置形参, 39 要求,个数可变的位置形参,放在个数可变的关键字形参之前 40 '''
参数总结
1 # 2 # @author:浊浪 3 # @version:0.1 4 # @time: 2021/4/7 9:25 5 # 6 7 def fun(a, b, c): 8 print('a=', a) 9 print('b=', b) 10 print('c=', c) 11 12 fun(10,20,30) # 位置传参 13 lst = [100,200,300] 14 fun(*lst) # 在函数调用时,将列表中的每个元素都转换为位置实参传入 15 16 fun(a=10,b=20,c=30) # 关键字实参 17 dit = {'a':111,'b':222,'c':333} 18 fun(**dit) # 在函数调用时,将字典中的键值对都转换为关键字实参传入 19 fun(*dit) # 这里输出会变成 a , b, c 20 21 22 def fun4(a,b,*,c,d):#从*之后的参数,在函数调用时,只能采用关键字参数传递 23 print('a=', a) 24 print('b=', b) 25 print('c=', c) 26 print('d=', d) 27 # 调用fun4函数 28 #fun4(10,20,30,40) #位置实参传递 29 fun4(a=10, b=20, c=30, d=40) #关键字实参传递# 30 fun4(10, 20, c=30, d=40)#前两个参数,采用的是位置实参传递,而c,d采用的是关键字实参传递 31 '''需求,c,d只能采用关键字实参传递'''
上述顺序都可以