day3-函数参数及调用
返回值
前面我们在定义函数时用到了return关键字,没有详细介绍return关键字的用法,下面我们就来详细的说一下。
return的作用
- 需要用一个变量来接受程序结束后返回的结果
- 它是作为一个结束符,终止程序运行
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
def test(): print("in the test 1") return 0 print("the end") #结果中没有打印 x = test() print(x) #输出 in the test 1 #第一次打印 0 #返回值
解析:由此可见,当程序执行到return 0处就停止执行了,变量x接收了test()函数结束后的返回结果。
返回多个值
那么函数的返回值除了可以定义返回常量,还可以返回其他吗?接着,我们通过一个例子来分析:
#没有定义返回值 def test1(): print("In the test 1") #定义一个返回值 def test2(): print("In the test 2") return 0 #定义多个数据类型返回值 def test3(): print("In the test 3") return 1,"dick",["jacky","maria"],{"name":"jacky"},("Lily","Tom") x=test1() print(x) y=test2() print(y) z=test3() print(z) #输出 In the test 1 None In the test 2 0 In the test 3 (1, 'dick', ['jacky', 'maria'], {'name': 'jacky'}, ('Lily', 'Tom'))
由此可以得出以下结论:
1.返回值数=0,返回None
2.返回值数=1,返回object
3.返回值数>1,返回tuple
经过以上两个例子,我们也许会问,为什么函数要有返回值?
答:因为我们想要这个函数的执行结果,这个执行结果或许会在后面的程序运行过程中需要用到
带参数的函数调用
之前,我们使用的函数都是没有带参数的,下面我们就来说说带参数的函数。首先,我们了解一下,参数的定义
1.形参和实参
- 形参:形式参数,不是实际存在,是虚拟变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应该和实参一一对应)
- 实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参
区别:形参是虚拟的,不占用内存空间,形参变了只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参
def test(x,y): #x,y是形参(不占用空间) print(x) print(y) test(1,2) #1,2是实参(占用空间)-----位置参数 test(y=2,x=1) #1,2是实参(占用空间)-----关键字参数 #输出 1 2 #调用方法 1.test()执行 2.()表示调用函数test 3.()内可以有参数也可没有
2.位置参数和关键字
位置参数
定义:位置参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
标准调用:调用test()函数,你必须传入一个参数,实参与形参位置一一对应,不然会出现语法错误
关键字参数
定义:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
关键字调用:位置无需固定,使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
#!/usr/bin/python def test(x,y): #x,y是形参(不占用空间) print(x) print(y) test(x=1,2) #位置参数和关键字参数 #输出 File "/usercode/file3.py", line 6 test(x=1,2) ^ SyntaxError: non-keyword arg after keyword arg #非关键字参数在关键字参数后面
注意:位置参数和关键字参数一起使用时,正确顺序格式,位置参数在前,关键字参数在后,即:
(位置参数 关键字参数)
否则就会报错!
3.默认参数
定义:调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入y参数,则使用默认值,传入的话,就使用传入的实参:
def test(x,y=2): #默认参数y=2 print(x) print(y) test(1) #输出 1 2 def test(x,y=2): #默认参数y=2 print(x) print(y) test(1,3) #输出 1 3
用途:
a.安装软件:1.默认安装 2.自定义安装
b.连接数据库端口号 等
def conn(host,port=3306) pass conn()