>>> from env_helper import info; info()
页面更新时间: 2021-09-02 10:04:32
运行环境:
    Linux发行版本: Debian GNU/Linux 11 (bullseye)
    操作系统内核: Linux-5.10.0-8-amd64-x86_64-with-glibc2.31
    Python版本: 3.9.2

1.3. 理解Python与C语言的不同之处

我们都知道,Python底层是用C语言实现的,但切忌用C语言的思维和风格来编写 Python代码。 对于那些在学习Python之前有其他编程语言(如Java、C#等)经验的程序员 来说, 尤其重要的是:不要使用之前的编程思想。 Python与它们有很多不同,以下从语法方面来进行简单分析。

1.3.1. “缩进”与 {}

与C、C++、Java等语言使用花括号{}来分隔代码段不同,Python中使用严格的代码缩进方式分隔代码块, 空格或者Tab键不再是你心血来潮的时候可以随便敲敲解闷的了, 对于 Python解释器而言,它们直接关乎代码的语法和逻辑,一不小心就会出现 unexpected indent 错误。 Python的这一特点也引起不少争议,强制代码缩进就像一把双刃剑,有利有弊, 对于从其他编程语言转过来学习Python的人来说,也许需要一段时间去适应。 但不可否认,严格的缩进确实能让代码更加规范、整齐,可读性和可维护性都会更髙。 避免缩进带来的闲扰 的方法之一就是养成良好的习惯,统一缩进风格,不要混用Tab键和空格。

1.3.2. '"

C语言中中引号 ' 与双引号 " 有严格的区别,单引号代表一个字符, 它实际对应于编译器所采用的字符集中的一个整数值e例如在ASCII码中,'a'与97相对应。而双引号则表示字符串,默认以'\0'结尾。 但在Python中,单引号与双引号没有明显区別,仅仅在输人字符串内容不同时,在使用上存在微小差异。

>>> stringl = "He said \"Hello\""#字符串中本身的双引号策要转义
>>> stringl
'He said "Hello"'
>>> string2 = 'He said,"Hello"' #字符亊本身的双引号不需要转义
>>> string2
'He said,"Hello"'

1.3.3. 三元操作符 ?

三元操作符是 if...else 的简写方法,语法形式为 C?X:Y , 它表示当条件 CTrue 的时候取值 X , CFalse 的时候取值为 Y 。 其简洁的表达形式一直很受欢迎。 但在Python 2.5之 前并不支持三元操作符。为此,人们想出了不少替代方式,但在特殊情形下存在一些问题。 因此很多人对Python语言本身加人该特征也提出了不少建议,最终PEP308被接受,根据提 议采用if...else…形式实现条件表达式。 C ? X: Y 在Python中等价的形式为 X if C else Y ,即:

>>> x=0
>>> Y=-2
>>> x if x<Y else Y
-2

1.3.4. switch…case

Python中没有像C语言那样的switch…case分支语句,不过这不是什么难事,Python中 有很多替代的解决方法。假设,用C语言实现的switch…case语句如下:

switch (n){ case 0:

printf ("You typed zero n"); break;

case 1:

printf("You are in top.n"); break;

case 2:

printf("n is an even numbern");

default:

printf("Only single-digit numbers are allowedn"); break;

}

与以上C语言中switch… case对应的Python实现如下:

>>> n=8
>>> if n == 0:
>>>     print( "You typed zero.\n")
>>> elif n== 1:
>>>     print ("You are in top.\n" )
>>> elif n==2:
>>>     print ("n is an even number\n")
>>> else:
>>>     print( "only single-digit numbers are allowed\n")
only single-digit numbers are allowed

或者使用以下跳转表来实现:

>>> def f(x):
>>>     return {
>>>         0: "You typed zero.\n",
>>>         1: "You are in top.\n",
>>>         2: "n is an even number\n"
>>>     }.get(n,"Only single-digit numbers are allowed\n")

以上只是简单列举了几个Python和其他语言的不同点,事实上,其差异性远远不止这些。 但总归一句话:不要被其他语言的思维和习惯困扰,掌握Python的哲学和思维方式才是硬道理。 正如前面所说,要舍得抛弃具有自我风格的代码,尽量遵循 Pythonic 代码的编码规范和风格。