Python 初学者指南

您是否正在寻找一种容易学习的编程语言来帮助完成科学工作?不必舍近求远,Python 就能办到。我们将介绍开始使用这种简单的编程语言需要了解的一些基本概念,并展示如何使用 Python 执行从运行代数计算到根据数据生成图形输出的所有操作。

科学计算回顾

科学计算涉及到使用计算机解决科学问题。具体来讲,可以使用计算机来解方程。从单一非线性方程( 求根
)到线性代数方程组( 数字线性代数
),再到解决非线性偏微分方程组( 计算物理学
)。

过去,解决这些问题的数字算法是用诸如 C/C++ 和 Fortran 之类的语言编写的 — 现在仍是如此。那么,Python 适用于哪些地方呢?Python 非常适合用来快速实现和测试新(或旧)算法,并将多个物理学代码编组到一起(美国的顶级实验室经常这么做)。Python 易于使用,学起来很有趣,而且非常强大。那么您还在等什么?让我们开始吧!

下载 Python

Python 可广泛应用在所有运行 Linux 或 macOS 操作系统的计算机上。您甚至可以在 iPad 上使用 Pythonista
应用程序来运行 Python。您还可以从 Python.org
下载一个适合 Windows 的版本。但是如果您要执行科学计算(即使您不执行科学计算),建议您下载并安装 Anaconda
。Anaconda 提供了一个完整的 Python 安装,还提供了许多用于科学计算的不错的包(我将它们称为 模块
)。它还能够轻松访问集成开发环境 Spyder。

Python 乐意为您效劳

安装 Anaconda 后,您可以单击 Anaconda Navigator 的图标,并开始享受乐趣。在右下角的窗口中,您会看到一个命令提示符。将鼠标放在此提示符右侧,就可以开始输入 Python 命令。如果采用学习新编程语言的传统路线,可以先输入 print("Hello World!")
,然后按下 Return

可以使用命令提示符输入一个或多个命令来快速测试代码段,或者为您的工作生成输出。在涉及大量代码时,最好单独生成并保存一个程序文件(稍后会详细介绍)。

另一个选项(至少在 Linux 和 macOS 上)是打开终端窗口,并在命令提示符上输入 Python
。这样做会启动 Python 命令提示符,而且您可以开始输入命令并运行 Python 代码。如果在终端窗口中输入 idle
,您会获得一个包含 Idle Python 编辑器的新窗口 — 可以方便地编写新 Python 脚本并使用强大的 F5
命令运行它们。

这一名称的含义是什么?

您已安装 Python 并知道如何开始输入命令,现在,您可以继续执行一些数学和科学操作。解方程的计算机编程涉及到使用变量和处理代表这些变量的数字。例如,在 Python 中,可以通过在命令提示符上输入以下命令来定义一个变量:

>>> x0 = 1.5
>>> x1 = 2.0

恭喜!您刚才同时创建了两个名为 x0
x1
的新变量,而且分别为它们分配了值 1.5
2.0
。要查看实际效果,只需输入以下内容:

>>> x0,x1

或者可以调用 print
函数:

>>> print (x0,x1)

您不需要将这些变量声明为实数(浮点数)或整数,因为 Python 是一种动态输入语言;它根据赋给变量的值来动态确定变量类型。

计算机和代数

您为两个数字分配了两个变量,所以您可以立即对它们执行简单的计算机代数运算;您可以按您的意愿对它们执行加减乘除。这是计算机最在行的事情。要查看此代数运算的运行效果,可在命令提示符上输入以下命令:

>>> yp = x0 + x1
>>> ym = x1 - x0
>>> yt = x0*x1
>>> yd = x1/x0
>>> print(yp,ym,yt,yd)

您现在已在正式执行科学计算。

计算机和逻辑

如果计算机只能执行代数运算,那么它们对科学计算的影响将是有限的。事实上,计算机还擅长处理逻辑,这使得创建复杂程序成为可能。您可能很熟悉 if this, then that
( IFTTT
) 逻辑。这与我讲的主题并不完全相符,但很接近。我指的是程序流控制,或者仅在某些条件下执行一行或一段(多行)代码,在其他条件下执行其他行或其他段代码的能力。要了解此话的真正含义,请输入以下命令:

>>> x1 = 2.0
>>> if x1 < 0: 
        x = 0
        print("Negative switched to zero")
    elif x1 == 0: 
        print ("Zero")
    else: 
        print ("x1 is positive")

该代码是一个 if
代码段的示例,其中 elif
else if
的缩写,如果前面两段(或您需要的多段)代码测试失败,则会执行 else
。 要获得更详细的解释,请查阅 Python 文档中的 更多控制流工具

科学计算中的许多算法背后的强大功能,都与对不同数据多次执行同一段代码的能力相关。在这里,循环就派上了用场。考虑下面这段代码,它使用 Python 内置函数 range
生成一个包含 10 个整数的列表,从 0 开始:

