pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型
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来指定变量类型、返回值类型、函数参数类型的更多相关文章
- python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象
今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo( ...
- Js基础知识5-函数返回值、函数参数、函数属性、函数方法
函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...
- Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性
readdir函数: struct dirent *readdir(DIR *dirp); The data returned by readdir() may be overwritten by ...
- Swift2.0语言教程之函数的返回值与函数类型
Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...
- execute sp_executesql 用变量获取返回值
execute sp_executesql 用变量获取返回值 1,EXEC的使用 2,sp_executesql的使用 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_exe ...
- Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题
在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...
- Java里的参数类型/返回值类型
参数类型/返回值类型: ##数据类型: ###基本类型: ###引用类型: ####数组 ####类 ####接口 参数类型/返回值类型是类和接口的情况: 1.参数类型是普通类的情况 为什么写成静态, ...
- PYTHON-函数的定义与调用,返回值,和参数
函数基础'''1. 什么是函数 具备某一功能的工具->函数 事先准备工具的过程--->函数的定义 遇到应用场景,拿来就用---->函数的调用 函数分类两大类: 1. 内置函数 2. ...
- day03 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...
随机推荐
- linux ad7606 iio
https://wiki.analog.com/resources/tools-software/linux-drivers/iio-adc/ad7606
- 小米手机刷机工具MiFlash怎么用
刷机包的获取:直接登陆MIUI系统官网(miui.com),在其“下载”栏目中根据手机类型找到对应的刷机包进行下载. 接下来就需要下载“小米手机刷机工具MiFlash”程序,可以直接从以下地址中获 ...
- UI设计 - 首页(主页)的任务
什么是首页 首页,又可以叫主页,是我们的网站或者APP的主要页面,它是我们接触的第一个页面(如果不包含闪屏页和登陆页的话). 特点 首页是一个开始的地方,我们开始真正接触网站提供给我们的内容. 首页是 ...
- Spring Cloud搭建手册(2)——Spring Cloud Config
※在Dalston.SR2版本以后,均不能正常加密,如果必须使用此功能,需要降级到SR1或Camden SR7. 1.首先需要创建一个config-server工程,作为配置中心的服务器,用来与git ...
- r语言 load Rdata 获取表名 并直接转为数据表
首先指定 load结果为一个对象 然后此对象的值 即为 str的 数据表名 然后使用 eval(parse(text = l)) 两个函数 将字符串 转可执行对象 即可完成重新赋值 > l & ...
- WPF ICommandSource Implementations Leak Memory!
Actually the title of this article should be entitled "How to use WeakEventManager with IComman ...
- 电源PI相关知识讲解
电源层与地线层的谐振控制 一旦PCB的电源与地层的形状.距离以及中间介质定下来以后,发生谐振的频率也就定下来了. 采用LC等效电路,不考虑PCB上的损耗,而这些损耗往往在高频影响尤为明显,例如趋肤效应 ...
- go ftp通信
main.go package main import ( "strings" ftp4go "github.com/shenshouer/ftp4go" &q ...
- GRAPH ATTENTION NETWORKS
基本就是第一层concatenate,第二层不concatenate. 相关论文: Semi-Supervised Classification with Graph Convolutional Ne ...
- 解决连锁零售行业IT运维管理四大困境
解决连锁零售行业IT运维管理四大困境 中国近年来,连锁零售行业进入了行业的发展高潮,迅速崛起一批大型连锁业态.而随着IT技术的不断进步,连锁零售企业已经步入IT信息化快速发展的重要阶段:在面对激烈 ...