本节书摘来自异步社区《python参考手册(第4版•修订版)》一书中的第1章,第1.2节,作者david m. beazley,更多章节内容可以访问云栖社区“异步社区”公众号查看。
程序清单1-1中的程序通过执行一次简单的复利计算,说明变量和表达式的用法。
程序清单1-1 简单的复利计算
此程序的输出如下所示:
python是一种动态类型的语言,在程序执行过程中,变量名称会被绑定到不同的值,而且这些值可以属于不同的类型。赋值运算符的作用仅仅是在名称和值之间创建一种关联。尽管每个值都有一个相关类型,如integer或string,但变量名称是无类型的,在执行过程中可以引用任意类型的数据。这与c语言不同,例如,在c语言中,名称代表了用于保存值的固定类型、大小和内存位置。python的动态行为可以从程序清单1-1的principal变量看出来。最初给它分配的是一个integer值,但程序稍后给它重新赋了值,如下所示:
<code>principal = principal * (1 + rate)</code>
这条语句对表达式求值,并把名称principal重新与结果关联。principal的原始值是整数类型的1000,但现在的新值是浮点数(rate被定义为浮点数,因此上述表达式的值也是浮点数)。因此在程序中,principal看上去的“类型”就从integer动态变为了float。然而准确地说,不是principal的类型变了,而是principal名称引用的值的类型变了。
换行代表一条语句的结束。然而,也可以在同一行上使用分号来隔开多条语句,如下所示:
<code>principal = 1000; rate = 0.05; numyears = 5;</code>
while语句对随后的条件表达式进行检验。如果被检验的语句为真,while语句的主体就会执行。然后再次检验条件,再执行主体,直到条件为假。因为循环主体是由缩进表示的,每次循环时都会执行程序清单1-1中while之后的3条语句。python不会指定所需缩进的量,只要在一个代码块中保持一致即可。然而,每个缩进层次使用4个空格是最常见的情况,而且通常也建议这么做。
程序清单1-1中的程序有一个问题,即输出不是很美观。为了改进这一点,可以让各列右对齐,并将principal的精度限制为两位。实现这种格式有几种方法。最常用的方法是使用字符串格式化运算符%,如下所示:
现在程序的输出如下:
格式化字符串包含普通文本和特殊的格式化字符序列,如"%d"、"%s"和"%f"。这些序列分别用于指定特定类型数据的格式,如整数、字符串或浮点数。特殊字符序列还可以包含用于指定宽度和精度的修饰符。例如,"%3d"将一个整数格式化为在一个宽度为3的列中右对齐,而"%0.2f"将一个浮点数格式化为在小数点后只出现两位数字。格式化字符串的行为与c语言中的printf()函数几乎完全相同,第4章将对此进行详细说明。
更新潮的字符串格式化的方法是使用format()函数单独格式化每个部分。例如:
format()函数使用的格式说明符类似于传统字符串格式化运算符(%)使用的格式说明符。例如,"3d"将一个整数格式化为在一个宽度为3的列中右对齐,而"%0.2f"将一个浮点数格式化为两位精度。字符串也有一个format()方法,可用于一次性格式化很多值。例如:
在这个例子中,"{0:3d}"和"{1:0.2f}"中冒号前的数字代表传递给format()方法的相关参数,而冒号后的部分则是格式说明符。