py里面不需要显示声明类型,这和java c这些静态语言不同,虽然python这样做少了一些代码和写代码的困难度,但还是非常多的弊端的,运行速度 代码安全, 这些都是语言本身带来的本的弊端,这些没办法没办法弥补(说用c扩展和加入大量if isinstance来判断类型的,这是不好的不方便的)。但下面这两种却是可以通过docstrings来弥补的。

1.没有类型就给函数(或者方法)调用者带来麻烦,这个函数怎么用,这个参数代表什么,需要传一个什么样的参数来调用这个函数,函数返回什么东西,这都对代码阅读者和函数使用者带来很大麻烦。

2.没有类型就得不到第三方编辑器的有力提示和自动补全补全,pycharm不知道这个变量是个什么类型的对象,还咋能通过 点号 来补全呢,代码不能补全和智能提示,那用第三方ide工具和使用vim 记事本有什么区别。除了内置的int  float str list什么的对象,可能会比较熟悉他们的一些方法,当大量使用自定义的calss类型时候,不能补全和提示是个灾难。至于有些qq群友说用一直vim写几千行代码的文件,说什么自己是大牛,不屑使用第三方ide工具,对这种纯粹的装逼犯我就不想说什么了。

在python3.6里面可以使用新的语法格式来指明函数的参数和返回类型

例如

def  func(x: int )  -> str:

psss

这样做了不仅有利于阅读传什么返回什么,更是有利于编辑器自动推断类型达到代码补全的目的,这里的指定类型可以是python自带的内置类型 int  dict list什么的,也可以是第三方库的类的类型,也可以是自己定义的类的类型。

在py3.6中这么使用如图,但除了函数参数和返回类型外,本地变量可以借助docstring来完成。

在py2里面不能使用上面的语法,可以使用dcostings来解决。

def func(x,y):
"""
:type x: list ##参数类型
:type y: str
:rtype :dict ###返回值类型
"""
z = funxxxxxxxxxxxxxx()
""":type :set""" ###指定本地变量的类型 z.add() x.append() func([2,3],4).popitem() ###此处也是自动补全的

这样做了以后,就更清晰了,那么调用这个func时候,就会知道要传什么类型的参数了,返回什么类型的结果。更为有利的是只需要敲入一个x.a就能自动补全成x.append了。同理y z func的结果都可以补全。

包括自定义的类也是可以指定的,下图这个cu参数是一个Chinaunicome的类的实例,如果不指定类型,很多很长的方法要手写。一旦方法拼错了,这个对象压根就没这个方法,点击运行,python也不能很快报错,只能到运行到那一行的时候才报错,这个报错太迟了,老是这样反复通过运行来测试很影响效率和心情。对于静态语言,很多错误是提前还没运行就在编译时候给你报错了,即使拼写错误也无所谓了,马上改就行。动态语言是当运行到那段代码才报错,这样对于拼写错误造成的代码错误实在是太坑了。

处理一个requests的response对象。

pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型的更多相关文章

  1. python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象

    今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo( ...

  2. Js基础知识5-函数返回值、函数参数、函数属性、函数方法

    函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...

  3. Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性

    readdir函数: struct dirent *readdir(DIR *dirp); The  data  returned by readdir() may be overwritten by ...

  4. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  5. execute sp_executesql 用变量获取返回值

    execute sp_executesql 用变量获取返回值 1,EXEC的使用 2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_exe ...

  6. Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题

    在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...

  7. Java里的参数类型/返回值类型

    参数类型/返回值类型: ##数据类型: ###基本类型: ###引用类型: ####数组 ####类 ####接口 参数类型/返回值类型是类和接口的情况: 1.参数类型是普通类的情况 为什么写成静态, ...

  8. PYTHON-函数的定义与调用,返回值,和参数

    函数基础'''1. 什么是函数 具备某一功能的工具->函数 事先准备工具的过程--->函数的定义 遇到应用场景,拿来就用---->函数的调用 函数分类两大类: 1. 内置函数 2. ...

  9. day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

随机推荐

  1. dlib实现人脸landmark点检测以及一些其他的应用

    首先从中这里下载下代码: https://github.com/ageitgey/face_recognition#face-recognition 然后安装所以必须的组件,我用的Python3.5 ...

  2. 【javascript】分享一款经典的日期控件 My97DatePicker

    最近在做平台项目,其中有用到日期选择,相对于 jqueryui 的 datepicker 我更喜欢 My97DatePicker. 理由 体积小,相对于 jqueryui 的 datepicker 的 ...

  3. ApplicationContextAware接口的作用

      1/============== 在Web应用中,Spring容器通常采用声明式方式配置产生:开发者只要在web.xml中配置一个Listener,该Listener将会负责初始化Spring容器 ...

  4. 在windows下实时监控、接受文件变化小工具

    在windows下实时监控文件变化小工具   在测试的时候,我们可能想实时监控系统打出的log信息,在unix系统上我们可以用"tail -f"实现,在windows下一般就无法做 ...

  5. Qt学习 之 QWebView

    WebKit 是一个开源的浏览器引擎,目前 Safari,Chrome 等浏览器均使用了 WebKit 作为核心.Qt 从 4.5 版本开始,集成了 WebKit 作为 Qt 的平台组件,用户可以像使 ...

  6. C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...

  7. Opengl绘制我们的小屋(一)球体,立方体绘制

    这个系列我想用来运用opengl红皮书的前八章节的内容,来打造一个室内小屋. 这一章主要是定义几个基本的结构.并给出球体与立方体的画法,先让我们来定义一些基本的结构.一个是包含点,法向量,纹理贴图向量 ...

  8. F# 图形数学基础。

    这几天,在看Unity3D,很有意思,其中看到,第一人称控制器,就想看到里面的一些控制脚本是如何实现,才发现,学到的好多数据知识已经还给老师了,还好,走遍大江南北,跟着的书不多,唯一的二本高数没丢. ...

  9. android 监听声音变化

    新的项目需要监听android声音的变化,再做出对应的操作,从网上找了个demo验证.记录于此. 参考链接 https://my.oschina.net/yuanxulong/blog/372268 ...

  10. OpenGL透明与混色效果

    一.理论讲解 在OpenGL中,物体透明技术通常被叫做混合(Blending). 透明是物体(或物体的一部分)非纯色而是混合色,这种颜色来自于不同浓度的自身颜色和它后面的物体颜色. 一个有色玻璃窗就是 ...