在Atom中设置Python开发环境

在Atom中设置Python开发环境

当然,网络上有很多很棒的文本编辑器。Sublime Text,Bracket,Atom等。就我个人而言,我一直都是Atom的粉丝,因为它是完全免费的,并且它有很多可用的包和主题,这些包和主题使编码变得更容易一些。在这里,我将介绍如何使用Atom来建立一个“Python友好”的开发环境,我将提到一些对python编码有用的软件包,然后看看如何编写一些基本代码。

1)下载Atom

首先,如果我们要使用Atom作为我们的文本编辑器,我们需要下载它。下载链接在这里:https : //atom.io/

2)安装一个语法主题

安装完Atom之后,您可以转到首选项,然后在首选项菜单中选择“+install”。然后,选择主题选项以下载主题。语法主题将会有一个配色方案,使代码更容易阅读。我发现某些主题在JavaScript中似乎很棒,但它们在Python中不具备可读性。例如,对于UI和Syntax主题,我一直是Atom Dark和One Dark的忠实粉丝。直到最近,我主要使用JavaScript,React和Node进行编码,并且这个主题非常适合我。然而,在我需要使用Python时,我不太喜欢它。找到适合你的语法主题可能很困难,尤其是一旦你习惯了一个主题。

这里是我的一些Python的最爱:

1) Atom Material

这是我将在整篇文章中使用的主题,并且是上述示例中所见的主题。我喜欢它,因为很多主题都倾向于单色,因为这个原因,那些主题似乎没有可读性。Atom Material使用了很多颜色,而且对比度很高,因此很容易查找和阅读代码。https://atom.io/themes/atom-material-syntax

2)Jackhammer

这个主题没有像Atom Material那么广泛的颜色使用,但仍然对比度很高。https://atom.io/themes/jackhammer-syntax

3)PreDawn

另一个很棒的主题。我见过不少开发者使用这个,看起来对Python非常友好。https://atom.io/themes/predawn-syntax

如果您想使用这其中的一种,或者找到适合您自己的主题,可以在主题按钮右侧的搜索栏中搜索它们。或者对“syntax”或“python”进行通用搜索。

3)自动补全Python包

并非每个人都喜欢自动补全功能。我同意这个观点,因为有时它可能会成为你的阻碍。但是,如果你像我一样,只是Python的初学者,自动补全功能可能非常有用。autocomplete-python软件包让您可以选择由Jedi或Kite提供支持。Jedi是一个本地库,而Kite则是一个在线库。以下是有关该软件包的更多文档:https : //atom.io/packages/autocomplete-python

4)文件图标包

文件图标包允许您查看您正在处理的每种文件类型的图标/徽标。如果你只用Python工作,或者只用JavaScript或其他工具,那么图标可能对您来说不重要。但很可能您的文件树包含多种语言和格式的多个文件。在这种情况下,使用此包可以帮助您轻松找到树中的文件。https://atom.io/packages/atom-file-icons

5)Linter-flake8包

这是一个很棒的模块化源代码检查器。一旦你安装了软件包,你还需要使用命令行来完成安装。关于该包的工作原理被记录在文档中。https://atom.io/packages/linter-flake8

6)迷你地图包

Minimap不是python特有的,但对于任何编码语言来说都是一个很好的工具。一旦你的代码长达数百行,可能很难找到你在代码库中的位置。Minimap提供整个代码的“缩小”视图,并突出显示代码中的位置,将整个可视化功能保存在Atom编辑器中的简明侧边栏中。https://atom.io/packages/minimap

7)python-autopep 8包

autopep8会自动格式化Python代码以符合PEP 8风格指南。它使用pycodestyle实用程序来确定代码的哪些部分需要格式化。autopep8能够修复pycodestyle可以报告的大部分格式问题。安装此软件包后,可能需要单击设置并选择“保存时格式化”选项。这也需要您在命令行上使用pip完成安装,正如您在文档中看到的那样。https://atom.io/packages/python-autopep8

8)脚本包