>>> x0 = 1.5
>>> for i in range(10): 
        x1 = x0 + i

此代码执行计算 x1 = x0 + i 10 次,从 i=0 开始,到 i=9 结束。

您的函数是什么?

有了函数,就可以执行将大型编程任务分解为少量子任务或 函数
的重要编程过程。 Python 拥有内置函数和外部库,我稍后会解释它们。您也可以构建自己的函数。可以使用 Python 关键字 def
创建函数,如下所示,名为 f
的函数接收输入变量 x
,并返回对所编写的代数表达式执行计算后获得的值:

>>> def f(x): 
        return x**3 - 5*x**2 + 5*x + 1 
>>> x0 = 1
>>> print ("f(x0) = ", f(x0))

要创建一个函数来计算上面的函数的分析衍生版本,请输入以下内容:

>>> def fp(x): 
        return 3*x**2 - 10*x + 5
>>> x1 = 2
>>> print ("The derivative of f(x) is: ", fp(2))

将此代码存档

目前,您已在命令提示符上输入了所有 Python 命令,这适合简短的、可任意使用的代码。但是,如果您在开发一个大型项目,或者您想保存您的工作供以后使用,建议创建一个新 Python 文件或 脚本
。可以在终端窗口中使用您最喜欢的文本编辑器完成此任务。例如,使用 vi,可以输入 vi newton.py
来创建名为 newton
且以 .py 作为文件扩展名的空白文本文件,让每个人(以及具体来讲计算机)都知道这是一个 Python 文件。然后,保持文件处于打开状态,您可以开始输入您的 Python 命令。

备注:Python 使用空格来指示代码段。标准约定是使用 4 个空格来缩进一个新代码段,比如组成一个函数的代码或一个 if-then
代码块。

编写程序的另一个重要方面是 注解
— 这些代码行会告诉阅读您的文件的人该脚本的用途。单行注解以号 ( #
) 开头;要创建多行注解,可在它们前面加一个反斜杠后跟 # ( /#
),并在它们后面加上 #/
。输入您的代码后,保存它并退出编辑器。然后从终端窗口命令行输入 python newton.py
来运行该代码(假设您与所保存的文件在同一目录中)。

在科学计算中,将一个问题或任务分解为更小的问题或 子任务
通常是个不错的主意。在 Python 中,这些子任务称为 模块
。模块是包含定义和语句的附加 Python 文件(具有文件扩展名 .py)。也有一些预先构建的模块。您可以在自己的程序中使用任何模块,只需使用 import
关键字导入它即可。例如,math 模块包含基本数学函数,比如正弦和余弦函数;可通过关键字 import math
来使用它们。

将科学计算能力导入 Python 中

希望在 Python 中使用的两个强大的科学计算模块是 NumPy
和 SciPy
。NumPy 包含许多强大的特性,但在这里尤为重要的是,它能够创建分配给单个变量的相同数据类型的数字集合(称为 数组
)。它还包含广泛的线性代数、傅里叶变换和随机数功能。SciPy 是一个包罗万象的科学计算生态系统,它包含 NumPy 和其他大量包,比如 matplotlib,我们将在下一节中介绍它。下面的代码提供了如何导入 NumPy 并在一个代码段中使用它的简单示例:

import numpy as np
/* Now we create and assign a list of integers 0 through 9 to x[0] through x[9], effectively creating a one-dimensional NumPy array */

x = np.linspace(10) 
print(x)

使用 Python 生成图形输出

利用科学计算生成数据的有效图形输出,是理解和传达结果的关键。Python 中实现这个重要目标的标准包是 matplotlib
模块。可以看到,该模块很容易访问和使用:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.arange(0, 5, 0.1)
>>> y = np.sin(x)
>>> plt.plot(x,y)
>>> plt.show()

matplotlib 模块提供了一些命令来控制行类型、颜色和样式,并保存您的图表。

后续行动

网络上有数百个网站可帮助您了解 Python 和它在科学计算中的作用。您还可以通过以下这些优秀资源进一步学习:

  • 有关在 Python 中创建的科学计算应用程序的简短示例,Daniel Homola 仅用 10 行 Python 代码就创建了 Newton 方法的一种实现
  • 我最喜欢的资源之一是 用于科学计算的 Python 的简介
  • 正在寻找优秀的图书?请查阅 Anthony Scopatz 编写的 Effective Computation in Physics: Field Guide to Research with Python
  • 最近的一篇实用性的参考文章是 Jake VanderPlas 编写的 A Whirlwind Tour of Python
    ,来自他的图书 Python Data Science Handbook: Essential Tools for Working with Data
  • 在您取得更多进步或希望超越 Python 中的科学计算时,推荐阅读 Dan Bader 编写的 Python Tricks: A Buffet of Awesome Python Features

编码愉快!

原文 

http://www.ibm.com/developerworks/cn/opensource/os-beginners-guide-python/index.html?ca=drs-

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Python 初学者指南

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址