python 参数类型理解
简介
大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍。
必选参数
必选参数,又称位置参数,是大多数语言都会有的参数类型, 此参数在调用是必须进行传参。
# 必选参数
def sum(x, y):
return x + y
print(sum(1,2))
默认参数
默认参数一般会拥有一个默认值,当对默认参数传参时,和必选参数作用类似,当不对默认参数传参时,则使用默认参数的默认值
# 默认参数
def plus(x, y, z=1):
return x + y + z
print(plus(1,2))
print(plus(1,2,3))
可变参数
可变参数主要是为了方便在参数未知的情况下传递参数值,可变参数一般是以元组(tuple)的形式调用, 符号为*args
# 可变参数
def sum2(*args):
print(args)
total = 0
for item in args:
total += item
return total
print(sum2(1,3,4))
(1, 3, 4)
8
关键字参数
与可变参数类似,都是为了方便进行参数未知情况下的参数传递,不同的是传递的参数值是键值对形式,关键字参数一般是以字典(dict)形式传递,符号为**kwargs
# 关键字参数
def test(**kwargs):
print(kwargs)
test(name='mike', age=14, gender='man')
{'name': 'mike', 'age': 14, 'gender': 'man'}
命名关键字参数
命名关键字参数是从关键字参数衍生而来的,对关键字参数做了进一步的限制,符号为*
# 命名关键字参数
def test2(name, age, *, gender, city):
print(name, age, gender, city)
# 命名关键字参数传递键值对形式时只能传递*后面规定的key值,不能减少或添加新的key值,否则会报错
test2('mike',18, gender='man', city='nanjing')
test2('mike',18, test=1, city='beijing')
mike 18 man nanjing
Traceback (most recent call last):
File "/home/ts/flask_study/python参数类型/param.py", line 36, in <module>
test2('mike',18, a=1, city='beijing')
TypeError: test2() got an unexpected keyword argument 'a'
参数的顺序
由于存在多种参数,且部分参数的符号类似,因此,在进行多参数设置时需要考虑参数的顺序,顺序如下
必选参数(位置参数)、默认参数、可变参数、命名关键字参数和关键字参数。
def test3(a, b=1, *, d, **kwargs):
print(a,b,d,kwargs)
test3(1,b=2, d=2, name='mike', gender='man')
1 2 2 {'name': 'mike', 'gender': 'man'}
总结
1.任何包含可变参数和关键字参数的函数都可以通过如下方式实现
func(*args, **kwargs)
2.为了代码更好的可读性,建议一次性不要使用过多的参数。
python 参数类型理解的更多相关文章
- Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数
Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...
- arcgis python 参数类型和含义
数据类型 datatype 关键字 描述 地址定位器 DEAddressLocator 用于地理编码的数据集,存储地址属性.关联的索引以及用于定义将地点的非空间描述转换为空间数据这一过程的规则. 地址 ...
- Python参数类型
位置参数 默认参数 可变参数 命名关键字参数 关键字参数 def position_only(a, b): print(a, b) def keyword(a='a', b='b'): print(a ...
- Python函数小结(1)--参数类型(*, ** 的区别), 闭包
刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...
- Python的参数类型
参数类型: 1.必填参数,位置参数(positional arguments,官方定义,就是其他语言所说的参数) 2.默认值参数,非必传 3.可变参数,非必传,不限制参数个数,比如说给多个人发邮件,发 ...
- Python 函数参数类型大全(非常全!!!)
Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
- Python 带参数的装饰器 [2] 函数参数类型检查
在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...
- [Python]可变类型,默认参数与学弟的困惑
一.学弟的困惑 十天前一个夜阑人静.月明星稀的夜晚,我和我的朋友们正在学校东门的小餐馆里吃着方圆3里内最美味的牛蛙,唱着最好听的歌儿,畅聊人生的意义.突然,我的手机一震,气氛瞬间就安静下来,看着牛蛙碗 ...
随机推荐
- MyBatisPlus 入门教程,这篇很赞
在之前的文章中我们经常使用MybatisPlus进行增删改查,可能有些小伙伴对mybatisplus不是很熟悉,今天特意出了一般入门级的教程,我自己也是一边学习一边写的,有什么地方写的不好的地方请留意 ...
- 使用C#跨PC 远程调用程序并显示UI界面
在项目中有一个需求是需要在局域网内跨PC远程调用一个程序,并且要求有界面显示,调查了一些资料,能实现远程调用的.Net技术大概有PsExec.WMI.Schedule Task. 这三种方式都做了一个 ...
- 升级 package.json 内所有包的版本号
安装 全局安装这个库 npm-check-updates,因为后续依靠它来实现更新 package.json 中包的版本号 yarn global add npm-check-updates 食用 看 ...
- 用了Scrum越来越累?这三点帮你走出困境
摘要:你有没有一种感觉,团队用了Scrum之后,工作任务越来越多,加班越来越严重?有?好兄弟,这篇文章正好能帮你~ 本文分享自华为云社区<用了Scrum越来越累?这三点帮你走出困境>,作者 ...
- Spring Boot 2.7.0发布,2.5停止维护,节奏太快了吧
这几天是Spring版本日,很多Spring工件都发布了新版本, Spring Framework 6.0.0 发布了第 4 个里程碑版本,此版本包含所有针对 5.3.20 的修复补丁,以及特定于 6 ...
- 138_Power BI&Power Pivot特殊半累加度量
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 半累加度量(semi-additive measure),在DAX建模分析的时候经常遇见:应用场景诸如银行存款. ...
- CSS3:scrollbar样式设置
CSS3:scrollbar样式设置 1. 设置出现滚动条的方式 overflow:scroll --- x和y方向都会出现滚动条 或者 overflow-x:scroll --- 只有x方向出现滚动 ...
- 异常——JavaSE基础
异常 异常的分类 检查性异常 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略 错误ERROR:错误不是异常 在Java中把异常当作对象来处理,并且定义了一个基类java.lang.T ...
- Lombok - 快速入门
1. val 自动识别循环变量类型 本地变量和foreach循环可用. import java.util.ArrayList; import java.util.HashMap; import lom ...
- bitmap技术解析:redis与roaringBitmap
bitmap的表象意义是,使用一个01标识位来表示是否的状态,可以达到节省空间和高效判定的效果.在我们的实际工作中,也有着许多的应用场景,相信了解bitmap定会给你带来一些额外的收获. 1. bit ...