到目前为止,该列表中最重要的一个软件包是脚本包。这允许您使用“command + i”键盘快捷键在Atom编辑器中运行脚本。代码将在文本编辑器底部的面板中运行。https://atom.io/packages/script

9)开始使用Python编写代码

我最喜欢的入门方法之一是找到一个需要解决的问题并解决它。欧拉工程网站有许多基于数学的问题,可以用任何编程语言来解决。由于我是Python新手,因此决定选择我在JavaScript中解决的一个欧拉问题,并在Python中解决相同的问题。欧拉中第5题如下所示:

2520是可以被1到10中的每一个数整除的最小的数。
可以被1到20所有数字整除的最小正数是什么?

所以在JavaScript中,我这样解决了这个问题:

let number = 1;
  while ( number % 1 !== 0 || number % 2 !== 0 || number % 3 !== 0 || number % 4 !== 0 || number % 5 !== 0 || number % 6 !== 0 || number % 7 !== 0 || number % 8 !== 0 || number % 9 !== 0 || number % 10 !== 0 || number % 11 !== 0 || number % 12 !== 0 || number % 13 !== 0 || number % 14 !== 0 || number % 15 !== 0 || number % 16 !== 0 || number % 17 !== 0 || number % 18 !== 0 || number % 19 !== 0 || number % 20 !== 0) {
  number = number + 1;
  } 
console.log(number);

基本上这里我有一个while循环,从1开始,它检查这个数字是否可以被1到20整除并且没有余数。如果这个数字不能满足条件,它会自加一并再次检查,直到找到匹配数字。所以在Python中,我试图简单地使用相同的代码,但是将它翻译成Python,看起来像下面这样,我认为这并不是一个好的解决方案。

number = 1
while (number % 1 <> 0 or number % 2 <> 0 or number % 3 <> 0 or number % 4 <> 0 or number % 5 <> 0 or number % 6 <> 0 or number % 7 <> 0 or number % 8 <> 0 or number % 9 <> 0 or number % 10 <> 0 or number % 11 <> 0 or number % 12 <> 0 or number % 13 <> 0 or number % 14 <> 0 or number % 15 <> 0 or number % 16 <> 0 or number % 17 <> 0 or number % 18 <> 0 or number % 19 <> 0 or number % 20 <> 0):
    number += 1
    print number

基本上,它和上面的代码做了相同的事情,但是是用Python编写的。我很快意识到的一个主要区别是,Python将打印从1开始的每一个数字,直到答案出现,这可能需要很长时间。所以当我开始尝试理解Python时,下面是一些语法上的差异,这将有助于我们入门:

1)对于循环

我发现JavaScript中正常的循环如下所示:

for (var i = 0; i < array.length; i++) {
    array[i]
  }

但是,在Python中,它看起来更像是JavaScript “for in” 循环:

for x in range(0, 3):
    print "We're on time %d" % (x)

for循环从0到2,因此运行3次。

2)变量

在JavaScript中,首先调用“let,var或const”来定义变量。

let x = 1
const y = 2
var z = 3
let my_array = [1, 2, 3, 4]

在Python中,只需键入变量名称而不将其定义为变量。

x =  1 
y =  2 
z =  3
my_array =  [ 1 , 2 , 3 , 4 ]

3)函数

在JavaScript中,函数使用“function”来调用,并且可以接受一个参数或多个参数:

function  test_prime ( n ){ 
// 函数体
}

在Python中,它们基本相同,但是使用关键字“def”来调用。

def test_prime(n):
   // 函数体

函数调用的另一个主要区别在于:在JavaScript中,函数内部的工作始终在花括号之间,遵循参数;而在Python中,函数以冒号开头,而不是花括号,函数是在调用该函数的行下面缩进的任何代码。对于我们之前安装的一些软件包,您经常会看到“意外缩进”,让您知道您已经缩进了某些不需要被缩进的内容。如果你更熟悉像JavaScript这样的缩进不会影响代码的语言,这有点难以适应。

4)控制台日志

在JavaScript中,如果你想运行一个脚本或者代码块,你可以直接使用console.log

console.log(my_function);

