Python 旋风之旅——Python 语法速览

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值