关于python 的函数默认参数与关键字keyword的想法
来源:互联网 发布:ubuntu 突然无法上网 编辑:程序博客网 时间:2024/06/06 09:42
看了官方文档的关键字与默认形参后,发现有几处迷惑之处。为什么默认形参和关键字的定义形式基本没有区别;为什么在keyword中不能参杂着position arguments。个人理解:是因为python的参数列表的随意性决定的。
如:
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue')
这个函数,我们可以这样初始化:parrot(19),也可以parrot(19,state='',type=''),也可以parrot(19,type='',action='')来初始化一个实例。所以你无法在keyword中参杂一个position argument,因为编译器不知道它assign给哪一个值。比如:parrot(1,atate='','')后面的空串给谁?
在编译器中都是一视同仁的。
还有一个就是python定义函数时,如果默认对象是一个mutable object,那么它的函数运算就会和c系列有差异。python中的默认值只会初始化一次,并会存储起来。测试代码如下:
def f(a, L=[]): L.append(a) print(id(L)) return Lprint(f(1))print(f(2))print(f(3))
输出结果:
2347964374792[1]2347964374792[1, 2]2347964374792[1, 2, 3]
这是mutable object那么换一个字面值常量呢?比如string
测试代码:
def f(a, L=""): print(id(L)) return Lprint(f(1))print(f(2))print(f(3))输出结果:221460788702422146078870242214607887024所以有理由相信编译器处理函数默认值是在堆中划一区域存储的,而不是在栈里。
最后keyword就是处理多个default argument时采用的特别名字。
阅读全文
0 0
- 关于python 的函数默认参数与关键字keyword的想法
- Python 函数的默认参数, 关键字参数的调用
- python函数的参数(默认参数、可变参数、关键字参数和参数组合)
- python 函数的四种参数---必选参数、默认参数、可变参数和关键字参数
- python 函数编程的位置参数、默认参数、关键字参数以及函数的递归
- python—函数的可变参数与关键字参数
- Python函数的默认参数
- 关于Python中函数默认参数的研究
- Python中位置参数、默认参数、可变参数、命名关键字参数、关键字参数的区别
- 【python】函数:函数文档、关键字参数、默认参数、收集参数
- Python笔记-函数定义、默认参数、关键字参数、参数组合
- 关于函数调用得到传递参数的想法
- 关于指针作为函数参数的一些想法
- python 函数默认参数的问题
- 谈谈Python函数的默认参数
- python 函数参数:必选参数、默认参数、可变参数、关键字参数 和 命名关键字参数
- Python函数参数总结(位置参数、默认参数、可变参数、关键字参数和命名关键字参数)
- python05-函数的位置参数、默认参数、可变参数、键值对参数(关键字参数)
- HihoCoder
- Java线程面试题 Top 50 (转载)
- Django中的模版文件--index.html(判断用户是否已经登录)
- vue 中import和export如何一起使用
- MongoDB运行状态、性能监控,分析
- 关于python 的函数默认参数与关键字keyword的想法
- 在OpenCV环境下对图像做Gamma校正
- tensorflow 复合逻辑‘且’和‘或’的实现
- linux 学习系列-Linux 文件与目录管理
- shiro 之权限验证问题
- 线性判别分析(一)——LDA介绍
- 写给所有程序员_你的逻辑不要太贪心
- AliSQL 20171010版本发布 Sequence兼容PostgreSQL/Oracle语法和升级TLSv1.2
- angularjs 路由 传参