一步一步学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)     

36就是实际参数,在函数调用时,把36传递到调用函数,替换函数语句块中的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已作改变。

结束语:

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

下一篇,我们将继续来讲函数的知识。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值