标签 python 下的文章

在 Tiobe 指数近 20 年的历史中,Python 第一次成为第二大流行语言。

Tiobe 这么多年以来发布的指数中,29 岁的 Python 首次超过了 25 岁 Java,成为第二受欢迎的编程语言。

最新的 Tiobe 指数中,数据科学和机器学习项目的首选语言 Python,现在排名仅次于 C 语言,排在第二位,将 Java 打落到第三位。

2020 年 10 月编程排行榜前 3 名

这是 Tiobe 指数近 20 年的历史上,第一次出现 Java 和 C 语言不是两大顶级语言的情况。第三也是 Java 在 Tiobe 指数中的最低位置。Tiobe 指数使用多个搜索引擎上的查询来得出其评级

Python 显示比一年前的位置上升了 2.27%,这与同期 Java 下降了 -4.47% 形成鲜明对比。

历年前 10 名编程语言的年度平均排名

7 月份开发者分析机构 RedMonk 的编程语言受欢迎程度排名中,Python 也从 Java 手中抢走了第二名。不过,RedMonk 将 JavaScript 列为顶级语言。这是 RedMonk 的前两名首次不由 Java 或 JavaScript 组成。

根据电气工程出版物《IEEE Spectrum》的最新流行度排名,Python 已经是最受欢迎的语言

虽然 Python 在机器学习和数值计算等不断增长的科技领域获得了广泛的应用,但 Tiobe 首席执行官 Paul Jansen 认为,Python 最近的流行度激增是因为它足够简单,非程序员也能使用,而不是一种只适合高级程序员的语言。

“我相信 Python 的流行与普遍需求有关”,Jansen 写道,“过去,大多数编程活动都是由软件工程师完成的,但现在到处都需要编程技能,而且缺乏优秀的软件开发人员。”

“因此,我们需要一些简单的、可以由非软件工程师处理的东西,需要一些容易学习、编写周期快、部署流畅的东西。Python 满足了所有这些需求。”

RedMonk 的 Stephen O'Grady 对 Python 近年来的崛起有一个稍微不同的解释。

O'Grady 将 Python 与全盛时期的 Perl 相提并论,因为 Python 已经成为成千上万个小型项目的“首选语言”和“粘合剂”,同时在数据科学等不断增长的类别中享有很高的采用率。

但正如 Perl 今天所显示的那样(它在 Tiobe 指数中排名第 12 位),即使是曾经在某些开发者社区中大受欢迎的语言,也会相对迅速地衰落。

同样,Python 的未来也无法保证,它在构建移动和浏览器应用或任何有用户界面的东西方面也有明显的局限性。

C、Python、Java 编程语言的评分变化

流行的 Python 数据科学发行版的开发商 Anaconda 的 CEO Peter Wang 最近告诉 ZDNet,Python 作为后端系统自动化和脚本的语言的价值使它很难被取代。

虽然他是 Python 的主要支持者,但他也认为 Python 需要制定一个清晰的愿景,以保持与数据科学以外的其他应用开发语言的竞争力。


via: https://www.zdnet.com/article/programming-language-pythons-popularity-ahead-of-java-for-first-time-but-still-trailing-c/

作者:Liam Tung 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Mu 让你轻松学会如何编写 Python 代码。

在学校里,教孩子们编程是非常流行的。很多年前,在 Apple II 和 Logo) 编程的年代,我学会了创建 乌龟 turtle 绘图。我很喜欢学习如何对虚拟乌龟进行编程,后来也帮助学生进行编程。

大约五年前,我了解了 Python 的 turtle 模块,这是我 Python 之旅的转折点。很快,我开始使用 turtle 模块来教学生 Python 编程基础,包括使用它来创建有趣的图形。

开始使用 Python 的 turtle 模块

在 Linux 或 macOS 电脑上,你只需打开一个终端,输入 python,你就会看到 Python shell。

如果你使用的是 Windows 电脑,则需要先安装 Python,到 Python 网站上下载最新的稳定版。

接下来,用 import turtleimport turtle as tturtle 模块导入 Python 中。然后你就可以开始享受创建乌龟绘图的乐趣了。

认识一下 Mu

在我的 Python 冒险的早期,我使用了 IDLE,它是 Python 的集成开发环境。它比在 Python shell 中输入命令要容易得多,而且我可以编写和保存程序供以后使用。我参加了一些在线课程,阅读了许多关于 Python 编程的优秀书籍。我教老师和学生如何使用 IDLE 创建乌龟绘图。

