Python基础笔记(1):函数篇(1):关于函数参数
来源:互联网 发布:兰灯翻墙for mac 编辑:程序博客网 时间:2024/06/05 18:24
一、函数参数
1、两种对象
python采用“对象传递(pass by object)"(Python中有一句话:一切皆为对象)
根据传递过来的对象分为:
a. 可变对象,可变对象可在函数内对对象所在内存地址进行值修改,list、dict......都属于可变对象。示例:
>>> L=[1,2,3,4,5]>>> id(L) 41630088>>> L[0]=100>>> L[100, 2, 3, 4, 5]>>> id(L)41630088
对list对象进行修改,修改前后对象的地址没有改变 对象值改变后,引用L并未指向新的对象,而是在原有基础进行改变
b. 不可变对象
看一个简单的例子:
>>> a=1>>> id(a)1985323456>>> a=a+1>>> id(a)1985323488>>>
不可变对象修改值是让引用指向一个新创建的对象,因此地址改变,原来的对象也被回收了
2、位置参数
就是一般函数参数的传递,有多少参数需要什么参数就怎么传
3、默认参数
def sum(x,n=100): ... ...
默认参数有一点要注意,当没有参数传入时,调用函数,其中的默认参数执行操作后并没有消失,依旧在局部函数中,而且保留了上次操作结果(对于可变对象来说)。看下面代码:
>>> def Test(L=[]):... L.append('Hello')... print(L)... >>> Test()['Hello']>>> Test()['Hello', 'Hello']>>> Test()['Hello', 'Hello', 'Hello']>>>默认这里涉及到了前面的可变对象。函数每次调用都添加一个字符串,是因为局部函数中,L这个引用一直指向同一个list对像,不断增加字符串并不会改变地址,指向新的对象
4、可变参数
如果传递给一个函数的参数,一会需要1一个,一会需要100个,该怎么做呢?使用默认参数能做到这样,但是未免太过于低效和麻烦了。可变参数就派上用场了,在C/C++中,scanf和printf函数就是常用的能接受可变参数的函数,C/C++其中实现的细节后面再谈,我们先看Python。示例:
def sum(*num):result=0for value in num:result=result+valuereturn resultprint(sum(1,2,3,4))</span>在参数头加上一个“ * ”表示此函数可以传递可变参数。如果要传入一个列表:
def sum(*num):result=0for value in num:result=result+valuereturn resultL=[1,2,3,4]print(sum(*L))#输出结果:10应用在lambda表达式中:
fun=lambda *num: [print(value) for value in num] fun(1,2,3,4)
5、关键字参数
关键字参数像是dict和可变参数的组合,看代码:
def key_paramer(**args): #两个*号print(args)for key,value in args.items():print(key,':',value)key_paramer(city='Chonqing',name='zhangsan')
1 0
- Python基础笔记(1):函数篇(1):关于函数参数
- python基础----函数参数
- Python基础-函数参数
- Python基础-函数-函数参数
- 关于python函数参数
- Python基础-函数[1]
- Python基础:10函数参数
- python基础(五) 函数参数
- python-基础笔记3-函数的参数类型
- Python入门笔记(18):Python函数(1):基础部分
- Python学习笔记 - 函数参数
- Python学习笔记:函数参数
- 【Python学习笔记】函数参数
- Python的函数参数笔记
- python 函数参数学习笔记
- Python学习笔记(基础篇)_008_函数
- Python学习笔记【基础函数篇】
- python基础-内置函数1
- c++/sstream/stoi/
- 使用POI操作excel(读取和创建)快速开发指南
- 一个外国网站严肃地统计后发现,中国程序员整体实力世界第一
- 数据库三大范式
- 2016年10月4日
- Python基础笔记(1):函数篇(1):关于函数参数
- cmd中输入net start mysql 提示:服务名无效
- 史海钩沉:借力百度,DDoS攻击冲击GitHub
- BZOJ1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛
- 一些杂货
- BZOJ1601: [Usaco2008 Oct]灌水
- Linux下开机异常(fsck exited with status code 4)
- BZOJ1786: [Ahoi2008]Pair 配对
- 认识css样式(第一部分)