Day3-Python基础3--函数参数及调用

一、return返回值

return的两个作用:

1)需要用一个变量来接受程序结束后返回的结果

2)它是作为一个结束符,终止程序运行

 1 def test():
 2     print("我是return前的命令")
 3     return 0
 4     print("我是return后的命令") 
 5  
 6 x = test()
 7 print(x)
 8  
 9 #输出
10 我是return前的命令 
11 0 #结果返回值

从上面的代码可以看出,return 0  后面的代码停止执行了,程序只打印了return前面的代码,而函数的返回值0复制给

了变量x。

 二、函数参数与局部变量

在此之前,我们演示的函数都是没有带参数的,下面我们就来说说带参数的函数。在讲之前,我们先来说一下,什么是形参,什么是实参吧!

  • 形参:指的是形式参数,是虚拟的,不占用内存空间,形参单元只有被调用的时才分配内存单元
  • 实参:指的是实际参数,是一个变量,占用内存空间,数据传递单向,实参传给形参,形参不能传给实参

代码如下:

1 def test(x,y): #x,y是形参
2     print(x)
3     print(y)
4  
5 test(1,2) #1和2是实参
6 #输出
7 1
8 2

1、位置参数

 从上面的例子可以看出,实际参数和形式参数是一一对应的,如果调换位置,x和y被调用的时,位置也会互换,代码如下:

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4 print("--------互换前-----")
 5 test(1,2)
 6 print("--------互换后-----")
 7 test(2,1)
 8  
 9 #输出
10 --------互换前-----
11 1
12 2
13 --------互换后-----
14 2
15 1

在实参数>虚参数的时候,会因为参数不对应报错:

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4 print("--------多一个参数----")
 5 test(1,2,3)
 6  
 7 #输出
 8 --------多一个参数----
 9 Traceback (most recent call last):
10   File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
11     test(1,2,3)
12 TypeError: test() takes 2 positional arguments but 3 were given  #test()函数需要传两个实参,你传了三个实参

同理,当实参数<虚参数的时候,也会因为参数不对应报错:

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4 print("--------少一个参数----")
 5 test(1)
 6  
 7 #输出
 8 --------少一个参数----
 9 Traceback (most recent call last):
10   File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
11     test(1)
12 TypeError: test() missing 1 required positional argument: 'y'  #没有给y参数传实参

2、关键字参数

关键字传参不需要一一对应,只需要你指定你的哪个形参调用哪一个实参即可,代码如下:

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4  
 5 print("--------互换前------")
 6 test(x=1,y=2)
 7 print("--------互换后------")
 8 test(y=2,x=1)
 9  
10 #输出
11 --------互换前------
12 1
13 2
14 --------互换后------
15 1
16 2

位置参数与关键字参数结合:

1)位置参数在前,关键字参数在后。

1 def test(x,y):
2     print(x)
3     print(y)
4  
5 test(1,y=2)
6  
7 #输出
8 1
9 2

2)但是下面这种情况是错误的。这时候形参由于赋值过多,不能多次

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4  
 5 test(1,x=2)
 6  
 7 #输出
 8 Traceback (most recent call last):
 9   File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8, in <module>
10     test(1,x=2)
11 TypeError: test() got multiple values for argument 'x' #给x形参传的值过多

3)关键字参数在前,位置参数在后

 1 def test(x,y):
 2     print(x)
 3     print(y)
 4  
 5 test(y=2,1)
 6  
 7 #输出
 8 File "D:/PycharmProjects/pyhomework/day3/函数_带参数.py", line 8
 9     test(y=2,1)
10             ^
11 SyntaxError: positional argument follows keyword argument # 关键字参数在位置参数的前面

4)一个位置参数,两个关键字参数

 1 def test(x,y,z):
 2     print(x)
 3     print(y)
 4     print(z)
 5  
 6 test(1,z=2,y=3)
 7  
 8 #输出
 9 1
10 3
11 2

总结:关键字参数是不能写在位置参数前面的

转载于:https://www.cnblogs.com/bldly1989/p/6548943.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值