IDLE 是一个很大的改进,但在克利夫兰的 PyConUS 2019 上,我看到了 Nicholas Tollervey的演讲,这改变了我学习和教授 Python 的方式。Nick 是一位教育家,他创建了 Mu,一个专门为年轻程序员(甚至像我这样的老程序员)设计的 Python 编辑器。Mu 可以安装在 Linux、macOS 和 Windows 上。它很容易使用,并且附带了优秀的文档教程

在 Linux 上,你可以通过命令行安装 Mu。

在 Ubuntu 或 Debian 上:

$ sudo apt install mu-editor

在 Fedora 或类似的地方:

$ sudo dnf install mu

或者,你可以使用 Python 来进行安装。首先,确保你已经安装了 Python 3:

$ python --version

如果失败了,就试试:

$ python3 --version

假设你有 Python 3 或更高版本,使用 Python 包管理器 pip 安装 Mu。

$ python -m pip install mu-editor --user

然后你可以从命令行运行 Mu,或者创建一个快捷方式:

$ python -m pip install shortcut mu-editor --user

树莓派上默认安装了 Mu,这是一个很大的优点。在过去的几年里,我已经向学生介绍了使用树莓派和 Mu 编辑器的 Python 编程。

如何用 Mu 教授 Python

Mu 是向学生展示 Python 入门的好方法。下面是我如何教学生开始使用它。

  1. 打开 Mu 编辑器。

 title=

  1. 输入 import turtle 导入 turtle 模块,就可以让乌龟动起来了。我的第一课是用 Python 代码画一个简单的正方形。

 title=

  1. 保存这个程序,确保文件名以 .py 结尾。

 title=

  1. 运行程序。哪怕是运行这样一个简单的程序都会让人兴奋,看到你写的程序的图形输出是很有趣的。

 title=

超越基础知识

在上完这节简单的课后,我讲解了有一些方法可以简化和扩展学生所学的基础知识。一是创建一个更简单的 turtle 对象,import turtle as t。然后我介绍了一个 for 循环,用另外一种 turtle 方法画一个正方形。

 title=

接下来,我将展示如何创建一个 my_square 函数,作为另一种绘制正方形的方法。

 title=

后来,我通过介绍其他 turtle 模块方法,包括 penuppendownpencolor 来扩展这个概念。很快,我的学生们就开始开发更复杂的程序,并对其进行迭代。

 title=

我一直渴望学习,我很想知道你在学校或家里是如何教授 Python 的。请在评论中分享你的经验。


via: https://opensource.com/article/20/9/teach-python-mu

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 Termux 和 Flask 在你的移动设备上创建、开发和运行一个网页应用。

学习和使用 Python 是很有趣的。由于它越来越受欢迎,有越来越多的方式可以让计算世界比现在更好。

想象一下,只需一个 Android 移动设备和开源工具,就可以构建和运行一个 Python 应用,无论是开发一个命令行工具从互联网上获取你最喜欢的文章,还是启动一个直接在掌上设备运行的网页服务器,所有这些都可以实现。这将完全改变你对移动设备的看法,将它从一个仅仅让你消费内容的设备变成一个帮助你发挥创造力的设备。

在本文中,我将演示运行和测试一个简单的 Python 应用所需的所有的工具、软件包、步骤和各种零零散散的东西。我使用 Flask 框架来创建一个简单的 “Hello, World!” 应用,并在一个简单而强大的网页服务器上运行。最棒的是,这一切都发生在手机上。不需要笔记本或台式机。

在 Android 上安装 Termux

首先,安装 Termux 应用程序。Termux 是一个强大的终端仿真器,它提供了所有最流行的 Linux 命令,加上数百个额外的包,以便于安装。它不需要任何特殊的权限,你可以使用默认的 Google Play 商店或开源应用仓库 F-Droid 来安装。

安装 Termux 后,启动它并使用 Termux 的 pkg 命令执行一些必要的软件安装。

订阅附加仓库 root-repo

$ pkg install root-repo

执行更新,使所有安装的软件达到最新状态。

$ pkg update

最后,安装 Python:

$ pkg install python

安装和自动配置完成后,就可以构建你的应用了。

在 Android 上构建一个 Android 应用

现在你已经安装了一个终端,你可以在很大程度上像使用另一台 Linux 电脑一样使用你的 Android 手机。这很好地展示了终端到底有多强大。

首先创建一个项目目录:

$ mkdir Source
$ cd Source

