python中的形参和实参_一步一步学Python3(小学生也适用) 第二十篇:函数形参与实参...

在上一篇中,我们定义了,一个返回两个数中较大数的函数

def num_max(num1,num2):

num = 0

if num1 > num2:

num = num1

print('num1比较大')

else:

num = num2

print('num2比较大')

return num

然后调用时是

n = num_max(3,6)

在上面的例子中,我们需要知道Python函数的形式参数和实际参数的概念

一、实际参数和形式参数

形式参数(形参):顾名思义,形式上的参数,可以理解为占位符,没有实际的值,占一个位,通过调用函数时,在该位置赋值,才有值。相当于变量。

实际参数(实参):顾名思义,实际意义上的参数。是一个实际存在的参数,调用函数时传给函数的参数。

形式

形式参数:在定义函数时,函数名后面括号中的参数。上述例子中:

def num_max(num1,num2) num1和num1就是形式上参数,没有实际的值

实际参数:在调用函数时,函数名后面括号中的参数。上述例子中:

n = num_max(3,6)

3和6就是实际参数,在函数调用时,把3和6传递到调用函数,替换函数语句块中的num1和num2

我们修改一下上述例子,看是不是3传递给了num1,6传递给了num2

#定义函数,两个形式参数,分别为num1和num2

def num_max(num1, num2):

print('传递给num1值是:',num1) #调用函数,第一个实际参数将赋值给num1

print('传递给num2值是:', num2) #调用函数,第二个实际参数将赋值给num2

num = 0

if num1 > num2:

num = num1

else:

num = num2

return num

print('调用函数开始....')

n = num_max(3,6) #函数调用时,实际参数为3和6

print('较大的值为:',n)

运行结果:

调用函数开始....

传递给num1值是: 3

传递给num2值是: 6

较大的值为: 6

形参和实参的区别,就如果一个班里面,班长和学习委员这两个角色就是形参,小明是班长,张三是学习委员,小明,张三就是实参。 李四,王五后来做班长和学习委员时,那么李四和王五就是实参了。

二、实参传值给形参

Python中,根据实际参数的不同类型,函数参数传递方式有2种方式:值传递,引用(地址)传递值传递:实参类型为不可变类型(字符串、数字、元组)

引用(地址)传递:实参类型为可变类型(列表、字典)

值传递和引用传递的区别是,函数参数进行值传递(不可变对象)后,如果参数在函数代码块内被修改,那么这个传递的源对象不会改变;

函数参数进行引用传递(可变对象)后,如果参数在函数代码块内被修改,那么这个传递源对象也会被改变;

def fun(obj):

obj += obj

print("obj在函数内修改后为::", obj)

return

print("------值传递------")

str1 = "老树Python"

fun(str1)

print('不可变对象经函数更改后str1为:',str1)

print("------引用(地址)传递------")

list1 =["Python","Java"]

fun(list1)

print('可变对象经函数更改后List1为::', list1)

运行的结果:

------值传递------

obj在函数内修改后为:: 老树Python老树Python

不可变对象经函数更改后str1为: 老树Python

------引用(地址)传递------

obj在函数内修改后为:: ['Python', 'Java', 'Python', 'Java']

可变对象经函数更改后List1为:: ['Python', 'Java', 'Python', 'Java']

上述例子中,我们可以看到当 实参str1为字符串时,经过函数代码块改变时,外部源类型str1不作改变。

可变类型list1经过函数代码块改变后,外部源类型list1已作改变。

结束语:

这一篇,我们仅仅讲了函数的形参和实参,并且用例子来说明,把实参传入函数中的形参的过程。以及参数传递时,值传递和引用传递的特点。

下一篇,我们将继续来讲函数的知识。老树Python:一步一步学Python3(小学生也适用) 第十九篇:函数创建与调用​zhuanlan.zhihu.comv2-b680670f996019a3ae2a2731c789b71b_180x120.jpghttps://zhuanlan.zhihu.com/p/266411327​zhuanlan.zhihu.comv2-cf83c8c3c30cb3e8b1328b179b933064_180x120.jpg老树Python:一步一步学Python3(小学生也适用) 第十七篇:循环语句for in循环​zhuanlan.zhihu.comv2-673afa73a23fe4c87691999575341136_180x120.jpg老树Python:一步一步学Python3(小学生也适用) 第十六篇:循环语句While循环​zhuanlan.zhihu.comzhihu-card-default_ipico.jpg老树Python:一步一步学Python3(小学生也适用) 第十五篇:条件判断​zhuanlan.zhihu.comv2-b4a8ad2c04f5b33840e92e72a96fea6e_180x120.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值