python函数引用形参 python函数参数引用

python中视图函数传值的数据类型可以传对象吗python的一切数据类型都是对象 。但是python的对象分为不可变对象和可变对象 。python的变量是引用,对python变量的赋值是引用去绑定该对象 。
可变对象的数据发生改变,例如列表和字典,引用不会更改绑定对象,毕竟本身就是用于增删改查的,频繁地产生新对象必然导致开销巨大,只需要该对象内部变化就行;但对于绑定了不可变对象的引用 , 对象一旦改变就会使引用绑定新的对象 。
这一点也会反应到函数的参数上 。python的传值方式是“传对象”引用 。python的函数,形参实际上是引用,实参便是对象绑定到该引用上 。本质是形参会被作为函数的局部变量,在开辟的函数的栈内存中被声明 。
简要来讲:
如果参数是数 , 则类似值传递,
如果参数是列表和字典,则类似引用传递 。
每个对象都会有个id, 可以用id()验证以上说法:
这个函数的参数是列表,是可变对象 。
python实参和形参的区别形参设置可以为数字字符串变量、元组和字典等任意类型数据,元组形参是在变量名前加*,字典形参是在变量名前加**
例如:fun(var),fun(*tuple),fun(*list),fun(**dict)
实参接受也可以是任意类型数据,当接收数据为元组列表或者字典时 , 同样是在数据变量前加*和**
例如:fun(x),fun(*seq),fun(*list),fun(**stu_info)
可以使用元组形参和字典形参接收冗余或意外数据
例如:fun(var,*t_args,**dic_args)
但传参时 , 数字和字符串形参必须传值 , 元组和字典形参可不传,原因为元组和字典数据可以是空元组或空字典,此特性正好适应处理冗余数据
形参参数名若和生产数据中字典键名相同加大大提高编程效率和生产效率
例如:有字典dic={'name':'csdn','age':10,'top':1} ,有函数fun(name='name',age=0,top=0) , 则函数可以方便的获取字典数据fun(**dic)
Python参数类型 上一期我们学习参数传递怎么传递,也了解了参数的几种类型 。
首先,我们再来回顾一下,形参和实参:
形参是在定义函数时定义的,放在函数名后面的圆括号里,可为空
实参是调用函数时为形参传入具体的参数值
【python函数引用形参 python函数参数引用】 简单总结一下 , 谁调用函数,谁就负责传入参数 。
好呐,本期我们来详细学习函数几种参数类型 , 大纲如下:
python函数的参数名是无意义的,Python允许在调用函数时通过通过名字来传入参数值 。
位置参数:按照形参位置传入的参数
调用函数时,实参默认按位置顺序传递的 。同时实参个数也要和形参匹配
举一个小栗子
如果实参的个数与形参不匹配时,调用函数运行就会报错
Python中,形参与调用函数紧密联系在一起的 。
关键字参数:调用函数时,使形参名称来传递参数,形式为“形参名=实参”
关键字参数,又叫命名参数,传递时无需考虑参数位置和顺序
举一个小栗子
默认参数:定义函数时,我们可以为形参提前设置具体的值 。
在定义函数时,默认参数要放到位置等其他参数后面
在调用函数时,默认参数是可选的 。如果传入新值,则会覆盖默认值
举一个小栗子
注意,默认值不能位于位置参数前面,否则程序会报错误
不定长参数又名可变参数 。
不定长参数指的是可变数量的参数,分两种情况:
如果不定长参数后面,可以新增参数吗?
我们通过例子来看,会发生什么?

推荐阅读