接下来,创建一个 Python 虚拟环境。这是 Python 开发者的常见做法,它有助于让你的 Python 项目独立于你的开发系统(在本例中是你的手机)。在你的虚拟环境中,你将能够安装特定于你应用的 Python 模块。

$ python -m venv venv

激活你的新虚拟环境(注意,开头的两个点用空格隔开)

$ . ./venv/bin/activate
(env)$

请注意你的 shell 提示符现在以 (env) 开头,表示你在虚拟环境中。

现在使用 pip 安装 Flask Python 模块。

(env) $ pip install flask

在 Android 上写 Python 代码

你已经准备好了。现在你需要为你的应用编写代码。

要做到这一点,你需要有经典文本编辑器的经验。我使用的是 vi。如果你不熟悉 vi,请安装并试用 vimtutor,它(如其名称所暗示的)可以教你如何使用这个编辑器。如果你有其他你喜欢的编辑器,如 jovejedjoeemacs,你可以安装并使用其中一个。

现在,由于这个演示程序非常简单,你也可以直接使用 shell 的 heredoc 功能,它允许你直接在提示符中输入文本。

(env)$ cat << EOF >> hello_world.py
> from flask import Flask
> app = Flask(__name__)
>
> @app.route('/')
> def hello_world():
>     return 'Hello, World!'
> EOF
(env)$

这只有六行代码,但有了它,你可以导入 Flask,创建一个应用,并将传入流量路由到名为 hello_world 的函数。

现在你已经准备好了网页服务器的代码。现在是时候设置一些环境变量,并在你的手机上启动一个网页服务器了。

(env) $ export FLASK_APP=hello_world.py
(env) $ export FLASK_ENV=development
(evn) $ python hello_world.py

启动应用后,你会看到这条消息:

serving Flask app… running on http://127.0.0.1:5000/

这表明你现在在 localhost(也就是你的设备)上运行着一个微型网页服务器。该服务器正在监听来自 5000 端口的请求。

打开你的手机浏览器并进入到 http://localhost:5000,查看你的网页应用。

你并没有损害手机的安全性。你只运行了一个本地服务器,这意味着你的手机不接受来自外部世界的请求。只有你可以访问你的 Flask 服务器。

为了让别人看到你的服务器,你可以在 run 命令中加入 --host=0.0.0.0 来禁用 Flask 的调试模式。这会打开你的手机上的端口,所以要谨慎使用。

(env) $ export FLASK_ENV=””
(env) $ flask run –host=0.0.0.0

Ctrl+C 停止服务器(使用特殊的 Termux 键来作为 Ctrl 键)。

决定下一步怎么做

你的手机可能不是一个严肃的网页应用的理想服务器平台,但这个例子证明了可能性是无限的。你可能会在 Android 手机上编程,只是因为这是一种方便的实践方式,或者因为你有一个令人兴奋的本地化网页应用的新想法,或者你只是碰巧使用 Flask 应用来完成自己的日常任务。正如爱因斯坦曾经说过的“想象力比知识更重要”,对于任何一个新手编码者,或者一个经验丰富的 Linux 或 Android 爱好者来说,这是一个有趣的小项目。它可以扩展到无穷的层次,所以让你的好奇心接手,并做出一些令人兴奋的东西!


via: https://opensource.com/article/20/8/python-android-mobile

作者:Phani Adabala 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

联想发布首款 Fedora Linux ThinkPad 笔记本电脑

多年来,ThinkPad 一直是 Linux 用户的首选笔记本。然后,在 2008 年联想背弃了桌面 Linux。今天,联想长久以来第一次发布了搭载现成 Linux 的 ThinkPad。而且,不是普通的 Linux,而是红帽的社区 Linux:Fedora。在这个新的 Linux 友好型产品线中,首先是 X1 Carbon Gen 8。随后将有即将推出的 ThinkPad P1 Gen2 和 ThinkPad P53 的版本。这并不是联想唯一支持 Linux 桌面的举措。联想正计划对其整个工作站组合进行 Canonical 和 Red Hat 顶级 Linux 发行版的认证--“每种型号、每种配置”。

来源:zdnet

拍一拍:终于可以从主流 PC 厂商联想那里买到了红帽面向开发者的社区 Linux 发行版 Fedora。

美国法庭判决被 Snowden 曝光的大规模监视项目是非法的

