Python 参数使用总结
Python 中参数的传递非常灵活,不太容易记住理解,特整理如下备忘:
普通参数
即按照函数所需的参数,对应位置传递对应的值,可以对应 Java 中的普通参数
def max(a, b):
if a > b:
return a
else:
return b max(5, 13) # = 13
默认参数
可以对位置参数中的某个参数设置默认值,设置了默认值的参数在调用时可以不传递
此时需要注意,默认参数只能在必选参数后面
def max(a, b=0):
if a > b:
return a
else:
return b max(5, 13) # = 13
max(5) # = 5
max(-6) # = 0
当有多个默认参数时,调用参数传递的值会按照顺序赋值,也可以通过指定参数值为特定参数赋值
def position(x, y=1, z=0):
print('x:', x, 'y:', y, 'z:', z) position(5) # x=5, y=1, z=0
position(5, 6) # x=5, y=6, z=0
position(5, z=6) # x=5, y=1, z=6
可变参数
即传递的参数个数不确定,可以对应为 Java 中的可变参数,类似传递了一个 list 或 tuple
可变参数只能出现在必选参数和默认参数后面
def max(*numbers):
# 此处可以有更简单的写法
sum = 0
for number in numbers:
sum += number
return sum
sum(1,2,3,4,5) # = 15
# 对于 list 或 tuple, 如 nums = [1,2,3,4,5], 可以这样使用
sum(*nums) # = 15
命名关键字参数
命名关键字有些像普通参数和默认参数的结合,在一个 * 后面的参数为命名关键字参数
和普通参数、默认参数的区别就是需要在传递参数时指定赋值给的参数名字
命名关键字参数只能出现在必选参数、默认参数、可变参数后面
def person1(name, *, age, sex):
print('name:', name, 'age:', age, 'sex:', sex) def person1=2(name, *, age=15, sex='F'):
print('name:', name, 'age:', age, 'sex:', sex) person1('zhang', age=15, sex='F') # 如果命名关键字参数没有设置默认值,则必须显示给每个参数赋值
person2('zhang') # 函数中已经对参数设置默认值
如果命名关键字参数前面有可变参数,则可省略 * 号
# age 和 sex 均是命名关键字参数
def person(name, *args, age, sex):
pass
关键字参数
关键字参数必须出现在必选参数、默认参数、可变参数、命名关键字参数后面
在可变参数的基础上,即不仅仅可以传递任意个参数,同时还可以对传递的各个参数指定参数名,可以理解为传递了一个 dict
def person(name, **kw):
print('name:', name, 'other:', kw) person('zhang', age=15, sex='M') # name: zhang other: {'sex': 'M', 'age': 15}
# 对于 dict, 如 p={'age': 15, 'sex':'M'}, 可以这样使用
person('zhang', **p)
总结一下
普通参数——必选参数
可选参数——参数有默认值,调用函数时可以传递也可以不传递,如果不传递则使用默认值
可变参数——传递数量不确定 (可以为0个) 的参数,类似传递一个 list
命名关键字参数 ——如果设置默认值,则同可选参数,否则必须传递,且传递时指定值对应的参数名
关键字参数——传递数量不确定 (可以为0) 的 键值对,类似传递一个 dict
在函数中出现的顺序必须和上面的保持一致
Python 参数使用总结的更多相关文章
- Python参数笔记
Python参数 1. 普通参数 必须要传入和定义时个数相同的参数 def miao(acfun, bilibili): print(acfun, bilibili) miao(11, 22) > ...
- Python参数基础
Python参数基础 位置参数 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 调用的时候使用参数的变量名,采用name=value的形式 默认参数 为没有传 ...
- Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数
Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...
- python 参数定义库argparse
python 参数定义库argparse 这一块的官方文档在这里 注意到这个库是因为argparse在IDE中和在ipython notebook中使用是有差异的,习惯了再IDE里面用,转到ipyth ...
- python 参数类型理解
简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...
- python 参数
摘自:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00137473844933 ...
- python 参数的组合
现在我们知道python定义函数的参数类型有:必选参数 默认参数 可变参数 关键字参数 但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的 定义的顺序必须是:必选参数,默 ...
- <转>Python 参数知识(变量前加星号的意义)
csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...
- python参数
1.形参变量和实参 形参变量:只有在被调用时才分配内存单元,在调用结束时,即释放所分配的内存单元,因此,形参只在函数内有效,函数调用结束返回主调用函数后则不能再使用该形参变量. 实参:可以是常量,变量 ...
- python参数传递方式
原文地址:http://www.cnblogs.com/zhaopengcheng/p/5492183.html python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象 ...
随机推荐
- 【字节校招】【实习】【内推】字节跳动春招(校招或实习均可)以及日常实习内推ing
本人是年前刚刚入职抖音的应届生,职业认证还未来的级更改,但是这些都不重要.重要的是我们不能错过优秀的你~ 字节跳动的相关福利我就不介绍了,技术实习生是400/天,房补是1500/月,三餐免费,下午茶, ...
- ffmpeg 编程常用 pcm 转 aac aac 转 pcm mp4 h264解码
ffmpeg 是现在开源的全能编解码器,基本上全格式都支持,纯 c 语言作成,相对比其它的 VLC ,GStreamer glib2 写的,开发更简单些,文档很棒,就是 examples 比较少. 常 ...
- 使用SharpDevelop配合MonoGame进行游戏开发
SharpDevelop是一款开源的轻量级IDE,它支持众多的语言及项目开发.可以看看支持的项目. 程序本体仅十几MB,打开项目速度飞快. 目前SharpDevelop最高支持C# 5.0,.NET ...
- 机器学习实用案例解析(1) 使用R语言
简介 统计学一直在研究如何从数据中得到可解释的东西,而机器学习则关注如何将数据变成一些实用的东西.对两者做出如下对比更有助于理解“机器学习”这个术语:机器学习研究的内容是教给计算机一些知识,再让计算机 ...
- 给萌新的 TS custom transformer plugin 教程——TypeScript 自定义转换器插件
xuld/原创 Custom transformer (自定义转换器)是干什么的 简单说,TypeScript 可以将 TS 源码编译成 JS 代码,自定义转换器插件则可以让你定制生成的代码.比如删掉 ...
- fatal: I don't handle protocol 'git@http' 解决
新建的git,在git push的时候遇到了报错“fatal: I don't handle protocol 'git@http'” 网上搜这个错误基本都是“fatal: I don't handl ...
- 数据挖掘算法——K-means算法
k-means中文称为K均值聚类算法,在1967年就被提出 所谓聚类就是将物理或者抽象对象的集合分组成为由类似的对象组成的多个簇的过程 聚类生成的组成为簇 簇内部任意两个对象之间具有较高的相似度,不 ...
- http详解和分析
1.http是什么? http 是一种超文本传输协议原名是这个Hypertext Transfer Protocol -- HTTP/1.1 可以百度查看http的RFC文档编号为RFC-2616 连 ...
- 74. pNextID、pNextVal、pNID的区别
pNextID是平台调用单个新增组件的时候调用的: pNextVal是平台批量新增的时候调用: pNID应该是自己写的 :
- Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of diosgenin against cerebral ischemia reperfusion effects(大脑的定量蛋白质组学揭示了薯蓣皂苷元对脑缺血再灌注效应的分子机制)
文献名:Alterations of brain quantitative proteomics profiling revealed the molecular mechanisms of dios ...