python 3.8 新特性 video_1分钟了解:Python3.8 新特性:仅位置参数
这是Python3.8新特性的第二篇,第一篇介绍了赋值表达式,这篇文章花几分钟了解什么是仅位置参数(Positional-Only Arguments)
插播一条:我自己是一名从事了多年开发的Python老程序员,辞职目前在做自己的Python私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Python学习干货,可以送给每一位喜欢Python的小伙伴,想要获取的可以加我的企鹅Python交流群,639+584+010,即可免费获取。群里有很多志同道合的朋友,大家都在一起学习Python,在学习Python中遇到问题,都可以问我。
函数传递参数的方式繁多,有位置参数、默认参数、可变参数、关键字参数、命名关键字参数。举个例子:
defadd(x, y, *args, **kwargs):
print(f"x={x}, y={y}")
这里的 x 和 y 就是两个位置参数,我们可以这样调用
>>> add(1,2)
x=1, y=2
因为是位置参数,严格遵守位置顺序。
不过,你也可以把 x 和 y 当做命名关键字参数进行传递,参数的顺序可改变,例如把 y 放前面,不影响结果
>>> add(y=2, x=1)
x=1, y=2
第二种方式看似更灵活,出错的风险也增加了,特别是多人合作的项目中。
那么如何从语法层面上禁止这样调用,避免出错呢?
这里就可以使用Python3.8中的仅位置参数语法了,在函数定义时,参数之间可指定一个斜杠(/),斜杠前的参数严格遵守仅位置参数的定义,例如:
>>> defadd(x, y, /, *args, **kwargs):
... print(f"x={x}, y={y}")
...
>>> add(1,2)
x=1, y=2
“/“ 告诉解释器,x 和 y 是两个严格的位置参数,不能当做命名关键字参数进行传递。如果把它当作命名关键字参数进行传递参数时,会怎么样呢?
>>> add(y=2, x=1)
Traceback (most recent call last):
File"", line1,in
TypeError: add() missing2required positional arguments:'x'and'y'
报错了,系统不允许你使用这种方式调用,仅支持位置参数的方式进行调用,调用时不能指定参数的名字。
其实,这个语法在Python3.7 就有出现过,比如内置函数 float
python3.6可以指定参数名字进行调用
>>> float(x=1)
1.0
python3.7就会报错
>>> float(x=1)
Traceback (most recent call last):
File"", line1,in
TypeError: float() takes no keyword arguments
>>> float(1)
1.0
可以看下python3.7 下 float 的帮助文档
>>> help(float)
Help on class float in module builtins:
class float(object)
| float(x=0, /)
|
| Convert a string or number to a floating point number, if possible.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
你会发现float定义中,也有个 “/“,说明 x 是位置参数,调用时,不能指定名字。
总结
仅位置参数的语法就是在函数定义时,位置参数用 “/” 进行分隔,调用时不允许使用命名关键字参数进行调用,你明白了吗?
python 3.8 新特性 video_1分钟了解:Python3.8 新特性:仅位置参数相关推荐
- Python3.8 新特性:仅位置参数
这是Python3.8新特性的第二篇,第一篇介绍了赋值表达式,这篇文章花几分钟了解什么是仅位置参数(Positional-Only Arguments) 函数传递参数的方式繁多,有位置参数.默认参数. ...
- python 3.6.0新语法_详解Python3.6正式版新特性
按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五.从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版 ...
- python语言入门u-Python语言十分钟快速入门
[简介] Python(蟒蛇)是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. python logo [ ...
- python不想学了-十分钟也学不会python?就不要学python了
扩展:IDLE快捷键总结 Ctrl + [ .Ctrl + ] 缩进代码 Alt+3 Alt+4 注释.取消注释代码行 Alt+5 Alt+6 切换缩进方式 空格Tab Alt+/ 单词完成,只要文中 ...
- python高阶函数(三分钟读懂)
python高阶函数(三分钟读懂) 函数式编程 Python中,函数是一等对象 一等对象:具有特点 ① 对象是在运行时创建的 ② 能赋值给变量或作为数据结构中的元素 ③ 能作为参数传递 ④ 能作为返回 ...
- Python自动化(十二):一分钟搞定几百个Excel中查找的数据
一.需求说明 首先我们来看下今天的需求,有一份档案记录总表的Excel工作簿, 每天会根据当天日期建立新表,每天的表格内包含所有档案信息,同时也有可能会添加新的档案名.同个年度的总表在年末可能会有两. ...
- Python3.8 新特性:f-strings调试
f-strings调试 这是Python3.8新特性的第三篇,第一篇介绍了Python3.8 新特性:赋值表达式,第二篇是Python3.8 新特性:仅位置参数.这篇文章介绍f-strings调试功能 ...
- 小猪的Python学习之旅 —— 10.三分钟上手Requests库
小猪的Python学习之旅 -- 10.三分钟上手Requests库 标签:Python 一句话概括本文: 本节讲解Requests库的常见使用,以及一个实战项目: 扒取某一篇微信文章里所有的图片,视 ...
- Python3.10新特性初体验
Python3.10新特性初体验 注:图片来源 目录 结构模式匹配 [PEP 635] union类型允许X | Y [PEP 604] 带圆括号的上下文管理器 一.结构模式匹配(新增PEP 635) ...
最新文章
- 最长公共子序列_Java恶意序列化背后的历史和动机
- python3中文手册-Python 输入和输出
- Nginx做负载均衡报:nginx: [emerg] could not build the types_hash
- IDM——服务器响应显示您没有权限下载此文件(百度网盘下载问题)
- FortiGate设置E-mail告警
- python学习---常见的内置字符串(二)
- 上万规模数据湖如何在实验室测试
- Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比
- Mysql数据库-面试题
- FPGA远程更新之限制条件
- Mysql常见的日期查询语句
- html 链接 vf,vfp 超链接
- 【GMSK】研究PCM/FM和GMSK的调制和解调方法
- 详谈软件工程之软件开发方法
- 做过的医药类DA及产品宣传单页
- ActiveX开发详解
- Erlang学习时间曲线
- 常见的http状态码以及https的通讯过程和DNS的解析过程
- html嵌入虎牙直播功能,虎牙开放平台-年轻人喜爱的互动直播平台,直播帮助,直播教程,虎牙直播...
- python数据科学导论_数据科学导论:Python语言(原书第3版)
热门文章
- 【PHP】伪静态 - 1. 使用正则表达式实现
- 易宝支付碰到 交易签名无效问题 (2)
- 第七课 循环神经网络与自然语言处理
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第16篇]描述DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。
- python get post请求_使用python封装get+post请求
- java api帮助文档_JAVA的Swagger界面丑、功能弱怎么破?
- c 的word转为html5,word与html互转(1) -- word转html
- margin background_margin:auto与布局展示
- 依赖注入底层反射原理_PHP反射机制实现自动依赖注入
- 火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