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. QButton

    Button.h #pragma once // QButton class QButton : public CButton { DECLARE_DYNAMIC(QButton) // Constr ...

  2. ELASTICSEARCH 中暂时移除一个节点

    ELASTICSEARCH 中暂时移除一个节点 版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 前言 在维护ES集群的过程中,我们会经常遇到将某个ES实 ...

  3. Spring Boot war包&jar包对比

    使用 Maven对SpringBoot程序进行打包处理有两种格式:一种是war包,一种是jar包. 虽然我们将springboot应用打包成了war包,但是我们依然可以使用 java -jar的方式来 ...

  4. 我写的javascript常用静态方法类,分享给大家

    util=function(){    return {        $:function(id){            return document.getElementById(id);   ...

  5. Sword STL之map效率问题

    #include <iostream> #include <map> #include <vector> using namespace std; /* STL容器 ...

  6. Java 内部线程

    InsttoolCacheScheduler_ Worker-2 Quartz InsttoolCacheScheduler_Worker-2线程就是ThreadPool线程的一个简单实现,它主要负责 ...

  7. [转]Android开源测试框架学习

    近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...

  8. 【C#】使用DWM实现无边框窗体阴影或全透窗体

    1.无边框窗体阴影,win7(需要开启Aero效果)及以上系统 public class LdwmForm : Form { public LdwmForm() { Initialize(); } / ...

  9. 【Python】#!/usr/bin/python 作用

    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它 #!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器.#! ...

  10. 对 /etc/rc.d/init.d 目录的一点理解

    转载 一.Linux的引导过程 系统启动之后,在进入init.d之前,我们先来看看系统都做了什么工作.系统加电之后,首先进行的硬件自检,然后是bootload对系统的初始化,加载内核. 内核被加载到内 ...