python中的语句

这是我从《Learning the python》这本书中总结的

前言

python中概念的层次结构

  • 程序是由模块组成
  • 模块包含语句
  • 语句包含表达式
  • 表达式创造和处理对象

在开始之前,我要先说明一下,什么是语句,什么是表达式:表达式是表示值的式子,语句是操作值的式子。搞清楚这个概念之后,我们就正式进入今天的主题:python中语句的特点

python的常见语句

下面列举了一些python中的常用语句

语句作用
赋值创造名字
调用函数使用函数
打印输出打印对象
if/elif/else选择行为
for/elseIteration
while/elseGeneral loops
passEmpty placeholder
breakLoop exit
continueLoop continue
defFunctions and methods
returnFunctions results
yieldGenerator functions
globalNamespaces
nonlocalNamespaces (3.X)
importModule access
fromAttribute access
classBuilding objects
try/except/ finallyCatching exceptions
raiseTriggering exceptions
assertDebugging checks
with/asContext managers (3.X, 2.6+)
delDeleting 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的感情又深了一层。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值