- PyDev 的 CA 功能
- Move import to global scope
以如下代码为例,将光标移至 import sys 后,启动快捷键 Ctrl+1 激活 CA,”Move import to global scope” 出现在标签中,按 Enter 应用此功能。如果不想应用该功能,可以按 Esc 键取消。
#!/usr/bin/python –usys.path.append(“./VirtualFS”)import sys应用该功能后,import sys 被成功移至全局范围内,消除了之前的错误。改变后的代码如下。
#!/usr/bin/python –uimport syssys.path.append(“./VirtualFS”)- Create docstring
Create docstring 功能可以自动为函数添加参数注解。将光标移至如下代码行,启动快捷键Ctrl+1 激活 CA,标签栏中出现 ”Make docstring”。
def __init__(self, dbUser, dbPswd, dbHost):按 Enter 应用该功能后,自动为该函数添加了参数注解。
def __init__(self, dbUser, dbPswd, dbHost): ''' @param virtualOperator: @param database: @param hostname: @param workDir: '''- Assign result to new local variable (or field)
CA 还提供一种功能能够将函数返回结果赋给新的内部变量。以函数 callMethod 为例,将光标移至 a.callMethod() 行激活 CA。
def method (self, a): a.callMethod()选择 ”Assign to field(self, callMethod)” 或者 ”Assign to local(callMethod)”,可以将a.callMethod() 结果赋给新的内部变量 self.callMethod,改变后的代码如下。
def method (self, a): self.callMethod = a.callMethod()- Assign parameters to attributes
在程序编辑过程中,如果需要把函数参数赋给变量,可以使用 CA 的 Assign parameters to attributes 功能自动完成这样的需求。将光标移至函数 m1 所在行,激活 CA。
class Foo(object): Def m1(self, a, b):在标签栏中选择 ”Assign parameters to attributes”,自动生成两行代码将参数 a,b 赋给同名变量。
class Foo(object): def m1(self, a, b): self.a = a self.b = b- Surround code with try..except or try..finally
对可能产生异常的代码,要进行异常捕获,通常使用 try..except 或者 try..finally 语句来捕获异常。选中一段代码 print usage,激活 CA 的 ” Surround code with try..except or try..finally”功能,可以自动对 print usage 进行异常捕获。
import sysdef method (self, usage): try: print usage except: raise下面,再介绍 PyDev Extensions 包含的 CA 功能是如何被运用的。
- PyDev Extension 的 CA 功能
- Make import for undefined token
以如下一段代码为例,xmlreader 未定义,语法分析出错。
class Test: def method(self): xmlreader将鼠标移至出错行,启动快捷键 Ctrl+1 激活 CA,选择标签栏中的 ”Import xmlreader(xml.sax)”,自动生成一行代码 from xml.sax import xmlreader,语法错误消除。
from xml.sax import xmlreader class Test: def method(self): xmlreader- Ignore error
仍以上述代码为例,由于 xmlreader 没有被定义,包含语法错误,在这一行激活 CA,选择 ”UndefinedVariable”,语法错误被忽略,xmlreader 后自动生成一行注释标明 ”#@UndefinedVariable”。
class Test: def method(self): xmlreader #@UndefinedVariable- Don't analyze module
语法分析器可以帮助显示包含语法错误的代码,但在程序编辑过程中,有时候需要刻意取消对程序的语法分析,CA 的 Don't analyze module 提供了这样的功能。
将光标移至程序第一行,激活 CA,选择 ”@PydevCodeAnalysisIgnore”,自动生成一行代码 ”#@ PydevCodeAnalysisIgnore”,忽略对程序体的语法分析。
#@PydevCodeAnalysisIgnore class Test: def method(self): xmlreader- Quick Outline
对特定的 Python 文件,Pydev Extensions 提供的 Quick Outline 能最简单快捷地获取该文件的组织结构,并能在该文件中方便地查询定位所需信息。
在 Pydev 透视图中,选择 Source -> Show Quick Outline,或者使用快捷键 Ctrl+O 启动该功能。
Python 文件的类、函数等组织架构便以树状形式被形象地展现出来。同时,Filter 提供了查询定位的功能,可以方便地查询所需信息并定位到相应的代码段。
图 8. Quick Outline
- Globals Browser
Globals Browser 是 Pydev Extensions 提供的另外一种强大的查询定位功能。它可以查询定位整个工程内的一些定义和属性,包括:
- 类定义
- 方法定义
- 全局变量
- 类以及实例属性
通过三种方式可以启动该功能。
- 在 Pydev 透视图中,从菜单栏中选择 Pydev -> Globals Browser。
图 9. 菜单栏启动 Globals Browser
- 在Pydev 透视图中,工具栏有如下的一个小图标,鼠标移至该图标上方,显示 ”Pydev: Globals Browser” 标注。点击该图标按钮,可以启动 Globals Browser 功能。
图 10. 工具栏启动 Globals Browser
- 通过快捷键 Ctrl + Shift + T,可以快速启动 Globals Browser 功能。
在 Filter 中输入所要查询的定义、变量或者属性,Globals Browser 可以快速地定位到相应的代码段。
图 11. Globals Browser
- Hierarchy View
当某个 python 文件包含多个类时,如何才能简单直观地了解各个类之间的依存关系?Hierarchy View 提供了这样的功能,它能将多个类之间的层次关系以树状结构直观地显示出来。
以一段 Python 代码为例,定义了 Super1, Super2, ToAnalyze 和 Sub1 四个类。在 Pydev透视图中,选择 Windows -> Show View -> Other,在弹出的 Show View 窗口中,选择 Pydev -> Hierarchy View。按快捷键 F4 激活 Hierarchy View,可以看到树状图中显示出了类间的层次关系。
图 12. 在 Hierarchy View 中显示类的层次关系
Hierarchy View 还支持以下四个功能:
- 在层次图中,用鼠标单击某个类,图下方即显示出该类的方法。
- 如果双击某个类、方法或者属性,则会调出源程序,进入对该类、方法或者属性的编辑状态。
- 在 Hierarchy View 中,按住鼠标右键,并相左或向右移动鼠标,层次图则会相应地缩小或放大。
- 在 Hierarchy View 中,按住鼠标左键移动鼠标,层次图则会被随意拖动到相应的位置。
本文介绍了PyDev及其扩展PyDevExtensions提供的多种代码辅助功能,包括导入管理、文档字符串创建、异常处理等,帮助开发者提高Python开发效率。
1110

被折叠的 条评论
为什么被折叠?



