函数参数和返回值的作用
函数根据 有没有参数以及有没有返回值,可以相互结合,一共有四种组合形式
1.无参数,无返回值
2.无参数,有返回值
3.有参数,无返回值
4.有参数,有返回值
- 函数:封装功能独立的代码,在需要时通过函数名被调用,可以直接访问全局变量。
- 返回值:向外界报告函数的执行结果
- 参数:外界希望在函数内部处理的数据
定义函数时,是否接受参数,或者是否返回结果,是根据实际的功能需求来决定的!
注意:
(1)一个函数只能有一个返回结果
(2)如果想要多个返回结果,可以使用元祖
(3)如果想提取元祖中的值,可以使用索引,但是一般不推荐,容易混淆,更好的解决方式是使用多个变量来接受返回值。
交换两个数字
需求:1.有两个整数变量,a=6,b=100
2.不使用其他变量,交换两个变量的值
解法1:
#使用临时变量
c=b
b=a
a=c
解法2:
# 不使用临时变量
a = a+b
b = a-b
a = a-b
解法3 :python专有
a,b = (b,a)
a,b =b,a # 等号右边是省略了括号的元祖
- 1.在函数内部,无论参数是可变还是不可变,针对参数使用赋值语句,不会影响调用函数时传递的实参变量。
- 2.如果传递的参数是可变类型,在函数内部使用方法修改了数据的内容,外部的数据也会受到影响而改变。
- 3.对列表使用+=,实质上是对列表运用了extend方法,而不是相加之后再赋值。
缺省参数
- 定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数
- 调用函数时,如果没有传入缺省参数的值,则在函数内部定义的函数时指定的是参数默认值
- 函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用,如果一个参数的值不能确定,则不应该设置默认值,具体的数值在调用函数时,由外界传递
缺省参数的注意事项
(1)定义缺省参数的位置
- 必须保证带有默认值额缺省函数在参数列表末尾
(2)调用待用多个缺省参数的函数,需要指定参数名,这样才能知道参数的对应关系!
多值参数
使用场景:
- 当一个函数处理的参数个数是不确定的时候,就需要使用多值参数
- 在python 中 有两种多值参数:
- 参数名前增加一个*可以接受元祖(*args)
- 参数名前有两个** 可以接受字典(**kwargs)
def demo(num,*args,**kwargs):
print(num)
print(args)
print(kwargs)
demo(1,2,3,4,5,name="小明",age=18,gende="男")
元祖和字典的拆包
- 在调用带有多值参数的函数时,如果希望:
- 将一个元祖变量直接传递给args
- 将一个字典变量,直接传递给kwargs
- 就可以使用拆包,简化参数的传递,拆包的方法时:
- 在元祖变量前,增加一个*
- 在字典变量前,增加两个*
def demo(*args,**kwargs):
print(args)
print(kwargs)
# 元祖/字典变量
gl_nums = (1,2,3)
gl_dict = {"name":"小明","age":18}
# demo(gl_nums,gl_dict),使用这种方法会将两个参数都传递到*args中,再组成一个元祖。
#拆包语法,简化元祖变量和字典变量的传递
demo(*gl_nums,**gl_dict)