规范
通过 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)
观察运行结果,并思考为什么会如此。