本篇内容较长,主要介绍值,值的类型、各类型值间操作符及值间的基础运算和复杂运算。此笔记只摘录主要文字说明内容,书籍原文中有对应的程序语句示例。
从结构上来看,一切的计算机程序,都由且只由两个最基本的成分构成:
运算(Evaluation)
流程控制(Control Flow)
值
在程序中,被运算的可分为常量(Literals)和变量(Variables)。
值是程序的基础成分(Building blocks),它就好像盖房子用的砖块一样,无论什么样的房子,到最后都主要是由砖块构成。
常量,当然有个值 —— 就是它们字面所表达的值。
变量必须先赋值才能使用,也就是说,要先把一个值保存到变量中,它才能在其后被运算。
值的类型
在编程语言中,总是包含最基本的三种数据类型:
布尔值(Boolean Value)
数字(Numbers):整数(Int)、浮点数(Float)、复数(Complex Numbers)
字符串(Strings)
既然有不同类型的数据,它们就分别对应着不同类型的值。
运算的一个默认法则就是,通常情况下应该是相同类型的值才能相互运算。
在不得不对不同类型的值进行运算之前,总是要事先做 Type Casting(类型转换)。比如,
将字符串转换为数字用 int()、float();
将数字转换成字符串用 str();
另外,即便是在数字之间进行计算的时候,有时也需要将整数转换成浮点数字,或者反之:
将整数转换成浮点数字用 float();
将浮点数字转换成整数用 int();
有个函数,type(),可以用来查看某个值属于什么类型:
针对不同类型的数据,有各自专用的操作符。
操作符
数值操作符
针对数字进行计算的操作符有加减乘除商余幂:+、-、*、/、//、%、**。
其中 + 和 - 可以对单个值进行操作,-3;其它的操作符需要有两个值才能操作。
从优先级来看,这些操作符中:
对两个值进行操作的 +、- 的优先级最低;
稍高的是 *、/、//、%;
更高的是对单个值进行操作的 +、-;
优先级最高的是 **。
布尔值操作符
针对布尔值,操作符有与、或、非:and、or、not。
它们之中,优先级最低的是或 or,然后是与 and, 优先级最高的是非 not:
逻辑操作符
数值之间还可以使用逻辑操作符,1 > 2 返回布尔值 False。逻辑操作符有:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、!=(不等于)、==(等于)。
逻辑操作符的优先级,高于布尔值的操作符,低于数值计算的操作符。 即:数值计算的操作符优先级最高,其次是逻辑操作符,布尔值的操作符优先级最低。
字符串操作符
针对字符串,有三种操作:
拼接:+ 和 ' '(后者是空格)
拷贝:*
逻辑运算:in、not in;以及,<、<=、>、>=、!=、==
字符之间,字符串之间,除了 == 和 != 之外,也都可以被逻辑操作符 <、<=、>、>= 运算:
这是因为字符对应着 Unicode 码,字符在被比较的时候,被比较的是对应的 Unicode 码。当字符串被比较的时候,将从两个字符串各自的第一个字符开始逐个比较,
列表操作符
列表的标示,用方括号 [];举例来说,[1, 2, 3, 4, 5] 和 ['ann', 'bob', 'cindy', 'dude', 'eric'],或者 ['a', 2, 'b', 32, 22, 12] 都是一个列表。
因为列表和字符串一样,都是有序容器(容器还有另外一种是无序容器),所以,它们可用的操作符其实相同:
拼接:+ 和 ' '(后者是空格)
拷贝:*
逻辑运算:in、not in;以及,<、<=、>、>=、!=、==
复杂运算
对于数字进行加、减、乘、除、商、余、幂的操作,对于字符串进行拼接、拷贝、属于的操作,对布尔值进行或、与、非的操作,这些都是相对简单的运算。
更为复杂一点的,我们要通过调用函数来完成 —— 因为在函数内部,我们可以用比 “单个表达式” 更为复杂的程序针对传递进来的参数进行运算。
笑来老师将庞杂的知识点按照实际学习进展优化配置,便于读者清晰理解,但更有效地掌握须要动手配置运行程序的相关插件。