python 要说的一些事

规范

通过 import this 以打印 python 之禅

优美胜于丑陋
明了胜于晦涩
简洁胜于复杂
复杂胜于凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要
即便假借特例的实用性之名,也不可违背这些规则
 
不要包容所有错误,除非你确定需要这样做
 
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案
虽然这并不容易,因为你不是 Python 之父
 
做也许好过不做,但不假思索就动手还不如不做
 
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然
 
命名空间是一种绝妙的理念,我们应当多加利用

缩进

python 是一个非常优美简洁的语言,与其他使用花括号{}来形成代码块的方式不同,python 使用缩进的方式来表示逻辑结构,处于同一逻辑地位的代码应采用相同的缩进

空格 OR 制表符 ?

建议采用四个空格代替一个 Tab,在示例中使用的 pycharm 具有自动将制表符转化为空格的特性,读者可自行斟酌

关于换行

对于那些想写出晦涩难懂的“乱码”的人来说,很遗憾,在 python 中,换行是必要的 ,一条语句只能写一行,写完后必须换行,这和其他语言有显著的区别,主要原因是 python 只以行末的换行符作为一条完整语句的结束,而不是分号;

可能想知道的一些事

弱类型语言?

如果你有诸如 C ++,Java 之类的语言基础的话,肯定对 int num = 20,char ch = 'A' 这种写法不陌生,但在 python 中,只有 num = 20 , ch = 'A' 这种写法,发现问题所在了吗?

没错,似乎 ch = 20,num = 'A' 也不会有什么问题

事实的确如此,无论是 ch 还是 num 都不是为它们分配了实际的内存空间,而是让它们指向了存有指定值的其他内存地址而已,换句话说,这其实是 引用 类型,因此无论如何赋值(尽管对于引用类型来说 赋值 的说法 并不准确 )都不会引起类型不匹配的异常。

但是,这并不意味着它是一个弱类型的语言 ,这是很多人犯的误区,相反,它是一个强类型语言,因为我们不能对它进行随意的类型转换。事实上,它不会进行任何的隐式类型转换,这和前面的模糊声明并不冲突,真正的弱类型在运行期(runtime)的时候仍然可以被改变类型,但显然 python 并非如此,它的类型是在运行期的时候确定的,一旦确定下来就不能随意更改。所以正确的说法是,它是一门动态的语言,但它也是强类型约束的语言,要认识到这两个并不构成矛盾。

Tips : 所以合理的注释非常重要

简单的函数

在上一小结我们已经使用了print()函数,这个名字的含义非常明显,就是“打印”

除此之外, 我们再学习一个重要的函数id(),它用来获取 内存地址,你可以把变量传进去来查看地址

is关键字可以比较 本质是否相同a is b即表示检查 a 和 b 是不是同一块内存空间

应用一下

num1 = 10
num2 = 10

print(id(num1))
print(id(num1))

print(num1 is num2)

num1 = num1 + 1
print(num1 is num2)

观察运行结果,并思考为什么会如此。