这是我从《Learning the python》这本书中总结的
![](https://i-blog.csdnimg.cn/blog_migrate/a6000b71afd584763ad7b19a5e00001e.jpeg)
文章目录
前言
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中的常用语句。关于每个语句的含义,前三句是描述性质的,所以我翻译了一下,后面是我们一眼就能看懂的,所以我就原模原样地抄写了下来。
python语句和C语句的三个不同点
从一个小例子看起
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之所以这样设计,是出于什么样的原因。
python为什么添加冒号
在C语言中,我们组织一个代码块是利用花括号来实现的,但是在python中却没有花括号了,想象一下,如果没有这个冒号,我们看到的将会是什么样的代码(我们很难快速确定代码块从哪里开始)
python为什么要去掉圆括号和花括号,以及封号
这个理由很简单:为了少打代码。我们这里主要讲一下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语法模型:
- 一行的结束标识着一个语句的结束
- 嵌套代码块通过等长缩进进行组织关联
以上语法模型基本上已经覆盖了我们的日常使用,但是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的感情又深了一层。