Python - 3.8 新特性之仅位置参数 & 仅关键字参数
前置知识
Python 函数:https://www.cnblogs.com/poloyy/p/15092393.html
什么是仅限位置形参
- 仅限位置形参是 Python 3.8 才有的新特性
- 新增了一个函数形参语法 /
- 添加了它,表示函数形参只能通过位置参数传递,而不能通过关键字参数形式传递
仅限位置形参栗子
def test1(a, b, c):
print(a, b, c) test1(a=1, b=2, c=3) def test(a, /, b, c):
print(a, b, c) # 正确
test(1, b=2, c=3)
test(*(1,), b=2, c=3) # 错误
test(a=1, b=2, c=3) 1 2 3
1 2 3
1 2 3 test(a=1, b=2, c=3)
TypeError: test() got some positional-only arguments passed as keyword arguments: 'a'
- 报错信息:test() 得到一些作为关键字参数传递的仅位置参数 ‘a'
- 在 / 形参前的参数只能通过位置参数传递
什么是仅限关键字参数
- 和仅位置参数一样,也是 Python 3.8 的新特性
- 参数只传 * 代表仅关键字参数
- 添加了它,表示函数形参只能通过关键字参数传递,而不能通过位置参数传递
仅限关键字参数栗子
def f1(a, *, b, c):
return a + b + c # 正确
f1(1, b=2, c=3)
f1(1, **{"b": 2, "c": 3}) # 错误
f1(1, 2, c=3) # 输出结果
6
6 f1(1, 2, c=3)
TypeError: f1() takes 1 positional argument but 2 positional arguments (and 1 keyword-only argument) were given
- 报错信息:接受1个位置参数,但提供了2个位置参数(和1个仅限关键字的参数)
- 在 * 形参后的参数只能通过关键字参数传递
/ 和 * 混合栗子
def f(a, /, b, *, c):
print(a, b, c) # 正确
f(1, 2, c=3)
f(1, b=2, c=3) # 错误
f(a=1, b=2, c=3)
f(1, 2, 3) # 输出结果
1 2 3
1 2 3
栗子二
def f(a, b, /, c, *, d, e):
print(a, b, c, d, e) # 正确
f(1, 2, c=3, d=4, e=5) # 错误
f(1, 2, 3, 4, 5) # 输出结果
1 2 3 4 5
Python - 3.8 新特性之仅位置参数 & 仅关键字参数的更多相关文章
- Python 3.8 新特性来袭
Python 3.8 新特性来袭 Python 3.8是Python语言的最新版本,它适合用于编写脚本.自动化以及机器学习和Web开发等各种任务.现在Python 3.8已经进入官方的beta阶段,这 ...
- Python 3 初探,第 1 部分: Python 3 的新特性
Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是系列文章中的第一篇,介绍了影响该 ...
- Python 3.9 新特性速览
国庆假期,Python 社区发布了 3.9 版本的第一个 stable release. 相比于 3.8,Python 3.9 新特性众多,但不少特性与大多数 Python"使用者" ...
- 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲
前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一. 关于函数的语法 1. 语法 def 函数名([参数]): 函数文档字符串 函数体 ...
- python函数—形参、实参、位置参数、关键字参数
1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...
- Python 3.9 新特性:任意表达式可作为装饰器!
一个月前(2月20日),一则新的 PEP 没有受到任何阻碍就被官方采纳了,这么快的速度,似乎并不多见. 然而,更为高效率的是,仅在半个月内,它的实现就被合入了代码仓.也就是说,我们最快有望在 3 天后 ...
- JDK1.7新特性(2):异常和可变长参数处理
异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
---------- android培训.java培训.期待与您交流! ---------- 一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包 ...
- python函数 位置参数,关键字参数,可变参数优先级
def fun(arg,args=1,*arg,**keywords): python 一共有这四类参数,第一类最常见,不用多说,第二类,关键字参数,python能通过关键字找到参数,python函数 ...
随机推荐
- 使用 Assimp 库加载 3D 模型
前言 要想让自己的 3D 之旅多一点乐趣,肯定得想办法找一些有意思一点的 3D 模型.3D 模型有各种各样的格式,obj的,stl的,fbx的等等不一而足.特别是 obj 格式的 3D 模型,完全是纯 ...
- SpringBoot系列——动态定时任务
前言 定时器是我们项目中经常会用到的,SpringBoot使用@Scheduled注解可以快速启用一个简单的定时器(详情请看我们之前的博客<SpringBoot系列--定时器>),然而这种 ...
- C++ 1//设计立方体类 //创建立方体的类 //设计属性和行为 //获取立方体的面积和体积 //分别利用(全局函数 和 成员函数)判断俩个立方体是否相等
1 //设计立方体类 2 //创建立方体的类 3 //设计属性和行为 4 //获取立方体的面积和体积 5 //分别利用(全局函数 和 成员函数)判断俩个立方体是否相等 6 #include <i ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- MeteoInfo-Java解析与绘图教程(一)
MeteoInfo-Java解析与绘图教程(一) 已经进入开发行业很多年了,这两年一直从事气象开发行业,为此对气象绘图有了新的见解 像色斑图与卫星图一直都有python去绘制,在偶然的情况下,我接触到 ...
- Docker入门第一章
Docker为什么出现? 一款产品:开发到上线 两套环境!应用环境,应用配置! 可能在开发环境你的产品是正常的,但是到了线上环境你的产品可能就会出现各种原因,或许是因为环境的不同,也可能是因为配置的不 ...
- Crash course statistics
Crash course statistics 01什么是统计学 描述性统计(Descriptive statistics) 推理统计可以得出之外的,基于"样本"的推论统计学来估计 ...
- 浅谈C#取消令牌CancellationTokenSource
前言 相信大家在使用C#进行开发的时候,特别是使用异步的场景,多多少少会接触到CancellationTokenSource.看名字就知道它和取消异步任务相关的,而且一看便知大名鼎鼎的Cancella ...
- Git 使用revert回滚已提交的commit
在git使用中如果提交错误的代码至远程服务器,可以使用git revert 命令回滚单次commit并且不影响其他commit. 回滚最新一次的提交记录: git revert HEAD 回滚前一次的 ...
- S3C2440—6.串口的printf实现
文章目录 一.框架 二.printf函数原理 2.1 printf的声明 2.2 参数解读 2.3 如何得到可变参数的值 2.4 解决变参的宏定义 2.5 完成printf函数的封装 三.结合UART ...