欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

函数02--深入

程序员文章站 2022-06-27 22:15:04
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、正式参数类型

  • 关键字参数:允许函数调用时参数的顺序与定义时的不一致
  • 默认参数:调用函数时,如果没有传递参数,则使用默认参数
  • 不定长参数:能处理比定义时更多的参数
函数02--深入
1 def myPrint(str, age):
2     print(str,age)
3 #使用关键字参数
4 myPrint(age = 16,str = "sunck is a good man ")
关键字参数
函数02--深入
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")
默认参数
函数02--深入
 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