美国第九巡回上诉法庭判决此类项目是非法的。法庭认为,无搜查令的撒网式大规模秘密收集数百万美国人的电话记录违反了外国情报监视法,可能还构成了违宪。在 Snowden 曝光后,美国官员改口称大规模监视在打击国内极端主义上扮演着重要的作用。美国官员还引用了多位极端主义者被定罪作为大规模监视合法的证据,但第九巡回上诉法庭指出,此类说辞与机密记录不一致。ACLU 则表示这是隐私权一次胜利。

来源:solidot

拍一拍:要是没有 Snowden,谁能知道呢?

新的 Python 脚本木马恶意软件瞄准金融科技公司

这个被称为 Evilnum 的黑客组织活动多种多样,有报道称它使用 Javascript 和 C# 编写的不同组件,现在它又部署了一个新的攻击工具 PyVil RAT。它能够进行键盘记录、截屏等功能,而背后的人也是费尽心思,尽可能地将其隐藏起来。

来源:zdnet

拍一拍:各种编程工具都能沦为作恶的手段。

pipenv 是一个可帮助 Python 开发人员维护具有特定一组依赖关系的隔离虚拟环境,以实现可重新复制的开发和部署环境的工具。它类似于其他编程语言中的工具如 bundler、composer、npm、cargo、yarn 等。

最近发布了新版本的 pipenv 2020.6.2。现在可以在 Fedora 33 和 Rawhide 中使用它。对于较旧的 Fedora,维护人员决定打包到 COPR 中来先进行测试。所以在他们把它推送到稳定的Fedora版本之前,来试试吧。新版本没有带来任何新颖的功能,但是经过两年的开发,它解决了许多问题,并且在底层做了很多不同的事情。之前可以正常工作的应该可以继续工作,但是可能会略有不同。

如何获取

如果你已经在运行 Fedora 33 或 Rawhide,请运行 $ sudo dnf upgrade pipenv 或者 $ sudo dnf install pipenv,你将获得新版本。

在 Fedora 31 或 Fedora 32 上,你需要使用 copr 仓库,直到经过测试的包出现在官方仓库中为止。要启用仓库,请运行:

$ sudo dnf copr enable @python/pipenv

然后将 pipenv 升级到新版本,运行:

$ sudo dnf upgrade pipenv

或者,如果尚未安装,请通过以下方式安装:

$ sudo dnf install pipenv

如果你需要回滚到官方维护的版本,可以运行:

$ sudo dnf copr disable @python/pipenv
$ sudo dnf distro-sync pipenv

COPR 不受 Fedora 基础架构的官方支持。使用软件包需要你自担风险。

如何使用

如果你有用旧版本 pipenv 管理的项目,你应该可以毫无问题地使用新版本。如果有问题请让我们知道。

如果你还不熟悉 pipenv 或想开始一个新项目,请参考以下快速指南:

创建一个工作目录:

$ mkdir new-project && cd new-project

使用 Python 3 初始化 pipenv

$ pipenv --three

安装所需的软件包,例如:

$ pipenv install six

生成 Pipfile.lock 文件:

$ pipenv lock

现在,你可以将创建的 PipfilePipfile.lock 文件提交到版本控制系统(例如 git)中,其他人可以在克隆的仓库中使用此命令来获得相同的环境:

$ pipenv install

有关更多示例,请参见 pipenv 的文档

如何报告问题

如果你使用新版本的 pipenv 遇到任何问题,请在 Fedora 的 Bugzilla中 报告问题。Fedora 官方仓库和 copr 仓库中 pipenv 软件包的维护者是相同的人。请在报告中指出是新版本。


via: https://fedoramagazine.org/come-test-a-new-release-of-pipenv-the-python-development-tool/

作者:torsava 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

使用 NumPy、SciPy、Scikit-Image 和 Astropy 探索宇宙

天文学与 Python

对科学界而言,尤其是对天文学界来说,Python 是一种伟大的语言工具。各种软件包,如 NumPySciPyScikit-ImageAstropy,(仅举几例) ,都充分证明了 Python 对天文学的适用性,而且有很多用例。(NumPy、Astropy 和 SciPy 是 NumFOCUS 提供资金支持的项目;Scikit-Image 是个隶属项目)。我在十几年前脱离天文研究领域,成为了软件开发者之后,对这些工具包的演进一直很感兴趣。我的很多前天文界同事在他们的研究中,使用着前面提到的大部分甚至是全部工具包。以我为例,我也曾为位于智利的超大口径望远镜(VLT)上的仪器编写过专业天文软件工具包。

