前置知识

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 新特性之仅位置参数 & 仅关键字参数的更多相关文章

  1. Python 3.8 新特性来袭

    Python 3.8 新特性来袭 Python 3.8是Python语言的最新版本,它适合用于编写脚本.自动化以及机器学习和Web开发等各种任务.现在Python 3.8已经进入官方的beta阶段,这 ...

  2. Python 3 初探,第 1 部分: Python 3 的新特性

    Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是系列文章中的第一篇,介绍了影响该 ...

  3. Python 3.9 新特性速览

    国庆假期,Python 社区发布了 3.9 版本的第一个 stable release. 相比于 3.8,Python 3.9 新特性众多,但不少特性与大多数 Python"使用者" ...

  4. 第5章函数进阶 第5.1节 Python函数的位置参数、关键字参数精讲

    前面第二章简单介绍了函数定义的语法,经过后面一系列的学习,函数有必要再次介绍一下相关内容. 一.    关于函数的语法 1.    语法 def 函数名([参数]): 函数文档字符串 函数体      ...

  5. python函数—形参、实参、位置参数、关键字参数

    1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...

  6. Python 3.9 新特性:任意表达式可作为装饰器!

    一个月前(2月20日),一则新的 PEP 没有受到任何阻碍就被官方采纳了,这么快的速度,似乎并不多见. 然而,更为高效率的是,仅在半个月内,它的实现就被合入了代码仓.也就是说,我们最快有望在 3 天后 ...

  7. JDK1.7新特性(2):异常和可变长参数处理

    异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...

  8. 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举

    ---------- android培训.java培训.期待与您交流! ---------- 一.静态导入 1.import和import static区别: (1)import 是导入一个类或某个包 ...

  9. python函数 位置参数,关键字参数,可变参数优先级

    def fun(arg,args=1,*arg,**keywords): python 一共有这四类参数,第一类最常见,不用多说,第二类,关键字参数,python能通过关键字找到参数,python函数 ...

随机推荐

  1. AAAI 2021 最佳论文公布

    ​ 作者:Synced 翻译:仿佛若有光 第三十五届 AAAI 人工智能会议 (AAAI-21) 以虚拟会议的形式拉开帷幕.组委会在开幕式上公布了最佳论文奖和亚军.三篇论文获得了最佳论文奖,三篇被评为 ...

  2. Electron 开发音视频

    废话不多说,咱直接进入正题! 创建 Electron 项目 前提条件 在使用Electron进行开发之前,需要安装 Node.js. 要检查 Node.js 是否正确安装,请在您的终端输入以下命令: ...

  3. Android 帧动画使用

    帧动画 使用一系列不同的图片,然后像一卷胶卷一样按顺序播放,这是一种传统的动画,也可称为帧动画.也可以比喻为像一卷胶卷一样按顺序播放. 播放起来,有点像在看gif图. 本文介绍使用AnimationD ...

  4. CVPR2021 | Transformer用于End-to-End视频实例分割

    ​ 论文:End-to-End Video Instance Segmentation with Transformers 获取:在CV技术指南后台回复关键字"0005"获取该论文 ...

  5. C语言复习(六)----typedef 的作用

    typedef的作用 重命名变量:typedef unsigned int Uint;//可以使用Uint代替unsigned int 定义新的数据类型 typedef struct Books{ c ...

  6. js中判断数据类型的四种方法总结

    js中判断数据类型的四种方法 前言 在js中,我们经常需要判断数据的类型,那么哪些方法可以用来判断数据的类型呢?哪种方法判断数据类型最准确呢? 我们来一个个分析: 1.typeof typeof是一个 ...

  7. awk-07-IO和printf语句

    IO语句 1.getline 2.getline var 把a文件的行,追加到b文件的结尾 把 a 文件的行替换 b 文件的指定字段 把 a 文件的行替换 b 文件的对应字段 3.command | ...

  8. pikachu 目录遍历 敏感信息泄露

    目录遍历漏洞概述在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能变的更加灵活. 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执 ...

  9. DHCP服务-中继代理

    DHCP中继代理(即DHCP Relay Agent)用于转发来自于另一个没有DHCP服务器子网段中客户端的DHCP请求,即当一台DHCP客户端发起请求后,此时DHCP中继代理就会将已经预先定义好的D ...

  10. 3 分钟了解 JSON Schema

    大家好,我不是鱼皮. 幸运又不幸,我是一名程序员,他也是一名程序员. 周末,我在开发网站,他在开发游戏,两个人一起写代码,一起写 Bug 头秃,竟也有了一丝别样的浪漫,好不自在! 今天,他遇到了一个后 ...