Python 知识量:10 - 41 - 150
参数用于向函数传递数据,按传递方式可分为:按值传递和按引用传递。按值传递时会将参数值复制一份给函数中的相应变量,函数中的变量值是参数值的副本,它们彼此独立,互不影响;按引用传递时不会复制参数值,而是将函数中的相应变量指向参数值,此时函数变量与参数变量指向同一个值。
Python采用按引用传递的方式。下面是一个参数传递的示例:
# parameter.py def add(a,b,c): return a+b+c
运行情况为:
>>> ==================== RESTART: D:\PythonTestFile\parameter.py =================== >>> x,y,z=1,2,3 >>> add(x,y,z) 6
在执行以上代码时,首先对变量x、y、z分别赋值1、2、3。然后将x、y、z作为参数传递给函数add(),按照引用传递的方式,函数add()的参数(也称形参)a、b、c就指向了x、y、z的值,即指向了1、2、3。这时a、b、c与x、y、z都分别同时指向了1、2、3。然后函数add()利用a、b、c指向的值计算并返回了1+2+3的结果6。
函数返回值之后,函数变量a、b、c会被自动删除,而变量x、y、z不受影响。
Python参数的引用传递方式与C++等语言的引用传递存在差异,突出的一点是,对Python函数形参的操作不会影响函数外部实参的值,操作改变的只是形参的指向。下面是一个示例:
# parameter.py def settwo(a): a=2
运行结果为:
>>> ==================== RESTART: D:\PythonTestFile\parameter.py =================== >>> x=1 >>> settwo(x) >>> x 1
以上代码中,函数settwo()的作用是将传入的变量值修改为2。执行时,先创建了变量x,并初始化为1。调用函数settwo()将传入的变量设为2。再次查看变量x时,其值仍然是1,函数没能改变变量x的值。这证明,在函数settwo()中无法访问变量x,内部的操作只是改变了其局部变量的值,对外部的全局变量没有影响。
在Python中可以给函数的参数设置默认值,在调用函数时,如果没有给函数传递参数,函数将使用默认值。例如:
# parameter.py def printnumber(n=100): print(n)
运行的结果为:
>>> ==================== RESTART: D:\PythonTestFile\parameter.py =================== >>> printnumber() 100 >>> printnumber(200) 200
需要注意:虽然可以设置任意多个默认参数,但是有默认值的参数不能位于没有默认值的参数前面。
另一种很实用的参数指定方式是通过关键字来实现,以下是一个示例:
# parameter.py def want(what='pens',number=5,who='Jeff'): print(who,' wants ',str(number)+' ',what+'.')
根据输入不同,运行结果为:
>>> ==================== RESTART: D:\PythonTestFile\parameter.py =================== >>> want() Jeff wants 5 pens. >>> want(who='Bob',number=100) Bob wants 100 pens. >>> want(number=25,what='rules',who='James') James wants 25 rules.
在调用以上函数时,参数以键值对的方式进行传递。关键字参数的排列顺序可以打乱。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6