小说python的类型提示(type hints)

大家都知道python是一门动态类型的语言,但作者Guido van Rossum在2014年创建PEP-484添加了类型提示,在python3.5的版本中正式发布这一特性。 为什么需要类型提示呢?它能给开发者带来哪些便利呢?本文就小说一把type hints

我们需要它么?

显然,type hints不是必须的,要不也不会再3.5中才加入,但反过来想想,既然能作为标准库发布,肯定是有必要的。

1. 代码更易读

def example_without_typehints(heads, request_data,
                    user_id=None,
                    as_json=False):
    """
    正常函数实例
    :param heads: 协议头
    :param request_data: 请求数据
    :param user_id: 用户id
    :param as_json: 是否作为json数据发送
    :return:
    """

这是一个典型的函数,刚开始写时,知道heads是一个字符串,request_data定义的是一个dict,user_id是一个int,as_json是一个bool值,它会返回dict数据。

但当你过上一个月,二个月再来看时,你还确定这个函数如何调用么?需要看下函数体了吧。

def example_with_typehints(heads: str,
                  request_data: Optional[Dict[str, str]],
                  user_id: Optional[int] = None,
                  as_json: bool = True) -> Dict:
    """
    typehints实例
    :param heads: 协议头
    :param request_data: 请求数据
    :param user_id: 用户id
    :param as_json: 是否作为json数据发送
    :return: {
        'code': 200,
        'msg': ''
    }
    """

看看这个,有了类型提示,参数类型和返回值一目了然。

请记住,代码是给人看的,看代码的频率比写代码的频率高得多,易读很重要

2. 调用时类型匹配提示

当在函数调用时,如果传入的参数与类型不匹配,IDE会给出警告提示

3. 库函数提示

如果指定了对应的类型,IDE会给出此类型的库函数,高效输入

上述可见,加入类型提示对于代码的易读性是很有必要的,如果使用IDE,编码效率会进一步提升,错误率也会降低。

但是

type hints 只是类型提示,不会做类型检查

不要期望运行时报错噢

原文发布于微信公众号 - chafezhou(gh_5b8f0c59b682)

原文发表时间:2018-07-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏滕先生的博客

runtime官方文档翻译版本通过OC源代码通过NSObject中定义的方法直接调用运行时的函数消息传递机制使用隐藏参数获取方法地址动态方法解析动态加载消息转发转发和多继承代理对象转发和继承类型编码声

29670
来自专栏CSDN技术头条

JavaScript内存管理机制以及四种常见的内存泄漏解析

几个星期前,我们开始编写深入研究JavaScript工作原理的系列文章。通过阅读这些文章,你可以了解到JavaScript的构建块及其交互原理,从而能够编写出更...

206100
来自专栏技术栈大杂烩

Python: 受限制的 "函数调用"

函数功能简单明了, 对于结果, 大家应该也不会有太大的异议:func分别是取得全局命名空间中a的值和使用内置命名空间中的函数id获取了a的地址. 熟悉Pytho...

15930
来自专栏Golang语言社区

(译)Go 语言的内存、指针详解

这是一篇面向即将学习 go 语言并且对指针理念或者 go 的指针类型不是很了解的程序员的内容 什么是指针? 简单解释,指针就是指向另一段地址的值,课本上是这么解...

484140
来自专栏猿人谷

C++内存管理学习堆和栈

一 C++内存管理 1.内存分配方式   在讲解内存分配之前,首先,要了解程序在内存中都有什么区域,然后再详细分析各种分配方式。 1.1 C语言和C++内存分...

40760
来自专栏猿人谷

volatile

   当一个对象的值可能会在编译器的控制或监测之外被改变时,例如一个被系统时钟更新的变量,那么该对象应该声明成volatile。因此编译器执行的某些例行优化行为...

22070
来自专栏java一日一条

8种常见的Java不规范代码

在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注...

8310
来自专栏Java学习网

java开发中代码级别的优化方法总结,有效提高程序性能

负载测试和应用程序监控对于确定应用程序的一些关键性能瓶颈非常有用。但同时,我们需要遵循良好的编码习惯,以避免在对应用程序进行监控的时候出现过多的性能问题。

19020
来自专栏java一日一条

8种常见的Java不规范代码

在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注...

15110
来自专栏杂烩

duubo分组聚合 原

除了官网上有这部分的简单介绍外,在别的地方几乎找到真正可行的测试了,这里自己捣鼓一下,已做备忘。

9010

扫码关注云+社区

领取腾讯云代金券