在Python中,你通常使用“print”命令

print solution    # python2
print(solution)    # python3

有了这些基础,我就开始使用Stack Overflow,并为我的第一个项目“欧拉问题”找到了更好的解决方案:

check_list =  [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 ]
def find_solution(step):
    for num in xrange(step, 999999999, step):
        if all(num % n == 0 for n in check_list):
            return num
    return None
if __name__ == '__main__':
    solution = find_solution(2520)
    if solution is None:
        print "No answer found"
    else:
        print "found an answer:", solution

这里是Stack Overflow上的链接:https : //stackoverflow.com/questions/8024911/project-euler-5-in-python-how-can-i-optimize-my-solution

在这里,我们有一个变量“check_list”,它包含一个数组。

在函数“def find_solution”的内部,我们遍历数字1到999999999,并检查每个数字的整除数。如果匹配,我们返回数字,否则我们没有返回。

然后,我们向find_solution函数提供参数2520,函数只检查每个第2520个数字,而不是检查每个数字或每隔一个数字,这允许代码运行得更快。程序会打印答案,如果找不到符合条件的数字,它会打印“No answer found”。

很明显,我是个Python新手。如果你像我一样,只是刚刚入门,希望这篇文章可以让你有一些思考。非常感谢您的阅读!

本文的版权归 teachertian 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

改造Python中文拼音扩展库pypinyin补充自定义声母全过程

问题要从昨天说起,应根球老师发给我一个代码问可能是啥原因,如下: ? 该函数的第二个参数3含义为只保留声母,为啥“应”的声母丢了呢? 因为当时正是课间休息,一会...

3528
来自专栏FreeBuf

逆向APK进行smali注入实现“秒破WIFI”

近期开始关注手机安全了,以往都是在PC上玩,对这个领域也想了解一下,可是拿什么来开刀呢?突然想起Wifi万能钥匙这个神器了,这个软件的wifi分享模式鄙人非常喜...

2106
来自专栏AI

在Atom中设置Python开发环境

当然,这里有很多很棒的文本编辑器。Sublime Text,Brackets,Atom。我一直都是Atom的粉丝,因为它是完全免费的,它有很多可用的包和主题,使...

3507
来自专栏地方网络工作室的专栏

Python3 初学实践案例(2)将源目录中的图片用MD5命名并可以设定目标目录

Python3 初学实践案例(2)将源目录中的图片用MD5重命名后移动或复制到目标文件夹 尝试了一下用 python 实现了一个生成密码的程序。感觉还是比较好上...

19010
来自专栏移动端开发

这个断点可以帮你检查布局约束

前言:     在现在iOS布局中,估计有很多很多开发者会使用到 Masonry 或者用到 SDAutoLayout 或者Storyboard或者还有Xib等等...

1999
来自专栏我的博客

原生JavaScript第一天

首先:感谢李炎恢老师的无私奉献 其次:下面的学习总结都是根据李炎恢老师的视频以及参考网络资料编写,转载请注明出处:http://www.0377joyous.c...

2584
来自专栏安恒网络空间安全讲武堂

CTF逆向--.NET与Python篇

题目(来源:Jarvis-OJ): Classical Crackme Classical CrackMe2 FindKey Login Classical C...

3088
来自专栏王磊的博客

Visual Studio 2010 中JS注释制作

  Visual Studio 2010中的js注释已经很强大了,但怎么才能和调用c#的方法一样容易呢?怎样才能让每个参数都有注释说明呢?底下就是想要的答案。 ...

3439
来自专栏极客慕白的成长之路

CTF札记二

首先第一层检查需要绕过ereg漏洞,百度可以知道存在截断的问题:ereg读到%00的时候,就截止了, 那么在字符串里面包括%00即可; 接着需要长度小于8但要大...

583
来自专栏CDA数据分析师

Python 实现一个火车票查询的工具

使用 python 实现一个查询火车票的小工具 主要功能: 输入出发车站,到达车站,时间,然后返回所有的车次信息,和余票信息 支持输入附加选项查询不同的火车的类...

1777

扫描关注云+社区