如何开始使用PyCharm,并拥有一个高效的Python IDE
如何开始使用PyCharm,并拥有一个高效的Python IDE
目前成都创新互联公司已为上千余家的企业提供了网站建设、域名、网页空间、网站改版维护、企业网站设计、新抚网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
编辑器与IDE之间的辩论正变得老旧和无聊,因为这是一个zero sum game(零和游戏或者叫零和博弈,表示所有博弈方的利益之和为零或一个常数,即一方有所得,其他方必有所失。)
我已经使用Emacs长达15年了,我使用它阅读我的邮件,浏览网页,制作咖啡(我们不能做所有的事情吗?)但是,今天我发现,通过在工作上使用合适的工具,能够变得更加高效。
强大的编辑器,如Emacs和Vim太棒了。我发现令人费解的是有些编辑器或IDE进行基本操作的时候,如搜索和替换非常笨重,而Vim的和Emacs操作起来恰到好处。
然而,搜索注入“将Vim作为一个Python IDE”或者“将Emacs作为一个Python
IDE”,都会返回成千上万的链接,这表明人们想要这样的一些功能,如智能完成,代码导航和项目支持等等。为了给你一点数据,我最热门的帖子之一就是如何配置Emacs作为一个Python
IDE,即使到今天已经过了三年。
PyCharm是最流行的Python
IDE之一,因为它具有强大的功能。在这篇文章中,我将展示如何开始使用PyCharm,并很快具备一个高效的Python开发环境。我使用Mac上的PyCharm3.0.2专业版(他们有一个开源版本以及)上。我使用的是大量修改了默认按键的键盘映射(也有Emacs和Vim键盘映射表)。我建议你参考官方的Mac和Windows/
Linux的默认快捷键。
初步使用
当您第一次启动PyCharm的时候,他会问你要使用的键盘布局和主题。我不喜欢它的Emacs键盘映射,所以我用的是默认的Mac OS X键盘映射并且自定义了我想要的快捷方式:
如果这是你第一次使用PyCharm,并没有什么配置可以导入的。你可能会想在欢迎屏幕中点击“配置”,设置一些基本的配置:
我喜欢显示出行号和方法分隔符(Editor→Appearance→Show method separators, Show line numbers):
另外,我喜欢Solarized主题。我遵循指示安装了它,并选择它作为编辑器的默认主题→颜色和字体。 浅色版的Solarized
IntelliJ有一些奇怪的颜色选择(例如,它采用灰色为默认的文本,而不是更清晰的黑色),所以我在编辑器上进行了修改→Colors
Fonts→General。我的建议是不要害怕修改颜色为你自己喜欢的。你可以导出你的配置,以防你需要重新安装PyCharm。
相比于别的一些IDE,我觉得PyCharm在视觉上的效果上非常干净,如果你想要一个更简洁的用户界面,您可以隐藏工具栏,工具按钮,导航栏和状态栏(在视图菜单上):
Virtualenv和Python解释器
您可以创建新的项目文件→File→New Project or open an existing project
withFile→Open Directory。
PyCharm支持多种类型的Python项目,如Django,Flask等等。在这里,我将创建一个简单的项目,以测试pyquery库(我会选择“Empty
project”)。
你需要告诉PyCharm你想用哪个Python解释器,因为它可以使用不同的解释器对于不同的项目。它将利用这些信息来索引的所有可用的库。一个好的做法是对于每个项目建立一个virtualenv。您可以使用一个已经存在的virtualenv或从PyCharm创建一个新的(Settings→Project
Interpreter→Python Interpreters)。
对于这个项目,我将创建一个新的virtualenv并使其用于所有的项目:
您可以快速搜索,阅读说明,并从PyCharm安装软件包。没有什么是你在在终端上不能做的,但它能够使你无需离开IDE,更加方便地够搜索包。
一些软件包可能需要安装一段时间,特别是如果他们需要进行编译。 PyCharm运行安装过程是在后台,你可以通过单击状态栏看到正在发生的事情:
正如我们所看到的,它不仅安装pyquery报,所依赖的包,如lxml也一并安装(正如我们所期望的):
快捷键
PyCharm是没有Vim的,但你也可以只靠键盘做很多事情。您可以将快捷方式设置到几十个(如果不是数百个)快捷动作在Settings→Keymap。我修改了相当多的默认键盘映射,因为我喜欢有像Control-a,
Control-e, Control-k,and
Control-y那样的快捷键,而这几个快捷键在默认情况下多用于文本框,并没有设置默认在“Mac OS
X”的键盘映射。您还可以定义鼠标快捷键。举例来说,我使用Option-Click来改变快速文档。如果你是一个Vim的用户,您可能希望尝试一下IdeaVim,一个Vim的仿真器插件。我听说过这个好东西,但我没有机会去尝试它。
我用的是Dvorak keyboard layout,但烦人的是,一但用到不对的快捷键就会有bug。有人反映了这个问题,French Canadian and German layouts也有这个问题。这意味着我必须重新绑定不少的快捷方式来避免这个问题。
PyCharm使用功能键,如F1和F2等很多。正如你可能知道的,在Mac上,顶部的按键多作为默认“多媒体”键,并通过按下Fn键的来生效。我们可以在System Preferences→Keyboard交换这种方式。
我希望能够控制音量和改变亮度,而不需要使用Fn键,但我也喜欢使用功能键,而无需触碰较远的Fn键(我很懒惰,我能说什么?)。我用Palua在“多媒体”和功能键之间切换。你可以用全局键切换,也可以配置Palua在使用特定应用程序时,自动切换。我为所有应用程序使用多媒体键的(默认值),并配置Palua为Xcode和PyCharm使用功能键。
外部编辑器
PyCharm可以启动任何外部工具,所以我将其配置用Emacs来打开当前文件。当你想要利用你喜欢的编辑器(Emacs,Vim,TextMate等等)做一些快速编辑,这非常有用。
进入Settings→External Tools,确保“Open console”未选中,将路径插入程序,参数(在这种情况下,我们可以用FilePath来得到完整的文件名)和工作目录(ProjectFileDir/ FileRelativeDir /)。
你可以把它分配给一个快捷方式:
现在它可以从菜单栏获得。
运行代码和REPL
PyCharm有很多方式来让我们运行代码。我们可以用古老的print 函数(或声明语句,这取决于你的Python版本),在REPL导入代码,发送代码到控制台,使用调试器,或在终端上使用IPython。
打印输出
使用打印来显示值是一个有用的并被广泛使用的技术,但是如果不小心使用的话,它可能会导致混乱的代码。
如果该文件已被选中运行,我们可以通过单击“play”按钮或Control-R来开始。
如果没有选择文件来运行,会从上下文菜单中选择一个文件,用Control-Option-R或右击来运行她。 PyCharm会记住你的选择,下一次你可以继续使用Control-R。这听起来很复杂,但它其实非常简单。检查手册,以便了解更多的信息。
控制台和REPL
我最喜欢的方法是在REPL运行代码。您可以在PyCharm的工具栏中打开一个Python控制台,Tools→Run Python
Console(我已经分配到Control-C)。它会使用IPython(如果可用)(我建议你在virtualenv内安装IPython),并将当前文件的路径添加到Python的路径。在控制台上,你可以像往常一样导入你要来执行的功能。
在控制台中补全功能仍然可用:
我们可以像平时一样正常使用已经导入的函数,并且可以利用⌘–4轻松切换控制台的可视性。
在控制台执行所选择的代码
如果我想运行的代码是多了几个单行,并没有编写正式的单元测试(例如,可能我玩的是数据)我可以将它保存在一个临时文件。我们可以选择我们想要运行的代码(通常我只需要利用⌘-A选择整个文件),并选择从上下文菜单中选择“Execute
Selection in Console”(或者,更好的方式,使用键盘快捷键)。 [我省略了一些菜单项中的截图以使文章短一些。
在下面的例子中,标题变量在控制台中可用,因为我们在控制台中选择整个临时文件来执行:
宏
如果我们可以在一个操作中发送整个文件到控制台,那就太好了。幸运的是,我们可以记录一个宏。选择Select
Edit→Macros→Start Macro Recording and performthe operations as
before(选择整个文件,发送到控制台,切换到控制台)。正如你所看到的,我的宏只有四个动作(我按向下箭头键取消选择):
当您录制的宏已经在宏菜单,你可以分配给它快捷方式(我使用Control-C Control-E,但由于某些原因PyCharm只显示两个快捷方式的一半)。
调试
很多人喜欢使用调试器来检查数据。即使我喜欢使用REPL,有时调试程序更有效,在检验复杂的对象时尤其如此。
PyCharm不允许你在一个空行设置一个断点,因此,在这短短的例子,我不得不添加一个额外的行(我使用print函数,但我本可以使用pass),因为我想要调试停止在设置的headlines变量后。在真正的代码中,很少有这个必要。
IPyhton
最后,利用IPython来运行外部终端并使用一些功能,比如%run和自动重载没有任何不妥。
搜寻命令
这很容易变得不知所措,因为有这么多的命令。如果您在Mac上使用PyCharm,你可以像往常一样使用Help→Search,或者您可以在任何平台上使用Help→Find
Action。它可以让你搜索任何PyCharm命令,包括不能从菜单中获得的。
(Emacs的使用者会注意到这有点类似于Emacs的M-X)。这是非常有用和强大的功能,我一直使用它。
代码补全
代码补全功能在PyCharm上是一流的。默认情况下PyCharm会在你输入的时候给出建议:
由于此功能可有点耗电,你可以通过选择File→Power Save Mode来禁用它。您仍然可以通过Control-Space显式使用这一功能。
在输入的时候,您可以通过键入一个子串来缩小建议列表:
或者,您可以键入CammelCaseClasses或function_names_with_underscores的第一个字母:
如果您键入Ctrl-Space一次,PyCharm将尝试列出最相关的项目:
如果你再次键入Control-Space,将列出它所知道的每一个名字。这可能是压倒性的,但要注意,它列出了没有导入的文件 bar.py中的函数name_of_mother。
但往往你只是想补全在打开的缓冲区中的一个局部变量的名称。很久以前可以在Emacs和Vim实现这一功能,二现在也可以在PyCharm上实现。手册将其称为Hippie
Completion,但实际的命令名称(即,你会发现在Find Action的那个名字)是“Cyclic Expand
Word”,并且在我的测试中,它甚至对文档字符串有效。
代码补全可能无法在某些情况下工作,比如当一个库没有类型提示。这个StackOverflow页面建议在PDB中设置断点并用dir列出所有可能的属性。一个类似的解决方案是在PyCharm创建断点,并执行一条表达式——通过在调试工具栏点击最后一个图标(或使用适当的键盘快捷键)。在这种情况下,我计算的表达式是“dir(r)”。
访问文档
PyCharm有三种方式可以访问文档:快速定义,快速文档,外部文档,以及参数信息。您可以从查看菜单或者从各自的快捷方式去访问它们。
快速定义将显示整个定义的符号(类,方法,功能等)的(废话!),当然也包括文档。如果你只是想快速浏览一下的定义,而跳跃到它是很有用的。
快速文档将显示符号的文档和签名。
最后,外部文档,以及参数信息是非常简单的。第一个在默认浏览器中打开文档,第二个给出了一个函数或方法(例如快速查询关键字参数的名称是很有用)参数信息。
外部文档工作外适用于Python(当然),PyQt4,PySide,GTK,WX,numpy,SciPy,和kivy,并且您可以为外部文档添加路径,在Settings→Python External Documentation中设置。
代码质量
当你在打字的时候,PyCharm会检查你的代码是否符合PEP8。它会让你知道,你是否有太多的空格或空行等等。如果你愿意,你可以配置PyCharm运行pylint作为外部工具。
在源代码找到自己的方式
当你掌握了它的导航命令时,PyCharm开始变得强大起来。它可以跳转到类,函数等等。在Mac上你可以利用⌘-B或者⌘-Click跳转到类,方法,函数,变量的定义,同样在Windows和Linux上使用 或Ctrl-B或者Ctrl-Click。
导航到类,文件或符号的机制几乎是一样的。在你输入一个字符串的时候,你将看到一个对话框,包括你当前项目以外的项目,同市匹配过滤的结果。转至导航菜单或使用相应的键盘快捷键:
这是一个类定义典型的对话框:
你可以输入名称的一部分,包括文件扩展名。举例来说,如果你想打开Django项目的一个JavaScript文件是,但又不记得它的名字,你可以搜索“.js”。
这些功能使我们能够非常快速地浏览源代码。假设我们正在研究Django的源代码,我们希望看到的是功能实现的过程。我们不知道它的定义,所以我们去Navigate→Symbo(⌥-⌘-O),输入“render”,并选择第一个选项(我们可以看到它在django.shortcuts定义)。如果我们隐藏了导航栏,我们可以使用Navigate→Jump到导航栏(⌘-↑),快速显示它并查看该文件定位(django→django→shortcuts.py):
有时在去掉你并不感兴趣的那部分东西之后,代码补全的效率会更高。在下面的例子中,我删除相关的JavaScript的结果,得到了一个更加简洁的列表:
PyCharm可以让你折叠块,如类,方法和函数,但你可以创建自己的可折叠的区域。当涉及到成组的一些东西时,就很有用(类,方法,函数等)。这些模块可以折叠的话,会使我们能够专注于代码的特定区域。你可以通过Navigate→Custom
Region或使用相应的键盘快捷键来显示列表文件中的所有区域。遗憾的是有没有办法在一个工程中列出所有区域。
单元测试
在我们可以运行测试文件之前,我们需要添加一个新的运行/调试配置。我们去Run→Edit Configurations,然后点击在左上角的加号按钮。然后,我们选择“Python tests”,开始测试。在这个例子中,我将使用单元测试:
最后,我们需要添加这些测试的文件夹,并选择正确的Python解释器:
现在就像我们运行代码一样,我们可以运行我们的测试:通过点击工具栏或者选择Run→Run(Control-⌥-R)。这将打开一个对话框,你可以在对话框中选择你想要运行的代码(你可以运行别的)。您可以进行所有测试或仅测试光标。
当你运行测试是,PyCharm会记住你最后的选择,这样你就可以利用Control-R来重复测试。这非常有用,如果你解决了一个特定的测试情况,并希望多次运行它,但不运行其他测试。你并不需要定位到你想要运行的测试文件;你可以从任意文件中运行测试。您可以通过选择Navigate→Test(或相应的热键)完成代码的测试。
处理多个文件
正如你看到的那样,PyCharm为每一个文件使用一个标签
要切换到标签,我们可以使用命令选择下一个标签或者选择上一个标签。默认快捷键是Control-→ 和Control-←,但OS X使用这些按键,让我重新绑定它们至Control-⌘-N
和Control-⌘-P(在终端我使用同样的快捷方式切换标签页)。
一个更直接的方法选定标签就是使用Navigate→File,或者View→Recent Files(⌘-E)和View→Recently
Changed
Files(⇧-⌘-E)。最后两个命令将显示文件,你可以通过输入子串来缩小选择范围。在下面的例子中,我只需要输入“⌘-E”,“S”,“ENTER”键进入scratch.py文件的标签:
多窗口
PyCharm支持多窗口,虽然不如Emacs中那么优秀,但也足够用了。
在默认情况下没有已分配的快捷方式来处理分割窗口,所以你必须自己做。这些是我用的快捷键:
垂直分割,Control-S
水平分割,Control-H
非剖分,Control-C Control-U
非剖分所有,Control-C Control-A
转到下一个分离器,Control -C Control -N
转到上一页分离器,Control -C Control -P
移动到相对组,Control -C Control –M
再有两个窗格的情况下拖动标签比较方便。
总结
PyCharm可以为我们做很多事情。我们看到了如何使用virtualenv,定义快捷键,使用外部编辑器,运行代码,定义宏,找到查找操作命令,可以高效地进行代码完成,访问文档,浏览源代码,运行单元测试,并处理多个文件和分割的窗口。
而这些只是表面文章。我们还没有谈论编辑,版本控制,插件,调试(本地和远程),模板,使用捆绑的TextMate,网络开发等等更多的功能。
我建议你检查PyCharm的官方文档,包括快速入门指南和在线帮助。此外,Andrew Brookins从Vim用户的角度写了一片很好的PyCharm评论。我推荐你去阅读一下,即使你不使用Vim。
python递归如何达到某一条件停止并返回当前值
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
break语句用在while和for循环中。
如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。
关于Python玩“跳一跳” iOS+Win 硬件实现的介绍?
原项目地址:wangshub/wechat_jump_game
教你用Python来玩微信跳一跳
本项目源码:yangyiLTS/wechat_jump_game_iOS
目前已有的iOS跳一跳辅助需要macOS环境下的WebDriverAgentRunner。而现在介绍的方法在Windows环境下物理实现,不需要macOS也不需要越狱。
先上效果
运行环境工具
Python 3.6 in Windows
Python Pillow库
局域网环境
iToools Airplayer
树莓派或arduino (本文使用树莓派)
SG90 舵机
杜邦线、纸板
一小块海绵
橙子或其它多汁水果(可选)
基本思路使用iOS自带Airplay服务将游戏画面投影到电脑上。使用Pillow库截取电脑屏幕,获得游戏画面。分析图片,计算出跳跃距离,乘以时间系数获得按压时间。将按压时间发送至树莓派,树莓派控制舵机点击手机屏幕。原理步骤
舵机 控制器部分
树莓派(OS:Raspbian Jessie)连接上局域网,下载servo_control.py到树莓派。拿一根杜邦线粘在舵机的摆臂上,并且固定好舵机在纸板上,如图:
取一小块海绵,约10mm*10mm*5mm,不必太精确。海绵中间挖一个小洞。大概是这样:
海绵上滴水浸透,放在手机屏幕上“再来一次”的位置。杜邦线的另一头插进橙子。(触发电容屏需要在屏幕上形成一个电场,我尝试过连接干电池负极的方案,但是效果不理想,最后不得已拿了室友的一个橙子。当然,一直捏着或者含着导线也是可以的。)
舵机连接上树莓派,电源使用5v(Pin #04,Pin #06),舵机控制线接在GPIO18(Pin #12)。
需要根据实际安装位置调整舵机高点和低点位置(范围: 2.5~12.5)
servo_down = 3.8 servo_up = 5
最终效果
Windows 部分
下载Airplayer(免安装,暂无捆绑)
配置Airplayer,画质什么的统统调到最高。启动iPhone上的Airplay,然后可以在电脑上看到iPhone画面,游戏运行时需要Airplayer全屏显示。
安装Pillow库,本文使用Pillow库的ImageGrab截屏,截屏代码:
im = ImageGrab.grab((654, 0, 1264, 1080)) im.save('a.png', 'png')
下载wechat_jump_auto_iOS_Win.py,我的显示器分辨率是1920*1080,手机是iPhone7。如果使用不同的设备需要更改时间系数等参数。
由于Airplay传输画面时会压缩,获取的游戏画面会有颜色偏差。我修改了原算法的一些参数,增大了颜色上的宽容度,在测试中已经达到一个比较好的准确率。
wechat_jump_auto_iOS_Win.py 计算出跳跃距离后,会调用socket库把跳跃时间发送到树莓派上,其中ip地址需要修改为实际树莓派的ip地址。
ip_addr = 'rasp_ip'
运行打开游戏画面,Airplayer窗口全屏树莓派上运行servo_control.py ,监听9999端口,等待Win的计算结果Windows运行wechat_jump_auto_iOS_Win.py海绵放在“再来一次”的位置可以自动重新开始,然后就会一直自动刷分问题其它
由于是物理点击屏幕,会产生一定的操作误差。操作误差由时间常数误差、舵机运动时间、杜邦线触点插进海绵的深度等等因素引起。而当前使用的算法在一种情况下会出现误差叠加的问题。
Z形路径误差累积过程
舵机的摆动角度和时间系数没有绝对的数值,需要慢慢尝试,当前使用的时间系数是2.43。
可以使用arduino + pyfirmata组合控制舵机,成本比较低,不需要网络传输计算结果。因为我的arduino前些天送给了女票,所以还没有使用arduino的方案。
这个游戏在跳了200+次之后方块会变的非常小(如题图),已经不是普通人类所能做到的。研究了外挂之后才知道手玩高分有多难,大家还是不要刷分了,会没朋友的。
文章名称:python函数jump python函数矩形面积
转载来于:http://lswzjz.com/article/doiohgi.html