Python type hints 之 Optional,Union
1,前言
type hint 在pep484加入,我个人觉得这种类似于类型约束的(机制)有点违背了python简单、简洁的初衷,在慢慢向c# java 这种强类型语言看齐的节奏。
不过好在不强制使用,个人觉得依照规则编码也有点好处,
一方面,因为输入输出的类型进行定义的过程中,推动个人对输入输出进行详细的思考,个人的思路也会更清晰, 写的函数不容易飘。
另一方面,当代码量大的时候,可以借助工具进行检查,提前知道bug。
最后,也起到了docstring的作用,交流的时候,别人也更容易理解, 过了很长时间自己忘得差不多回过头看的时候,也能很快回忆起来。
2,type hints 类型
type hints 主要是要指示函数的输入和输出的数据类型,数据类型在typing 包中,基本类型有str list dict等等,
使用示例:
def hello(name: str) -> None:
print('hello {}'.format(name))
type hints 有很多别的类型,此处主要说Union,Optional, 因为对于python 用到的也比较多
Union 是当有多种可能的数据类型时使用,比如函数有可能根据不同情况有时返回str或返回list,那么就可以写成Union[list, str]
Optional 是Union的一个简化, 当 数据类型中有可能是None时,比如有可能是str也有可能是None,则Optional[str], 相当于Union[str, None]. **注意** 和 函数有默认参数None有区别,有区别,有区别,不可省略默认参数,如下示例:
原始:def func(args = None):
错:def func(args:Optional[str]) -> None:
对:def func(args:Optional[str] = None) -> None:
type hints 还可以自定义类型等等
---------------------
作者:ypgsh
来源:CSDN
原文:https://blog.csdn.net/ypgsh/article/details/84992461
版权声明:本文为博主原创文章,转载请附上博文链接!
Python type hints 之 Optional,Union的更多相关文章
- Python Type Hints(类型提示)
在做自动化测试的时候,改进测试框架,类型提示会让你写代码时更加流程,当你在一个模块定义了类型,而其他模块没有提示的时候,是相当不方便.
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
- Python Type Hint类型注解
原文地址:https://realpython.com/python-type-checking/ 在本指南中,你将了解Python类型检查.传统上,Python解释器以灵活但隐式的方式处理类型.Py ...
- 课程一(Neural Networks and Deep Learning),第二周(Basics of Neural Network programming)—— 3、Python Basics with numpy (optional)
Python Basics with numpy (optional)Welcome to your first (Optional) programming exercise of the deep ...
- Python Basics with numpy (optional)
Python Basics with Numpy (optional assignment) Welcome to your first assignment. This exercise gives ...
- Python type类具体的三大分类:metaclasses,classes,instance
Python type类视角中的对象体系需要我们不断的学习,其中我们使用的时候需要注意.下面我们就看看如何才能更好的运用Python type类.下面的文章希望大家有所收获. 在单纯的Python t ...
- 使用python type动态创建类
使用python type动态创建类 X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X 和下列方法class X(object): a = 1效 ...
- Python -类型提示 Type Hints
为什么会有类型提示 Python是一种动态类型语言,这意味着我们在编写代码的时候更为自由,运行时不需要指定变量类型 但是与此同时 IDE 无法像静态类型语言那样分析代码,及时给我们相应的提示,比如字符 ...
- python type的用法
目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...
随机推荐
- chrome 浏览器 添加访问助手来访问网上应用商店
chrome浏览器的强大之处,在于可以chrome浏览器的扩展程序来实现很多功能.然而不能下载扩展程序.可以借助chrome访问助手来实现: 下载chrome访问助手:https://pan.baid ...
- ACdream 1101 线段树
题目链接 瑶瑶想要玩滑梯 Time Limit: 10000/5000MS (Java/Others)Memory Limit: 512000/256000KB (Java/Others) Submi ...
- [J2EE规范]RMI简单实例 标签: j2ee实例 2017-06-29 18:05 217人阅读 评论(13)
RMI是什么? RMI是指Java Remote Method Invocation,远程方法调用,RMI是Java的一组拥护开发分布式应用程序的API.RMI使用Java语言接口定义了远程对象,它集 ...
- 外贸电子商务网站之Prestashop 设置网站基本信息
顶部banner图,首页各尺寸banner图.社交分享.物流支持.支付方式提醒等等设置 示例版本:1.6.1.11
- MSSQL2008 数据压缩方法
数据压缩功能使得SOL Server 2008允许在表.索引和分区中执行数据压缩,这样不仅可以节省磁盘空间,而且允许更多数据置入RAM中,从而提升数据库查询的性能. 1.启用行压缩 如果我们要在指定的 ...
- CentOS 上MySQL报错Can't connect to local Mysql server through socket '/tmp/mysql.scok' (111)
好吧,这是最常见的MySQL服务没有打开 那就赶紧去打开啊! 在管理员模式下运行以下语句: /usr/local/mysql/bin/mysqld_safe --user=mysql & 成功 ...
- python中的输入和输出
输入和输出 输出: 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, ...
- MySQL非安装版安装
1 数据库的打开方式(非安装版本) 1.解压mysql-5.7.12-winx64.zip到一个路径上没有空格没有汉字的目录中 2.复制my-default.ini重命名为my.ini 3.命令行进入 ...
- python 对象(object)
- [linux]vmware中linux虚拟机扩容 标签: vmware虚拟机linux 2016-09-05 08:03 315人阅读 评
扩容原因 现阶段,虚拟机的标配都是1G内存和20G硬盘,大部分时候是够用的,但是也会出现虚拟机里面东西放多了硬盘不够用的情况,这种情况下,除了清理垃圾,另外就只能给虚拟机扩容了.因为window扩容相 ...