python用什么软件编程好(常用python编程软件推荐)

python用什么软件编程好(常用python编程软件推荐)

前言:Pythonis getting more attention than usual this year, becoming one of the mostpopular programming languages in the world.– by Krzyszt

对于技术类文章,我一般都会联想到一些高大上的描述,或是一些人文故事。但是,对于Python这样的全民化编程语言,我觉得上面这句来自Krzyszt的口语化描述,就足够了。

Python自带的解释器

Python自带了一个在终端窗口中运行的解释器,你无需保存代码,支持直接运行整个程序,如下所示:

Geany

安装完成后,首先在本地创建一个文件夹用于保存和运行代码,例如python_work文件夹。创建一个新文件,并且通过“SAVE AS”保存到pytthon_word文件夹。

如果你已经安装了python,也就是说,如果能在系统中执行命令python,就无需配置Geany,如果不能执行顺利执行python命令就需要对Geany进行配置。

涉及到编码代码和运行代码的是“生成”按钮,如下图所示:

先来执行一个helloWolrld命令,如下图所示:

进一步解释“生成”下拉框所列的功能,我采用的是“阿姆斯特朗数”,即如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。例如1^3 5^3 3^3 = 153。代码如下:

#take input from the user

num= int(input(“Enter a number: “))

#initialize sum

sum= 0

#find the sum of the cube of each digit

temp= num

whiletemp > 0:

digit = temp % 10

sum = digit ** 3

temp //= 10

#display the result

ifnum == sum:

print(num,”is an Armstrong number”)

else:

print(num,”is not an Armstrong number”)

“Compile”:编译代码,类似于执行了python -m py_compile helloWorld.py,生成.pyc文件。pyc是一种二进制文件,是由py文件经过编译后生成的文件,属于byte code。py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容和python的版本相关,不同版本编译后的pyc文件不完全相同,例如v2.5编译的pyc文件在v2.4版本的 python上是无法执行的。

“Lint”:这个功能会对代码做静态检测,例如制表符、空格、变量命名等等是否符合要求,本案例中部分行只缩进了3个空格,第18行的“num,”后面缺少空格,报错如下所示:

代码改动完毕后就显示编译正常,如下图所示:

“生成目标文件”:运行”make current_file.o”文件,好处是只会编译当前指定的文件,而不是整个项目。“Execute”:实际上调用Python的终端编译器,如下图所示:

Sublime Text

如上图所示,我在右边的可编程栏设置了字体大小,只要保存这个文档,Sublime Text已经打开的窗口会立即执行。

PyCharm

PyCharm是一个用于计算机编程的集成开发环境(IDE),主要用于Python语言开发,由捷克公司JetBrains开发,提供代码分析、图形化调试器,集成测试器、集成版本控制系统,并支持使用Django进行网页开发。PyCharm是一个跨平台开发环境,拥有Microsoft Windows、macOS和Linux版本。社区版在Apache许可证下发布,另外还有专业版在专用许可证下发布,其拥有许多额外功能。PyCharm非常强大,几乎所有你自己可以想到的功能它都包含在内。我觉得判断一个IDE的生命力,我们应该重点看是否支持代码重构和利用周边生态(例如公有云计算资源),所以我这里重点介绍这两个特性。首先讲代码重构。重构指的是使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构。我们通常所讲的代码重构,最常见是的有几类,例如重复代码(一个以上的地点看到相同的程序结构)、过长的类(一般不超过500行)、过长参数列(太长的参数列难以理解,太多的参数会造成前后不一致、不容易使用,而且一旦你需要更多数据,就不得不修改它)、发散式变化(如果某个类经常因为不同的原因在不同的方向上发生变化,那么此时也许将这个对象分成两个会更好,这么一来每个对象就可以只因为一种变化而需要修改)、冗余类,等等。我们看一下具体的案例:1.常量和临时变量假设如以下代码所示,你有一个字面数值, 带有特别含义. 创建一个常量, 根据其意义为它命名, 并将上述字面数值替换为这个常量。

defpotential_energy(mass, height):

returnmass*9.81*height

这里的9.81,改为GRAVITATIONAL_CONSTANT比较合适,

选Constant:

将代码改为如下图所示:

2.复杂表达式的简单化

例如以下代码:

if “MAC” in platform.upper() and”IE” in browser.upper() and was_initialized() and resize > 0:

#do something

我们可以把”MAC” in platform.upper()改为变量,也就是说以变量名称来解释表达式用途。

代码最终被重构如下图所示:

3.抽象出可以复用的方法,减少业务方法的代码量。

这里举一个最大公约数的示例代码,原始代码如下:

代码重构为:

变量factor通过使用 Inline variable重构来摆脱变量。我们选中变量factor,然后按Ctrl Alt N。所有检测到的factor变量都是内联的。

使用Change Signature更改参数名称。选中方法声明行,然后按Ctrl F6。在打开的dialog box中,分别将参数denom和num重命名为x和y,然后单击图标节点upLevel以更改参数的顺序。

