我感觉我要回到石器时代了。
我如何在没有智能感知的情况下重新学习开发(pydev intellisense 不算在内)。一般来说,一个人如何成功地离开视觉工作室的舒适环境?
我感觉我要回到石器时代了。
我如何在没有智能感知的情况下重新学习开发(pydev intellisense 不算在内)。一般来说,一个人如何成功地离开视觉工作室的舒适环境?
我最近学习了具有强大 C# 背景的 python。
我的建议:去做吧。对不起,无法抗拒,但我也是认真的。安装 python 并阅读:Python.org 文档(v2.6)。一本书也可能有帮助——我喜欢Python PhraseBook。从那里,我开始使用 python 来实现各种解决方案。最值得注意的是ProjectEuler.net 的问题。
它迫使我考虑语言和内置数据结构。
Python 真正易于使用且直观。要学习基础知识,花了我大约一个小时。为了让它变得很好,花了大约 5 个小时。当然,总是有更多的东西要学。
另外,我想指出我不鼓励使用 IronPython 或 Jython,因为我觉得学习核心,常规 python 是第一步。
Python 具有丰富的“自省”功能。help()
特别是,您可以使用从 Python 命令行调用的命令找到很多关于内置功能的信息。
假设您想使用正则表达式,并想了解如何使用它们。
>>> import re
>>> help(re)
你会得到一个很好的信息显示,一次自动显示给你一页(点击空格键查看下一页)。
如果您已经知道要使用模块中的sub()
功能re
,您可以获得以下帮助:
>>> help(re.sub)
help()
只要您为模块、类和函数定义 Python文档字符串,此功能甚至可以在您自己的代码上运行。
您可以在 vim 编辑器(或 gvim,或用于 Windows 的 vim)中启用启用类似“IntelliSense”的自动完成功能的功能,并且您可以使用Exuberant Ctags生成超链接“标签”,让您快速浏览代码。这些将 vim 变成了与 IDE 大致一样强大的东西,具有 vim 的全部功能进行编辑。(vim 没有内置的显式重构工具,但有可用的选项。
正如其他人所指出的,您也可以获得 Python 的 IDE。我用过Wingware IDE,我推荐它。我尝试使用免费的开源软件来完成我的大部分工作,但这是我愿意购买的一款专有软件。我还使用了带有Pydev插件的Eclipse(我使用了它的重构工具,它运行良好)。
PS Python 具有比 C# 更丰富的功能集,尽管代价是您的代码不会运行得那么快。一旦你习惯了 Python,你将不再觉得自己处于石器时代。
一步一步来?
从简单的程序开始(你可以用 C# 闭着眼睛写的东西),然后继续……你最终会牢记 API。
<rant>
这就是我认为成为一名优秀的 Visual Studio 用户会让你成为一名糟糕的开发人员的原因。您无需学习 API,而是在对象浏览器中查找,直到找到听起来或多或少像您正在寻找的东西,实例化它,然后点击 . 并开始寻找听起来合适的东西。虽然这非常快,但这也意味着学习任何深度的 API 都需要很长时间,这通常意味着您最终要么重新发明轮子(因为轮子被埋在堆积如山的家用电器之下,而您不知道它就在那里),或者只是以次优的方式做事。仅仅因为您可以快速找到解决方案,并不意味着它是最好的解决方案。
</rant>
在 .NET 的情况下,它附带了大约 10 亿个 API,适用于阳光下的一切,这实际上是首选。您需要筛选大量噪音才能找到您的目标。
Pythonic 代码倾向于使用一种显而易见的方式来做任何给定的事情。这往往使 API 变得非常简单易读。诀窍是学习语言并学习 API。这并不是很难做到,尤其是在 python 的情况下,虽然一开始不能依赖智能感知可能会令人不快,但在你习惯它不存在之前不应该超过一两个星期.
用一本好书学习语言和基本的标准库。当涉及到一个新的库 API 时,我发现 REPL 和一些探索性编码可以让我相当快地理解正在发生的事情。
您总是可以从 IronPython 开始,然后继续在 Visual Studio 中进行开发。
来自wingware的python ide非常好。这就是我最终使用从 Visual Studio C++/.net 到做 python 的方法。
不要担心智能感知。Python 真的很简单,而且真的没有太多要知道的东西,所以在几个项目之后,你会在开车、吃饭等时构思 Python 代码,甚至不需要真正尝试。另外,python 的内置文本编辑器 (IDLE) 有一个弱小的智能感知版本,对于我的目的来说一直绰绰有余。如果您一直空白并想知道哪些方法/属性和对象具有,只需在交互式会话中输入:
目录(我的对象)
同样的方式你做任何没有 IntelliStuff 的事情。
我敢打赌,您在没有借助 IntelliEnglish 计算机程序的情况下编写了该问题,该计算机程序向您显示了您可以使用的动词列表,并在句子末尾自动添加标点符号。:-)
我大部分时间都使用 Eclipse 和 PyDev,它提供的有限的自动完成帮助非常有用。
它永远不会达到 VS 的 IntelliSense 的水平,而且由于 Python 的动态特性,它也不能。但是有补偿,大的。
最大的是打破了代码-编译-测试循环。在 IDLE 中编写和测试原型代码非常容易,以至于我经常首先去的地方:我将勾勒并测试几个必须互操作的方法,找出我不知道的东西,学习它,修复我的测试,然后将整个东西移植到 PyDev 并第一次观察它的工作。
另一个是它要简单得多。了解标准模块是什么以及它们的作用非常重要,但大多数情况下,只需稍加阅读即可掌握。在我的日常编程中,我只使用少数几个模块 - itertools
, os
, csv
(是的,好吧), datetime
, StringIO
- 如果我需要它,其他所有东西都在那里,但通常我不需要。
真正重要的是要知道 IntelliSense 无论如何都无法帮助您的东西。自动完成不会使
self.__dict__.update(kwargs)
说得有点道理;您必须自己了解这行代码是多么了不起,以及为什么要编写它。
然后你会想,“我什至如何开始在 C# 中实现类似的东西?” 并意识到这些石器时代人们使用的工具比你想象的要复杂一些。
来自 C# 或 Java 的人经常犯的一个错误是重新创建大型类层次结构,这在这些语言中很常见。对于 Python,这几乎没有用处。相反,学习鸭子打字。并且不要太担心缺少静态类型:在实践中,它几乎从来不是问题。
我对 Python 不太熟悉,所以我会给出一些一般性的建议。确保打印出一些常用功能的参考页。编程时始终将它们放在你身边(或固定在墙上或桌子上)。我传统上是一个“石器时代”的开发人员,在 VS 中开发了几个月后,我发现我的爱好编程很难没有智能感知..但要记住最常见的功能,最终它会很自然
您还必须习惯更“困难”的调试(不确定如何与 python 一起使用)
虽然你在学习,但即使你没有智能感知,你也应该享受 Python 的优点(至少与 C# 相比)。希望这会激励你!
我只使用 IDLE 进行 python 开发,而且它一点也不好玩。我会推荐你最喜欢的文本编辑器,我的是notepad++,并为它祈祷一个像样的插件。我只需要从 Eclipse 转到 Visual Studio,所以我的意见在这些情况下通常是无效的。
我使用Komodo Edit,它对自动补全的猜测相当不错。
其他人建议了几个具有类似智能感知功能的编辑器。试试看。
还要安装ipython并使用它以交互方式学习语言。它就像是常规 python 交互式 shell 的增强版本,具有许多附加功能,其中最有用的一个是它广泛的上下文相关的选项卡补全和帮助。
例如,如果您键入
import r<tab>
它将显示您可以从 r 开始导入的所有模块
import re
re.<tab>
将显示 re 模块中的所有对象
re.compile?
将显示有关 re.compile 函数的文档字符串和其他信息,如果它比一个屏幕长,则自动通过寻呼机管道它。
re.compile??
如果可用,还将显示源代码。
使用它,我发现直接切换到 ipython 和查询对象比在文档中查找任何内容要快得多。您也可以访问通常的 python help() 系统。
ipython 有很多很多其他的功能 - 太多了,无法在一篇简短的文章中介绍。
Pyscripter在自动完成/智能感知方面做得很好。我最近一直在使用它,因为我开始学习 Python/Django,过去几年我主要是 C# 开发人员。
我建议去冷火鸡——像 Python 这样的语言在优秀的文本编辑器上大放异彩。选择一个你想成为惊人的(vim、emacs 等)并且永不回头的。