通常, 每个新手都学会先在命令行上编写Python脚本, 然后再从命令行开始执行脚本, 其中脚本通常在文本编辑器中编写并从命令行运行。
计算机无法以人类编写代码的方式理解代码, 因此, 你需要在计算机和人类编写的代码之间进行解释。解释器的工作是将代码转换为计算机可以理解和处理的格式。
解释器通过以下方式处理代码:
- 按顺序处理Python脚本
- 将代码编译为字节代码格式, 这是计算机可以理解的低级语言。
- 最后, 图片中出现了Python虚拟机(PVM)。 PVM是Python的运行时动力。这是一个循环访问低级字节码代码的指令以逐一运行它们的过程。
像脚本一样, 你有一个叫做模块的东西, 这是一个导入的Python脚本, 并在另一个Python脚本中使用。
Python脚本以.py扩展名保存, 该扩展名通知计算机它是Python程序脚本。与Windows不同, 基于Unix的操作系统(例如Linux和Mac)带有预安装的Python。同样, 在Windows和Unix操作系统中运行Python脚本的方式也有所不同。
注意:对于所有用户, 尤其是Windows OS用户, 强烈建议你安装Anaconda, 可以从该网站下载。你可以按照本srcmini教程中给出的说明进行操作, 这些说明特定于Windows操作系统。
要在Windows操作系统上安装Python3, 请随时查看此链接。
可以通过以下方式在各种操作系统上访问Python的命令行解释器:
- 在Windows上, 命令行称为命令提示符, 可通过单击开始菜单并搜索命令提示符来访问。另一种方法是转到”运行”对话框, 键入cmd并按Enter(“开始”菜单$-> $运行, 然后键入cmd)。之后, 如果在C盘中安装了Python, 则只需键入C:\ python36 \ python.exe, 其中python36是Python版本(注意:此路径可能会根据Python所在的目录而有所不同。配置)。
(资源)
- 在Mac系统上, 这非常简单。你需要做的就是打开Launchpad并搜索Terminal, 然后在终端中键入Python and boom, 它将为你提供Python版本的输出。
- 与Mac系统一样, 在Linux系统上访问终端也非常容易。右键单击桌面, 然后单击终端, 然后在终端中键入Python, 仅此而已!
(资源)
注意:在本教程中, 你将学习使用Mac OS Terminal。
因此, 事不宜迟, 让我们开始吧!
在终端中编写Python脚本
让我们看看如何在终端本身中编码和生成输出。为此, 首先, 你将键入python3, 这意味着你将使用Python3版本。
之后, 你通常可以像在文本编辑器或IDE(集成开发环境)中一样进行编码, 尽管你不会像使用IDE那样在终端中获得功能。
你将从常绿的Hello, World开始!示例, 让我们看一下输出在终端中的样子。
仅通过打开终端并输入Python3即可在Python中进行编码, 这不是很好吗?让我们尝试更多示例。
在上面的示例中要注意的一件事是, 即使不键入print语句, 你也可以获得输出。
让我们使代码复杂一点, 让你使用NumPy(数字Python)库创建两个数组, 并对其应用一些数学运算。为了对numpy有所了解, 它是一个Python编程库, 具有处理大型多维数组和矩阵的能力, 以及可在这些数组上运行的大量高级数学函数的集合。
你可以从上图观察到使用numpy;你可以在终端中创建, 添加和乘以两个numpy数组。这里要注意的一件事是, numpy中的乘法函数执行逐元素乘法, 而点函数则采用两个矩阵的点积。要完成np.dot命令, 你需要确保第一个矩阵的列与第二个矩阵的行相等, 从而确保值错误。
从终端运行.py脚本
从终端运行Python脚本非常简单, 而不是在终端中编写Python脚本, 你所需要做的就是使用文本编辑器(如vim, emacs或notepad ++)并将其保存为.py扩展名。然后, 打开终端并转到代码所在的目录, 并使用关键字python和脚本名称运行脚本。
要创建terminal.py文件, 请在程序名称为vim terminal.py的终端中使用vim并将以下代码粘贴到其中。要保存代码, 请按Esc键, 然后按wq!。最后, 要运行该脚本, 只需输入python3 terminal.py, 然后在不到一秒钟的时间内, 你将看到如上所示的输出。
以下是以上示例中使用的代码。
import numpy as np
x = np.array([[1, 2], [3, 4]], dtype=np.float64)
y = np.array([[5, 6], [7, 8]], dtype=np.float64)
# Elementwise sum; both produce the array
# [[ 6.0 8.0]
# [10.0 12.0]]
print("Output of adding x and y with a '+' operator:", x + y)
print("Output of adding x and y using 'numpy.add':", np.add(x, y))
# Elementwise difference; both produce the array
# [[-4.0 -4.0]
# [-4.0 -4.0]]
print("Output of subtracting x and y with a '-' operator:", x - y)
print("Output of subtracting x and y using 'numpy.subtract':", np.subtract(x, y))
# Elementwise product; both produce the array
# [[ 5.0 12.0]
# [21.0 32.0]]
print("Output of elementwise product of x and y with a '*' operator:", x * y)
print("Output of element wise product of x and y using 'numpy.multiply':", np.multiply(x, y))
# Elementwise division; both produce the array
# [[ 0.2 0.33333333]
# [ 0.42857143 0.5 ]]
print("Output of elementwise division x and y with a '/' operator:", x / y)
print("Output of elementwise division x and y using 'numpy.divide':", np.divide(x, y))
# Elementwise square root; produces the array
# [[ 1. 1.41421356]
# [ 1.73205081 2. ]]
print("Output of elementwise square root x using 'numpy.sqrt':", np.sqrt(x))
Output of adding x and y with a '+' operator: [[ 6. 8.]
[10. 12.]]
Output of adding x and y using 'numpy.add': [[ 6. 8.]
[10. 12.]]
Output of subtracting x and y with a '-' operator: [[-4. -4.]
[-4. -4.]]
Output of subtracting x and y using 'numpy.subtract': [[-4. -4.]
[-4. -4.]]
Output of elementwise product of x and y with a '*' operator: [[ 5. 12.]
[21. 32.]]
Output of element wise product of x and y using 'numpy.multiply': [[ 5. 12.]
[21. 32.]]
Output of elementwise division x and y with a '/' operator: [[0.2 0.33333333]
[0.42857143 0.5 ]]
Output of elementwise division x and y using 'numpy.divide': [[0.2 0.33333333]
[0.42857143 0.5 ]]
Output of elementwise square root x using 'numpy.sqrt': [[1. 1.41421356]
[1.73205081 2. ]]
将命令行参数传递给Python脚本
命令行参数使生活变得更加轻松, 许多次在生产就绪型代码中使用了命令行参数。它使代码输出的可再现性高效。例如, 假设你的代码中有许多正在读取的用户输入或文件, 那么通过使用命令行参数, 你无需进入代码即可进行所有这些更改, 以防你需要更改文件名或变量输入。
为此, 你将使用sys模块, 它是一个内置的Python模块。在sys中, 你具有argv, 它为你提供了传递给Python程序的命令行参数列表。 sys.argv将命令行参数作为项目列表读取, 其中列表中的第一个项目/元素可以作为sys.argv [1]访问, 而第一个参数(即sys.argv [0]始终是项目名称)程序被调用。
让我们举一个简单的例子, 看看它是如何工作的。
注意:命令行参数由Python读取为字符串, 因此请确保在处理数字时将其转换为整数。
与前面的示例非常相似, 将以下代码行在编辑器中另存为command_line.py并运行代码类型python3 command_line.py 10, 其中10是命令行参数。
import sys
num = sys.argv[1]
for i in range(int(num)):
print (i)
如果你不提供任何命令行参数怎么办?
你将获得一个超出范围的错误列表索引, 该索引还会增强sys.argv作为项目列表读取的索引。为避免此类错误, 你需要进行特殊处理, 而这超出了本教程的范围。
将Python脚本的输出写入文件
最后, 作为奖励, 让我们看看如何使用>键将Python脚本的输出保存在txt文件中。是的, 一个角色, 不是那么令人惊讶吗?
首先, 你将创建一个cli文件夹, 并将command_line.py代码移到cli文件夹中。然后, 你将检查该文件夹中的所有内容, 以确保不存在任何txt文件。
然后, 你将键入python3 command_line.py 10> output.txt, 最后检查cli文件夹的内容。现在, 你应该可以看到output.txt文件。
打开并查看output.txt文件的内容。
瞧!从上面的输出中, 你可以看到仅使用一个>符号将0-9位数字写入了文本文件。
恭喜你完成了本教程。
还有很多探索的地方, 例如在Python中基于GUI的执行, 以交互方式运行Python脚本, 从文件管理器或IDE中运行脚本。特定于命令行执行, 你可能需要在Windows命令提示符下进行实验, 以查看它与基于Unix的操作系统有何不同。
请随时在下面的评论部分中提出与本教程相关的任何问题。
如果你刚刚开始使用Python, 并且想了解更多信息, 请参加srcmini的Python数据科学入门课程。
评论前必须登录!
注册