爬呀爬Xjm 阅读(31) 评论(0)

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