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
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. javascript:cors跨域postMessage、xhr2和xmldomain
  2. PHP之OOP要点摘要
  3. selenium+python+eclipse开发中遇到的问题
  4. c3p0、dbcp<转>
  5. poj: 1207
  6. ios开发--KVO浅析
  7. 使用Eclipse提供的Axis1.x生成WSDL文件以及Server和Client代码
  8. 十四、C# 支持标准查询运算符的集合接口
  9. struts2之动态方法调用(转)
  10. linux shell: 搜索字符串,剔除包含特定字符的行
  11. hdu149850 years, 50 colors (多个最小顶点覆盖)
  12. web性能优化 来自《web全栈工程师的自我修养》
  13. [Go] golang的error接口
  14. Python中的@符号
  15. HR_Array Manipulation
  16. logistic回归为什么要使用sigmoid函数
  17. 学会数据库读写分离、分表分库——用Mycat
  18. Maven私服(Nexus)资源上传下载
  19. java.sql.SQLSyntaxErrorException: ORA-00904: "column": 标识符无效
  20. Java初学者的30个常见问题

热门文章

  1. 微信小程序之上拉加载更多
  2. 媒体查询(media):设置PC端网页居中显示
  3. SpringBoot web获取请求数据【转】
  4. IUAP--单点登录
  5. JS实现AES加密并与PHP互通的方法分析
  6. BOM的对象总结(location,screen,navigator,history)
  7. Spark-day01
  8. oracle加锁
  9. php 明天,下个星期,时间函数
  10. iOS:学习runtime的理解和心得