传参类型
函数的传参分两可变和不可变,在函数中对变量进行修改数据后,外部不可变的变量不会受影响,外部的可变的变量受了影响,具体如下:
# 函数的参数传了变量后,其实是做了浅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'})
570

被折叠的 条评论
为什么被折叠?



