函数的传参

传参类型

函数的传参分两可变和不可变,在函数中对变量进行修改数据后,外部不可变的变量不会受影响,外部的可变的变量受了影响,具体如下:

# 函数的参数传了变量后,其实是做了浅copy,参考深浅拷贝原理即可。
# https://blog.youkuaiyun.com/qq_34577961/article/details/122960937
def return_data(name,host:list):
    name = 'alex'
    host.append(['alxe2'])
    host[0]='alex1'
    print(name,host)

name = 'ALEX'
host =[1,2,3]
return_data(name,host)
print(name,host)

返回结果:
alex ['alex1', 2, 3, ['alxe2']]
ALEX ['alex1', 2, 3, ['alxe2']]

参数类型——关键参数,位置参数,默认参数

# 关键参数就是name,host,按顺序传参且必填,age为位置参数,跟关键参数混合的话,需要放后面,
# 全是位置参数的话,可以随意放,传参时放上参数名即可
# 默认参数在定义函数时需要放在后面
def return_data(name,host,age,high=None):
    print(name,host,age,high)
return_data('name','127.0.0.1',high=40,age=30)


返回结果:
name 127.0.0.1 30 40

参数类型——不定长参数

# *args表示age参数之后以参数值的形式传进来后,会把他当成一个元组返回
# **kwargs表示当age参数之后以key=value的形式传进来后,会把他当成一个字典
def return_data(age,*args,**kwargs):
    return age,args,kwargs

#可以传多个参数,kwargs就返回空字典
print(return_data(30,'这是第一个args','这是第二个args')) 

#可以传多个key=value,args就返回空元组
print(return_data(30,kwarg_one='这是第一个kargs',kwarg_two='这是第一个kargs')) 

#混合传参,但要注意顺序
print(return_data(30,'这是第一个args','这是第二个args',kwarg_one='这是第一个kargs',kwarg_two='这是第一个kargs')) 

返回结果:
(30, ('这是第一个args', '这是第二个args'), {})
(30, (), {'kwarg_one': '这是第一个kargs', 'kwarg_two': '这是第一个kargs'})
(30, ('这是第一个args', '这是第二个args'), {'kwarg_one': '这是第一个kargs', 'kwarg_two': '这是第一个kargs'})

=================================

def return_data(age,*args,**kwargs):
    return age,args,kwargs

tuple_data = [30,'这是第一个args','这是第二个args']
dict_data = {'age':30,'kwarg_one':'这是第一个kargs','kwarg_two':'这是第一个kargs'}

'''
元组或者列表前面加*,表示将每个元素一个个传值到函数,相当于return_data(30,'这是第一个args','这是第二个args')
'''
print(return_data(*tuple_data))

'''
字典前面加**,表示将每k个ey=value传给函数,注意必填参数age要保持一致,相当于return_data(age=30,kwarg_one='这是第一个kargs',kwarg_two='这是第一个kargs')
'''
print(return_data(**dict_data))

返回结果:
(30, ('这是第一个args', '这是第二个args'), {})
(30, (), {'kwarg_one': '这是第一个kargs', 'kwarg_two': '这是第一个kargs'})

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑*杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值