Python 语法速览
Python 最初是作为一种教学语言开发的,由于它易用性和简洁的语法使它受到初学者和专家的欢迎。 Python 语法的整洁性导致一些人将其称为“可执行伪代码”,而事实上,根据我的经验,与阅读类似的用 C 语言编写的程序相比,阅读和理解 Python 脚本通常要容易很多。 让我们将开始讨论 Python 语法的主要特性吧!
语法是指编程语言的结构(即正确程序的构成)。 我们目前将暂时不关注语义-语法中单词和符号的含义-但稍后会再次讨论。
考虑以下代码示例:
# set the midpoint
midpoint = 5
# make two empty lists
lower = []; upper = []
# split the numbers into lower and upper
for i in range(10):
if (i < midpoint):
lower.append(i)
else:
upper.append(i)
print("lower:", lower)
print("upper:", upper)
lower: [0, 1, 2, 3, 4]
upper: [5, 6, 7, 8, 9]
这个脚本稍显愚蠢,但是它简洁的说明了 Python 语法的几个重要方面。 让我们开始浏览和讨论 Python 的一些语法特征吧!
用#标记注释
该脚本以注释开头:
# set the midpoint
Python 中的注释用井号(#)表示,# 后改行所有内容都将被解释器忽略。 这意味着您可以拥有独立的注释行(如刚刚显示的注释)以及语句后的内联注释。 例如:
x + = 2 # shorthand for x = x + 2
Python没有用于多行注释的语法,例如 C 和 C++ 中使用的/ * ... * /语法,然而多行字符串通常被用作多行注释的替代品(有关更多信息,请参见 字符串操作和正则表达式)。
语句终止行结束
脚本的下一行是:
midpoint = 5
这是一个赋值操作,我们在其中创建了一个名为 midpoint 的变量,并将其赋值为5。请注意,该语句的结尾仅由行尾标记。 这与 C 和 C++ 等语言相反,在 C 和 C++ 语言中,每个语句必须以分号(;)结尾。
在 Python 中,如果您希望语句连续到下一行,则可以使用“ \”标记来表明这一点:
x = 1 + 2 + 3 + 4 +\
5 + 6 + 7 + 8
也可以在括号内将表达式连续下一行,而无需使用“ \”标记:
x = (1 + 2 + 3 + 4 +
5 + 6 + 7 + 8)
大多数 Python 代码格式指南都建议延续行使用第二个版本(括号内)而不是第一个(使用“ \”标记)。
分号也可终止语句
有时将多个语句放在一行上会很有用。 脚本的下一部分是:
lower = []; upper = []
这显示了如何在 Python 中可选地使用熟悉的 C 语言中的分号(;)将两个语句放在一行上。 从功能上讲,这完全等同于如下写法:
lower = []
upper = []
大多数 Python 编码格式指南通常不建议使用分号将多个语句放在一行上,尽管偶尔会很方便。
缩进:空格很重要!
接下来,我们进入主要代码块:
for i in range(10):
if i < midpoint:
lower.append(i)
else:
upper.append(i)
这是一个包含循环和条件的复合控制流语句—我们稍后将介绍这些类型的语句。 现在先看 Python 中最有争议的语法特征:空白很有意义!
在编程语言中,代码块是一组应视为一个单元的系列语句。 例如,在C语言中,代码块用花括号表示:
for(int i=0; i<100; i++)
{
// curly braces indicate code block
total += i;
}
在Python中,代码块由缩进表示:
for i in range(100):
# indentation indicates code block
total += i
在Python中,缩进的代码块始终在前一行的结尾加上冒号(:)。
Python 吸引人的魅力之一是使用缩进使代码具有统一的,易读的代码格式。 但这也可能会使初学者感到困惑。 例如,以下两个片段将产生不同的结果:
>>> if x < 4: >>> if x < 4:
... y = x * 2 ... y = x * 2
... print(x) ... print(x)
在左侧的代码段中,print(x) 在缩进块中,并且仅当 x 小于4时才执行。在右侧的代码段中,print(x) 在代码块之外,并且无论 x为何值,都会执行!
Python 对空格有意义的使用通常令习惯于其他语言的程序员感到惊讶,但实际上,与不强制执行代码块缩进的语言相比,它可以使代码更加一致和易读。 如果您发现 Python 对空格的使用令人讨厌,我鼓励您尝试一下:和我一样,您会发现最终自己会喜欢上它的。
最后,您应该知道,用于缩进代码块的空白(空格或者Tab)量取决于用户,只要在整个脚本中保持一致即可。 按照惯例,大多数程序格式指南建议将代码块缩进四个空格,这就是我们将在本教程中遵循的惯例。 请注意,许多文本编辑器(例如Emacs和Vim)都包含 Python 模式,这些模式会自动执行四空格缩进。
行内的空格不重要
尽管有意义的空白是代码行前的空白(表示代码块),但是 Python 代码行内的空白并不重要。 例如,这三个表达式都是等效的:
x=1+2
x = 1 + 2
x = 1 + 2
滥用这种灵活性可能会导致代码可读性方面的问题–实际上,滥用空格通常是故意混淆代码(某些人为了游戏而做)的主要方法之一。 有效地使用空格可以使代码更具可读性,尤其是在运算符彼此相连的情况下–比较以下两个表达式用取负数求幂:
x=10**-2
和
x = 10 ** -2
可以看出第二个使用了空格的版本一目了然。 大多数 Python 编码格式指南建议在二元运算符周围使用一个空格,在一元运算符周围不使用空格。 我们将在“基本Python语义:运算符”中进一步讨论Python的运算符。
括号用于分组或调用
在前面的代码片段中,我们看到了括号的两种用法。 第一种典型的使用方式是用于对语句或数学运算进行分组:
2 * (3 + 4)
14
第二种用法用来指示正在调用一个函数。 在下一个代码段中,将使用 print() 函数显示变量的内容(请参见侧栏)。 函数调用由一对括号表示,函数的参数包含在其中:
print('first value:', 1)
first value: 1
print('second value:', 2)
second value: 2
某些函数可以完全不带参数地调用,在这种情况下,仍然必须使用左括号和右括号来表示函数调用。 一个示例是列表的排序方法:
L = [4,2,3,1]
L.sort()
print(L)
[1, 2, 3, 4]
sort 后的“()”表示执行该函数,即使不需要任何参数,括号也是必需的。
旁白:关于print()函数的注释
上面我们使用了print() 函数的示例。 print() 函数是在 Python 2.x 和Python 3.x 之间的更改项之一。 在 Python 2 中,print 表现为语句:也就是说,您可以编写
# Python 2 only!
>> print "first value:", 1
first value: 1
由于各种原因,语言维护者决定在 Python 3 中将 print() 改为函数,因此我们现在编写
# Python 3 only!
>>> print("first value:", 1)
first value: 1
这是 Python 2 和 Python 3 之间的许多向后不兼容的设计之一。在撰写本书时,通常会找到用两个版本的 Python 编写的示例,如果您查看Python 2代码, 通常第一眼看到的现象是 print 语句而不是 print() 函数。
结束并获得更多
以上是对 Python 语法基本特征的非常简短的探索。 目的是为您在后面的章节中阅读代码提供一个良好的参考结构。 我们多次提到 Python “格式指南”,它可以帮助团队以一致的格式编写代码。 Python中使用最广泛的格式指南称为PEP8,可以在https://www.python.org/dev/peps/pep-0008/上找到。 当您开始编写大量 Python 代码时,通读这将很有用! 格式建议包含许多 Python 专家的智慧,大多数建议不仅仅是简单呆板的编码格式:它们是基于经验的建议,可以帮助避免代码中的细微错误和缺陷。
本文来自翻译如下文章,仅用于学习
原文:https://jakevdp.github.io/WhirlwindTourOfPython/01-how-to-run-python-code.html