函数02--深入
程序员文章站
2022-03-18 16:49:26
1、概念 形参(形式参数):定义函数时小括号的变量,本质是变量。参数必须按照顺序传递,个数目前要对应(之后就可以不用,看下去你就知道)。 实参(实际参数):调用函数时给函数传递的数据,本质是值。 2、返回值 需求:编写函数,实现功能,给函数两个数,返回两个数的和。 3、参数传递 值传递:传递不可变类 ......
1、概念
形参(形式参数):定义函数时小括号的变量,本质是变量。参数必须按照顺序传递,个数目前要对应(之后就可以不用,看下去你就知道)。
实参(实际参数):调用函数时给函数传递的数据,本质是值。
1 def myPrint(str, age): #形参 2 print(str, age) 3 myPrint("sunck is a good man ",16) #实参 4 5 #执行结果 6 sunck is a good man 16
2、返回值
需求:编写函数,实现功能,给函数两个数,返回两个数的和。
1 def sum(n1,n2): 2 #将结果返回给函数的调用者 3 return n1 + n2 4 #执行return后的代码就结束了,不执行 5 print("***********") 6 res = sum(1,2) 7 print(res)
3、参数传递
值传递:传递不可变类型(string,tuple,number)
引用传递:传递可变类型(dict,ist,set)
1 def fun1(num): 2 num = 10 3 print(num) 4 temp = 20 5 fun1(temp) 6 print(temp)
1 def fun2(list): 2 list[0] = 100 3 li = [1,2,3,4,5] 4 fun2(li) 5 print(li)
4、正式参数类型
- 关键字参数:允许函数调用时参数的顺序与定义时的不一致
- 默认参数:调用函数时,如果没有传递参数,则使用默认参数
- 不定长参数:能处理比定义时更多的参数
1 def myPrint(str, age): 2 print(str,age) 3 #使用关键字参数 4 myPrint(age = 16,str = "sunck is a good man ")
1 #调用函数时,如果没有传递参数,则使用默认参数 2 def myPrint(str = "sunck is a good man",age = 18): 3 print(str,age) 4 myPrint() 5 6 #要用默认参数,将默认参数放到最后 7 def myPrint1(str, age = 18): 8 print(str,age) 9 myPrint("kaige")
1 #加了星号的变量存放所有未命名的变量参数,如果在函数调用时,没有指定参数,它就是一个空元组 2 def fun1(name, *args): 3 print(name) 4 print(type(args)) 5 for x in args: 6 print(x) 7 8 fun1("sunck","good","nice","handsome") 9 def sum(*j): 10 sum = 0 11 for i in j: 12 sum += i 13 return sum 14 print(sum(1,2,3,4)) 15 16 #**代表键值对的参数字典,和*所代表的意义类似 17 def fun2(**kwargs): 18 print(kwargs) 19 print(type(kwargs)) 20 fun2(x=1, y=2, z=3) 21 22 23 #执行结果 24 sunck 25 <class 'tuple'> 26 good 27 nice 28 handsome 29 10 30 {'x': 1, 'y': 2, 'z': 3} 31 <class 'dict'>
5、匿名函数
概念:不使用def这有的语句定义函数,使用lambda来创建匿名函数
特点:
- lambda只是一个表达式,函数体比def简单
- lambda主体是表达式,而不是代码块,仅仅只能在lambda表达式中封装简单的逻辑
- lambda有自己的命名空间,且不能访问*参数列表之外或全局命名空间的参数
- 只能写一行
格式:lambda 参数1,参数2,……参数n:expression
举例:sum=lambda n1,n2:n1+n2
print(sum(1,2))
结果:3
上一篇: HTML 链接