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里内最美味的牛蛙,唱着最好听的歌儿,畅聊人生的意义.突然,我的手机一震,气氛瞬间就安静下来,看着牛蛙碗 ...
随机推荐
- 机构:DARPA
DARPA,美国国防部高级研究计划局. 2021年3月19日,英特尔(Intel)宣布与美国国防部高级研究计划局(DARPA)达成的一项新合作,旨在推动在美制造的专用集成电路(ASIC)芯片的开发. ...
- unity---给物体施加普通力和位置力
普通力 让物体沿着某一方向获得一个力,vector3方向 addForceObj.GetComponent<Rigidbody>().AddForce(1000,0,1000); 位置力 ...
- 132_Power BI之建模必备要素&Power Query之数据表字段名称管理
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 近段时间比较忙,也没有看到很好的DAX素材,很久没有更新文章了,刚好有时间就来凑个热闹. 今天主题是Power ...
- 有趣的BUG之Stack Overflow
今天遇到一个很有意思的bug,当程序开发完成后打包到服务器运行,总是会出现栈溢出异常,经过排查发现,问题出现在一个接口上,但这个接口逻辑并不复杂,除了几局逻辑代码外和打印语句之外也没有其他的了,但是只 ...
- 【ACM程序设计】动态规划 第二篇 LCS&LIS问题
动态规划 P1439 [模板]最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 给出 1,2,-,n 的两个排列 P1 和 P2 ,求它们的最长公共子序列. ...
- 《C Primer Plus》第六版笔记--1~3章
目录 第一章 初识C语言 1 使用C语言的7个步骤 1.1 定义程序目标 1.2 设计程序(功能实现) 1.3 编写代码 1.4 编译 1.5 运行程序 1.6 测试和调试程序 1.7 维护和修改代码 ...
- 《Unix 网络编程》15:Unix 域协议
Unix 域协议 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 本 ...
- 2021.06.05【NOIP提高B组】模拟 总结
T1 题意:给你一个 \(n\) 个点 \(n\) 条边的有向图, 求每个店经过 \(K\) 条边后的边权和.最小边权 \(K\le 10^{10}\) 考试时:一直想着环,结果一直不知道怎么做 正解 ...
- 测试平台系列(97) 完善执行case部分
大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节我们讨论了怎么结束一个 ...
- POI设置列宽 自动调整列宽
for (int i = 0; i <= totalColumn; i++) { sheet.autoSizeColumn((short)i,true); //调整列宽 } 其中totalCol ...