最近令我吃惊的是,Python 工具包竟然演进到如此好用,任何人都可以轻松编写 数据还原 data reduction 脚本,产生出高质量的数据产品。天文数据易于获取,而且大部分是可以公开使用的,你要做的只是去寻找相关数据。

比如,负责 VLT 运行的 ESO,直接在他们的网站上提供数据下载服务,只要访问 www.eso.org/UserPortal 并在首页创建用户就可以享有数据下载服务。如果你需要 SPHERE 数据,可以下载附近任何一个包含 系外行星 exoplanet 或者 原恒星盘 proto-stellar discs 的恒星的全部数据集。对任何 Python 高手而言,通过还原数据发现深藏于噪声中的行星或者原恒星盘,实在是件令人兴奋的事。

我鼓励你下载 ESO 或其它天文影像数据,开启你的探索历程。这里提供几条建议:

  1. 首先要有一个高质量的数据集。看一些有关包含系外行星或者原恒星盘的较近恒星的论文,然后在 http://archive.eso.org/wdb/wdb/eso/sphere/query 之类的网站检索数据。需要注意的是,前述网站上的数据有的标注为红色,有的标注为绿色,标注为红色的数据是尚未公开的,在相应的“发布日期”处会注明数据将来公开的时间。
  2. 了解一些用于获取你所用数据的仪器的信息。尽量对数据的获取有一个基本的理解,对标准的数据还原之后应该是什么样子做到心中有数。所有的望远镜和仪器都有这方面的文档供公开获取。
  3. 必须考虑天文数据的标准问题,并予以校正:
1. 数据以 FITS 格式文件保存。需要使用 `pyfits` 或者 `astropy` (包含 `pyfits` )将其读入到 `NumPy` 数组。有些情况下,数据是三维的,需要沿 z 轴使用 `numpy.median` 将数据转换为二维数组。有些 SPHERE 数据在同一幅影像中包含了同一片天空的两份拷贝(各自使用了不同的滤波器),这时候需要使用 **索引** 和 **切片** 将它们分离出来。
2. <ruby> 全黑图 <rt>  master dark </rt></ruby>和<ruby> 坏点图 <rt>  bad pixel map </rt></ruby>。所有仪器都有快门全关(完全无光)状态拍摄的特殊图片,使用 **NumPy 掩膜数组** 从中分离出坏点图。坏点图非常重要,你在合成最终的清晰图像过程中,需要持续跟踪坏点。有些情况下,这还有助于你从原始科学数据中扣除暗背景的操作。
3. 一般情况下,天文仪器还要拍<ruby> 标准响应图 <rt>  master flat frame </rt></ruby>。这是对均匀的单色标准光源拍摄的一张或者一组图片。你需要将所有的原始数据除以标准响应之后再做后续处理(同样,使用 Numpy 掩膜数组实现的话,这仅仅是一个简单的除法运算)。
4. 对行星影像,为了使行星在明亮恒星背景下变得可见,需要仰仗<ruby> 日冕仪 <rt>  coronagraph </rt></ruby>和<ruby> 角差分成像 <rt>  angular differential imaging </rt></ruby>技术。这一步需要识别影像的光学中心,这是比较棘手的环节之一,过程中要使用 `skimage.feature.blob_dog` 从原始影像中寻找一些人工辅助影像作为帮助。
  1. 要有耐心。理解数据格式并弄清如何操作需要一些时间,绘出像素数据曲线图或者统计图有助于你的理解。贵在坚持,必有收获!你会从中学到很多关于图像数据及其处理的知识。

综合应用 NumPy、SciPy、Astropy、scikit-image 及其它工具,结合耐心和恒心,通过分析大量可用的天文数据分析实现重大的发现是非常有可能的。说不定,你会成为某个之前被忽略的系外行星的第一发现者呢。祝你好运!


NumFOCUS 是个非盈利组织,维护着一套科学计算与数据科学方面的杰出开源工具集。如果想了解我们的任务及代码,可以访问 numfocus.org。如果你有兴趣以个人身份加入 NumFOCUS 社区,可以关注你所在地区的 PyData 活动

本文基于 Pivigo CTO Ole Moeller-Nilsson 的一次 谈话,最初发布于 NumFOCUS 的博客,蒙允再次发布。如果你有意支持 NumFOCUS,可以 捐赠,也可以参与遍布全球的 PyData 活动 中你身边的那些。


via: https://opensource.com/article/19/10/python-astronomy-open-data

作者:Gina Helfrich, Ph.D. 选题:lujun9972 译者:silentdawn-zz 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出