函数(一)参数传递之位置参数/关键字参数/默认参数/可变长度参数/序列解包/函数参数,函数添加函数说明文档

一、参数传递机制

根据实际参数的类型不同,参数传递方式可分为 2 种:值传递和引用(地址)传递
1、值传递:适用于实参类型为不可变类型(字符串、数字、元组);
2、引用/地址传递:适用于实参类型为可变类型(列表,字典);

def demo(obj) :
    obj += obj
    print("形参值为:",obj)


print("-------值传递-----")
a = "C语言中文网"
print("a的值为:",a)
demo(a)
print("实参值为:",a)
print("-----引用传递-----")


a = [1,2,3]
print("a的值为:",a)
demo(a)
print("实参值为:",a)

运行结果为:
-------值传递-----
a的值为: C语言中文网
形参值为: C语言中文网C语言中文网
实参值为: C语言中文网
-----引用传递-----
a的值为: [1, 2, 3]
形参值为: [1, 2, 3, 1, 2, 3]
实参值为: [1, 2, 3, 1, 2, 3]

值传递和引用传递的区别是
函数参数进行值传递后,若形参的值发生改变,不会影响实参的值;而函数参数继续引用传递后,改变形参的值,实参的值也会一同改变。

二、参数指定方式

1、位置参数:按位置指定 ,实参和形参数量必须一致
函数调用时括号中只写各个实参,这时形参的值与实参按照顺序一一对应
在调用函数,指定的实际参数的数量,必须和形式参数的数量一致(传多传少都不行)

2、关键字参数:按形参名字显示指定,使用形式参数的名字来确定输入的参数值。
在函数调用时显示指定形参(函数定义时的参数)与实参的对应关系 :形参=实参
通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可。
这是函数调用时 形参的值与实参的先后顺序无关

def add(x,y):
    print('x=',x)
    print('y=',y)

#按位置指定
add(2,3)
add(3,2)

#形参名字显示指定
add(x=2,y=3)
add(y=3,x=2)

运行结果
按位置指定 与顺序有关
x= 2
y= 3
x= 3
y= 2
形参名字显示指定 与位置无关
x= 2
y= 3
x= 2
y= 3 

3、默认参数:参数指定默认值
在调用函数时如果不指定某个参数,Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。
注意:指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。
参数指定默认值之后在函数调用时 实参可以只给出没有指定默认值的那些参数 若所有参数都在形参中给出,默认值不生效。

def add(x,y=0):
    print('x=',x)
    print('y=',y)

add(2)
add(3,2)

运行结果
x= 2
y= 0
x= 3
y= 2

4、可变长度参数
两种形式:函数定义时在参数名前加1个*或2个**
(1)*parameter用来接受多个实参并将其放在一个元组中
d无论调用该函数时传递了多少实参,一律将其自动放入元组中

>>> def demo(*p):
    print(p)
>>> demo(1,2,3)
(1, 2, 3)
>>> demo(1,2)
(1, 2)

(2)**parameter接受多个关键字参数并存放到字典中
调用函数时自动将接受的参数转换为字典,注意实参此时需要是关键字参数

>>> def demo(**p):
    for item in p.items()</
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值