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. 集合 主要作用: 去重 关系测 ...
随机推荐
- Android Bitmap 缩放 旋转 水印 裁剪操作
在android当中,Bitmap代表一个图片,里面封装了图片相关的信息. 一.将图片进行缩放操作 1.获得Bitmap对象 Bitmap bitmap = BitmapFactory.decodeR ...
- WIN7下重建图标缓存(解决MFC.exe桌面图标显示异常问题)
WIN7下重建图标缓存 使用WIN7时,MFC工程生成的应用程序图标,如果更改为自定义的ICON图标之后可能在桌面上显示的依旧是上一次的图标,改个名或换个路径都能恢复正常,说明在WIN7系统下图标的缓 ...
- 【oneday_onepage】——Growth Is A Bitch
Companies are worth a multiple of their earnings and that multiple is directly related to earnings g ...
- linq操作符:分区操作符
Linq中的分区指的是在不重新排列元素的情况下,将输入序列划分为两部分,然后返回其中一个部分的操作. 一.Take操作符 Take(int n)表示将从序列的开头返回数量为n的连续元素,常用于分页.其 ...
- Qt安装过程中: configure 时发生的经典出错信息之”Basic XLib functionality test failed!”(Z..z..) 之 MySQL support cannot be enabled due to functionality test!
整出错信息是在./configure阶段Basic XLib functionality test failed!You might need to modify the include and li ...
- Java ArrayList源码剖析
转自: Java ArrayList源码剖析 总体介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现.除该类未实现同步外 ...
- 关于在ubuntu下配置AMD显卡驱动的总结
同样先卸载先前版本 代码: sudo sh /usr/share/ati/fglrx-uninstall.sh 代码: sudo apt-get remove --purge fglrx fglrx_ ...
- 摄像头驱动0V7725学习笔记连载(三):0V7725 SCCB时序的实现
上一篇博客主要是讲解了关于需要配置的重要寄存器,那么接下来就是要通过SCCB接口实现对OV7725的配置.参考<OmniVision Serial Camera Control Bus (SCC ...
- MySQL迁移数据库(mysqldump)
一.导出导入所有数据库的数据 1.导出 mysqldump -u root -p123456 --all-databases > all.sql 2.导入 mysql -u root -p123 ...
- (转)FFmpeg源代码简单分析:avformat_find_stream_info()
目录(?)[+] ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结 ...