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()
posted @ 2017-07-30 19:43  Mr.hu  阅读(117)  评论(0编辑  收藏  举报