除了本地IDE工具功能以外,PyCharm能不能做得更好?我觉得就PyCharm自身来看,发展已经上了正规,我认为目前应该做的是生态的扩展,或者说联合。与谁联合?与公有云。如果能够做到在本地编码、利用公有云的计算资源进行调试,那相当于做到了云边协同。华为云ModelArts提供了插件,支持让本地的PyCharm与ModelArts结合在一起使用详细的过程请参考文档:https://bbs.huaweicloud.com/blogs/160467我们实际上只需要做三个步骤,即可支持本地的PyCharm与ModelArts平台结合使用:1.下载并安装插件;2. ModelArts网站申请秘钥;3. PyCharm填写秘钥键值对。你把PyCharm想象成C/S设计模式的Client端,把ModelArts想象成Server端,就容易理解了。我这里举一个实际的使用案例—手写字模型训练案例。首先,下载手写字的数据集:

https://modelarts-cnnorth1-market-dataset.obs.cn-north-1.myhuaweicloud.com/dataset-market/Mnist-Data-Set/archiver/Mnist-Data-Set.zip

登录华为云上传OBS:

创建两个文件夹,一个用于存放数据集,一个用于存放训练生成的日志(需要传回到PyCharm IDE并显示):

填写参数,可以参考ModelArts训练模型时填写的参数:

上面的日志输出中,左下角是本地的输出,右下角是ModelArts返回的云端训练日志。训练完成后,训练模型保存在OBS中/工程名/output/V0006/。

Jupyter Notebook

在AI研究探索场景中,Jupyter 作为一个特殊的存在迅速成长为AI探索类场景开发的首选,能够在其各个阶段满足开发者诉求并覆盖这些关键点,以及支持在浏览器中使用的特点。Jupyter 起始于 IPython 项目,IPython 最初是专注于 Python 的项目,但随着项目发展壮大,已经不仅仅局限于 Python 这一种编程语言了。按照Jupyter创始人的想法,最初的目标是做一个能直接支持Julia(Ju),Python(Py)以及R三种科学运算语言的交互式计算工具平台,所以将他命名为Ju-Py-te-R,发展到现在Jupyter已经成为一个几乎支持所有语言,能够把代码、计算输出、解释文档,多媒体资源整合在一起的多功能科学运算平台。这里需要提到的另外一个概念就是“文学编程”,文学编程是一种由Donald Knuth提出的编程范式。这种范式提供了用自然语言来解释程序逻辑的机会。简单来说,文学编程的读者不是机器,而是人。从写出让机器读懂的代码,过渡到向人们解说如何让机器实现我们的想法,其中除了代码,更多的是叙述性的文字、图表等内容。文学编程中间穿插着宏片段和传统的源代码,从中可以生成可编译的源代码。作为第一个贯穿整个科学计算研究的生命周期工具平台,可以将可以分解为,如果我们将科学计算研究全生命周期分解为,个人探索,协作与分享,生产化运行环境,发表与教学,Notebook都可以在这些阶段中满足科研工作的需求。

选择基于那个计算引擎(例如TensorFlow-1.8),如下图所示:

输出代码片段,在第一段代码中由于已经请求了用户输入,所以需要我们输入一个数字,只要是正常的整形数字,不会报错,如下图所示:

后记

>>>import this

The Zenof Python, by Tim Peters

Beautifulis better than ugly.优美优于丑陋(以编写优美的代码为目标)

Explicitis better than implicit.明了优于隐晦(优美的代码应当是简洁明了的)

Simpleis better than complex.简单优于复杂(避免存在过多的复杂内部实现)

Complexis better than complicated.复杂优于凌乱(保持接口简洁)

Flatis better than nested.扁平优于嵌套(避免多层嵌套)

Sparseis better than dense.间隔胜于紧凑(保持适当的间隔,不要奢望一行代码解决问题)

Readabilitycounts.可读性很重要(保持并不断提提升代码的可阅读感)

Specialcases aren’t special enough to break the rules.即使实用比纯粹更优

Althoughpracticality beats purity.特例亦不可违背原则

Errorsshould never pass silently.错误绝不能悄悄忽略

Unlessexplicitly silenced.除非它明确需要如此

Inthe face of ambiguity, refuse the temptation to guess.面对不确定性拒绝妄加猜测

Thereshould be one– and preferably only one –obvious way to do it.任何问题应有一种且最好只有一种显而易见的解决方法

Althoughthat way may not be obvious at first unless you’re Dutch.尽管这方法一开始并非如此直观除非你是荷兰人(指的是Python之父荷兰人Guido van Rossum)

Nowis better than never.做优于不做

Althoughnever is often better than *right* now.然而不假思索还不如不做

Ifthe implementation is hard to explain, it’s a bad idea.很难解释的,必然是坏方法

Ifthe implementation is easy to explain, it may be a good idea.很好解释的,可能是好方法

Namespacesare one honking great idea — let’s do more of those! 提倡使用命名空间上面这些准备,并不单单适用于Python,编程语言体系都适用。

活动开奖

恭喜

@狮子座流星雨

@dayday-萌推

@zhangXianJun

发表评论

登录后才能评论