到 2019 年,在一些排名中,Python 已经成为最流行的语言,无论是在科学计算还是在计算机领域都有大量的使用者.本书中我们主要介绍 python 在科学计算中的应用.
如果不想安装软件可以直接用浏览器访问 Jupyter Notebook 运行 Python 程序,要在本地使用 Python 推荐安装 Anoconda.以下我们用前者进行讲解.Jupyter Notebook 的优点是交互式编程,即每输入一个命令都可以立即执行(快捷键 Shift + Enter),利于学习和实验.
作为计算器
请在 Jupyter Notebook 中尝试输入以下命令并执行(运行结果略).Python 程序使用 # 注释一行, 或者用两个 “”” 或 “”” 注释多行
四则运算2 + 2
123 / 456 # 注意得到的是浮点数
123 // 456 # 两数相除后向下取整
幂运算
3 ** 2
整数除法,即相除再向下取整
4 // 3
求余
4 % 3 # 使得 a == a // b + a % b 恒成立
使用括号
(123 – 234*2)**2 / (34 + 54**4)
各种常见的数学函数都在 math 模块中,需要加载.
import math
使用模块中的函数,要在前面加上模块名和一点.例如开方(square root)
math.sqrt(284)
自然指数函数
math.exp(5.1)
这样做虽然略显麻烦,但可以区分不同模块中同名函数.在确保没有冲突的情况下我们也可以用以下方法加载模块中的指定函数,如
from math import sqrt, exp, sin, cos
现在使用这些函数就不需要 math. 的前缀了
sin(1)
我们甚至可以用这种方式引入一个模块中所有函数(和其他内容)而无需前缀.这样做引起名称冲突的可能性更大,不建议使用.
from math import *
从模块中不仅可以引入函数,还有常数,例如圆周率和自然对数底(注意 e 这种单字母名称很可能会产生冲突,所以不建议取消 math. 前缀)
sin(pi/2)
log(e)
math 模块中的其他常用函数如:绝对值(absolute value)fabs(-32)
自然对数
log(0.5)
以 10 为底的对数
log10(1000)
弧度转为角度
degrees(pi/2)
变量
Python 中的变量(variable) 和数学中的不同,Python 的变量可以理解为一个储存数值的容器,我们可以用等号把一个数值储存在一个变量中.例如要计算一个长方体的面积,我们既可以直接把三个数字相乘,也可以先把这三个数字赋值给三个变量然后相乘a = 1
b = 2
c = 3
volumn = a*b*c
在 Jupyter Notebook 执行这四行发现并没有输出,无论是一次性执行还是分开执行.这是因为赋值命令默认不输出结果.要强制输出结果可以用
print(volumn)
或者一次输出多个变量
print(a, b, c, volumn)
注意:在 python2.x 版本中,print 是一个关键字,输出内容不需要加括号,python 3.x 中它是一个函数,可以介绍任意多个用逗号隔开的变量,他们甚至可以是不同类型的.例如
print volumn #2.x
print(volumn) # 3.x
要强调的是,这里的等号并不是数学上的等于,而是赋值,即把等号右边得到的数值储存在左边的变量中.在第 4 行执行时,计算机会先计算等号右边表达式的结果 6,然后将 6 储存在变量 volumn 中.volumn 这个变量中并不会包含 a*b*c 这个信息,只储存 6 这个数值.所以改变 a, b, c 后 volumn 的值并不会自动改变.
如果要让长方形的某个边长增加 1,我们可以执行a = a + 1
如果将等号理解为数学上的等于,这个式子显然是错的.但正确的理解是,先把 a 当前的值 1 加上 1 得到 2,然后把 2 赋值给 a.由于我们没有给 volumn 重新赋值,它仍然是 6,要更新 volumn,只需要重新执行
volumn = a*b*c
并用 print(volumn) 显示新的值.
等效地,我们也可以用自加运算 +=,将 a = a + 1 记为a += 1
注意 += 是一个整体的算符,中间不能有空格.类似的运算还有 -=,*=,/= 等.
函数
Python 中的函数与数学中的函数不完全一样,函数可以有若干个输入变量和输出变量(也可以没有).下面我们定义一个简单的函数来计算长方形的面积def f(a, b, c):
volumn = a*b*c
return volumn
这段代码用到了两个 Python 的关键字(keyword) def 和 return.关键字是指在程序中有特殊含义的单词,不能作为变量名和函数名的名称.其中 def 用于定义函数,f 是函数名,a,b 和 c 分别是函数的输入变量(argument).冒号以后是函数体,可以有若干行命令.注意这些命令前面必须有缩进(indentation). 在以上代码中,函数体的第一行计算面积,第二行将用关键字 return 将计算的结果作为输出并退出函数.
现在我们可以使用这个函数,使用方法和 sin,sqrt 等数学函数一样,只是不同输入变量要用逗号隔开.V = f(1.2, 3.4, 6)
print(V)
1. 事实上 “””…””” 或 “””…””” 是一个字符串而不是注释,但单独出现的字符串并不会对程序运行造成影响,所以可以用作注释