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函数 ...
随机推荐
- joomla 3.7.0 (CVE-2017-8917) SQL注入漏洞
影响版本: 3.7.0 poc http://192.168.49.2:8080/index.php?option=com_fields&view=fields&layout=moda ...
- 自学linux——5.网络设置
网络设置 1.网卡配置文件位置:ls /etc/sysconfig/network-scripts/ 2.网卡配置文件命名:ifcfg-网卡名称 3.查看网卡配置文件:cat /etc/sysconf ...
- Java 7 新特性之try-with-resources实践理解
想象这么一个情景,我们需要使用一个资源,在使用完之后需要关闭该资源,并且使用该资源的过程中有可能有异常抛出.此时我们都会想到用try-catch语句,在finally中关闭该资源.此时会有一个问题,如 ...
- 史上最详细的Android消息机制源码解析
本人只是Android菜鸡一个,写技术文章只是为了总结自己最近学习到的知识,从来不敢为人师,如果里面有不正确的地方请大家尽情指出,谢谢! 606页Android最新面试题含答案,有兴趣可以点击获取. ...
- TCP文件上传实现
TCP文件上传实现 服务端: package net.study; import java.io.*; import java.net.ServerSocket; import java.net.So ...
- Java8新特性(一)之Lambda表达式
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Linux命令(四)之常用文件拷贝/移动,文件解压缩,文件查找等相关的操作
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- A Python Environment Detector
The user provide the method to get result(command on remote host), the check standard(a callback fun ...
- MySQL-20-MySQL优化
MySQL优化哲学 1 为什么优化? 为了获得成就感? 为了证实比系统设计者更懂数据库? 为了从优化成果来证实优化者更有价值? 但通常事实证实的结果往往会和你期待相反!优化有风险,涉足需谨慎! 2 优 ...
- SSRF详解
上一篇说了XSS的防御与绕过的思路,这次来谈一下SSRF的防御,绕过,利用及危害 0x01 前置知识梳理 前置知识涉及理解此漏洞的方方面面,所以这部分要说的内容比较多 SSRF(Server-Side ...