在PyCharm中如何更好地实现Python代码的智能补全
2017-08-02 10:47
531 查看
我们在写Python代码时经常会碰到IDE的智能补全功能不执行的情况,比如在PyCharm中写下面一段代码
当输入resp. 以后IDE并没有按照想象那样弹出resp这个对象的属性和方法列表。
这个就是动态语言的缺点之一,静态分析困难。
只有在 resp = urlurllib2.open('http://www.baidu.com')
这个语句实际运行完成后 resp才被绑定一个类文件的Handler对象。
但是在IDE中编辑时是一种没有运行前静态的情况下,resp这个变量对象实际上是空的,IDE没法类型推断的。
在java之类的静态语言里,每个变量使用前都要显示地类型声明,类的属性方法都是可以被IDE查询到的,所以就比较容易实现智能补全。
想要帮助IDE进行类型推断在Python3中做了一些改进,比如变量的类型声明。
可试用这面三种办法来写代码IDE的智能补全就会更好一些。
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import urllib2 resp = urllib2.urlopen('http://www.baidu.com') return_html = resp.read()
当输入resp. 以后IDE并没有按照想象那样弹出resp这个对象的属性和方法列表。
这个就是动态语言的缺点之一,静态分析困难。
只有在 resp = urlurllib2.open('http://www.baidu.com')
这个语句实际运行完成后 resp才被绑定一个类文件的Handler对象。
但是在IDE中编辑时是一种没有运行前静态的情况下,resp这个变量对象实际上是空的,IDE没法类型推断的。
在java之类的静态语言里,每个变量使用前都要显示地类型声明,类的属性方法都是可以被IDE查询到的,所以就比较容易实现智能补全。
想要帮助IDE进行类型推断在Python3中做了一些改进,比如变量的类型声明。
可试用这面三种办法来写代码IDE的智能补全就会更好一些。
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
# 用assert帮助类型推断 import io def bar(f): assert isinstance(f, io.IOBase) f.readlines() # 用显示的类型描述,只在Python3中有效! def foo(a: str, b: int): a.split() # 在Docstring中类型描述 def bee(l, t): """ :type l: list @type t: tuple """ l.append() t.count() # 在函数返回值类型描述 def func_int() -> int: return 1 i = func_int() i.bit_length()
相关文章推荐
- 数字货币开发的底层技术如何实现执行智能合约代码
- 基于DragonBoard 410c的家庭智能环保卫士——(10)数据库python代码实现
- 10 行 Python 代码实现模糊查询/智能提示
- 黄聪:如何配置Emeditor实现代码智能识别自动完成功能
- 如何在配置vim的(Python)代码自动补全功能
- 借助 ptpython 三个命令实现终端下 PySpark 代码高亮和代码补全:
- 如何让python idle自动补全代码
- 10 行 Python 代码实现模糊查询/智能提示
- python代码实现:如何反序的迭代一个序列?
- 【导读】本文介绍如何利用带进度条的ASP无组件实现断点续传下载,给出详细代码
- VS2005下自定义用户控件 如何实现属性及方法的相关智能提示
- 如何更好地完成代码?
- VS2005下自定义用户控件 如何实现属性及方法的相关智能提示
- AjaxPro.NET实现TextBox智能获取服务端数据功能(Asp.net 2.0)(示例代码下载)
- windows下用vim实现qt代码的自动补全功能(zz)
- 极致之美――百行代码实现全新智能语言第1/6页
- VB:如何实现在代码中弹出toolbar的ButtonMenu
- 如何用Javascript代码实现浏览器菜单命令
- 如何在C#代码中实现在Sqlserver2000中添加用户?以及附加数据库?
- 如何在net中实现动态执行代码(js的eval)的功能?