执行结果:
也可以在可变参数后面命名关键字参数,这样就不需要星号分隔符了:
执行结果:
在Python对象及内存管理机制中介绍了python中的参数传递属于对象的引用传递(pass by object reference),在编写函数的时候需要特别注意 。
先来看个例子:
执行结果:
l1 和 l2指向相同的地址,由于列表可变,l1改变时,l2也跟着变了 。
接着看下面的例子:
结果:
l1没有变化python函数的多参数!为什么不是[1, 2, 3, 4]呢?
l = l + [4]表示创建一个“末尾加入元素 4“的新列表,并让 l 指向这个新的对象,l1没有进行任何操作,因此 l1 的值不变 。如果要改变l1的值,需要加一个返回值:
结果:
下面的代码执行结果又是什么呢?
执行结果:
和第一个例子一样,l1 和 l2指向相同的地址,所以会一起改变 。这个问题怎么解决呢?
可以使用下面的方式:
也可以使用浅拷贝或者深度拷贝,具体使用方法可参考Python对象及内存管理机制 。这个问题在Python编程时需要特别注意 。
本文主要介绍了python函数的几种参数类型:必选参数、可选参数、可变参数、位置参数、强制位置参数、关键字参数、强制关键字参数,注意他们不是完全独立的,比如必选参数、可选参数也可以是关键字参数 , 位置参数可以是必选参数或者可选参数 。
另外,python中的参数传递属于对象的引用传递,在对可变数据类型进行参数传递时需要特别注意,如有必要 , 使用python的拷贝方法 。
参考文档:
--THE END--
Python:函数的参数、混搭、开包位置参数适合参数少的情况 , 当参数较多时,位置容易存错 。
关键词参数适合参数较多时,通过指定关键词来存 。
混搭时应注意先放位置参数后放关键词参数,否则会出现语法错误 。语法上允许混搭,但尽量不要采用 。
d在*的前面,可以作为位置参数,不用指定关键词,*后面必须指定关键词,可以混搭 。
一旦设置默认值 , 可以不传它;但也可以继续传入,传了多少就是多少 。默认参数需要注意,现房非默认参数再放默认参数 。
当参数是多个时,可以在变量前面加*,表示零到无穷多个位置参数,传入的参数会被合并为一个元组,若需要破开元组,只需要在元组前面加上* 。注意要先固定参数再可变参数 。
在变量前加**,表示可变参数是关键词参数,在调用时必须用键值对来调用 。
顺序必须是:必选参数、默认参数、可变位置参数、命名关键字参数和可变关键字参数 。
/ 前面一定为位置参数
文章知识点与官方知识档案匹配 , 可进一步学习相关知识?。。?
python 函数参数类型 python python函数的多参数的函数参数类型分为4种python函数的多参数:
1.位置参数:调用函数时根据函数定义python函数的多参数的参数位置来传递参数,位置参数也可以叫做必要参数,函数调用时必须要传的参数 。
当参数满足函数必要参数传参的条件,函数能够正常执行:
add(1,2)#两个参数的顺序必须一一对应,且少一个参数都不可以
当我们运行上面的程序,输出:
当函数需要两个必要参数,但是调用函数只给了一个参数时,程序会抛出异常
add(1)
当我们运行上面的程序,输出:
当函数需要两个必要参数,但是调用函数只给了三个参数时,程序会抛出异常
add(1,2,3)
当我们运行上面的程序,输出
2.关键字参数:用于函数调用 , 通过“键-值”形式加以指定 。可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求 。
- redis的热点数据缓存 redis热点数据切换
- 如何修改戴尔服务器的IP地址? 戴尔服务器ip地址怎么改
- mysql中ext
- 优惠券功能的业务流程设计图谱 优惠券redis处理
- redis通配符的使用
- redis是开发工具吗 redis的开发人是谁
- mysql备份一个表的数据 备份一个mysql库
- mysql中删除记录的命令 mysql删除中继日志
- mysql 判断 mysql的判断语句
- 屏蔽数据库的复杂性 mysql数据库屏蔽权限
