这是我从《Learning the python》这本书中总结的
python中概念的层次结构
程序
是由模块组成模块
包含语句语句
包含表达式表达式
创造和处理对象
在开始之前,我要先说明一下,什么是语句,什么是表达式:表达式是表示值的式子,语句是操作值的式子
。搞清楚这个概念之后,我们就正式进入今天的主题:python中语句的特点
下面列举了一些python中的常用语句
语句 | 作用 |
---|---|
赋值 | 创造名字 |
调用函数 | 使用函数 |
打印输出 | 打印对象 |
if/elif/else | 选择行为 |
for/else | Iteration |
while/else | General loops |
pass | Empty placeholder |
break | Loop exit |
continue | Loop continue |
def | Functions and methods |
return | Functions results |
yield | Generator functions |
global | Namespaces |
nonlocal | Namespaces (3.X) |
import | Module access |
from | Attribute access |
class | Building objects |
try/except/ finally | Catching exceptions |
raise | Triggering exceptions |
assert | Debugging checks |
with/as | Context managers (3.X, 2.6+) |
del | Deleting references |
上面是我从《learning the python》这本书上抄写下来的python中的常用语句。关于每个语句的含义,前三句是描述性质的,所以我翻译了一下,后面是我们一眼就能看懂的,所以我就原模原样地抄写了下来。
从一个小例子看起
if (x > y) {
x = 1;
y = 2;
}
if x > y:
x = 1
y = 2
上面是分别用C和python写的两段代码,当我们比较这两种不同的代码的时候,我们的第一反应大概率上会是python语句更少
,python使用了更少的语法组件来实现相同的目的,这也是python的设计宗旨之一:code less,create more。我们看到这两段代码的不同点主要在这几个地方:python比C少了圆括号和花括号,以及封号,但是却多了冒号
。下面我将会介绍python之所以这样设计,是出于什么样的原因。
在C语言中,我们组织一个代码块是利用花括号来实现的,但是在python中却没有花括号了,想象一下,如果没有这个冒号,我们看到的将会是什么样的代码(我们很难快速确定代码块从哪里开始)
这个理由很简单:为了少打代码。我们这里主要讲一下python中去掉了这些语法组件后又添加了哪些额外的语法含义。
python通过等距缩进的方式来组织代码块,具体地说就是,如果我们想标识一段语句是属于同一个代码块,那么我们就要把它们缩进相同的距离(但是不同的代码块之间可以采用不同的缩进距离),如下所示
if x > y :
x = 1
y = 2
说实话,这是我第一次真实地、发自内心地感受到python的简洁优雅,它把代码缩进风格上升到语法层次,强迫所有的程序员必须要按照这种对齐的风格来编码。在其它的语言中,比如C,由于我们采用花括号来确定一个代码块,一个花括号中的代码没有缩进的要求,所以,不同的程序员可能会有不同的缩进风格,在一个公司里面,一份代码一般都是经过好多人的传承才到你手中,如果他们的编码风格不一样,那么你将会看到下面的代码:
while(x > 0){
----;
----;
----;
----;
----;
----;
----;
}
看到这段代码有什么感受,其实我这种演示效果没有那么令人印象深刻,当看到真实的以这种风格编写的代码的时候,你可能会疯掉。
除此之外,下面这种情况也可以体现出python的优雅
if (x)
if (y)
statements1;
else
statements2;
我们观察else,乍一看它是和if(x)配对的,但是实际上根据C中的就近配对原则,它是和if(y)配对的。
按照前面的python语法模型:
以上语法模型基本上已经覆盖了我们的日常使用,但是python还提供了一些特殊的机制以实现一些非常规操作
1、使用封号在一行编写多条语句
a = 1; b = 2; print(a + b)
2、使用圆括号、花括号、中括号实现一行语句多行编写(还有一种斜杠的老式方法,由于不好用,所以这里就不介绍了
)
mylist = [1111,
2222,
3333]
X = (A + B +
C + D)
3、简单语句直接跟在冒号后面
if x > y: print(x)
本次学习,让我进一步熟悉了python的概念层次模型,也就是一个Python程序的实体组成。通过比较python语句和C语句的区别,我进一步理解了python语言的设计哲学:Simple is better than complex.通过此次学习,我对python的感情又深了一层。