Python 有两种主要的方式来完成你的要求:语句和表达式(函数、算术表达式等)。相信大部分读者已经了解二者的不同,但是不管怎样,我们还是再来复习一下。语句使用关键字来组成命令,类似告诉解释器一个命令。你告诉 Python 做什么,它就为你做什么,语句可以有输出,也可以没有输出。下面我们先用 print 语句完成程序员们老生常谈第一个编程实例,Hello World。
>>> print 'Hello World!' Hello World!
而表达式没有关键字。它们可以是使用数学操作符构成的算术表达式,也可以是使用括号调用的函数。它们可以接受用户输入,也可以不接受用户输入,有些会有输出,有些则没有。(在 Python 中未指定返回值的函数会自动返回 None,等价于 NULL)下面举一个例子,函数 abs()接受一个数值输入,然后输出这个数值的绝对值。
>>> abs(4)4>>> abs(-4)4
本章中我们将分别介绍语句和表达式。我们先来研究 print 语句。
1.1 程序输出,print 语句及“Hello World!”
有些语言,比如 C,通过函数输出数据到屏幕,例如函数 printf()。然而在 Python 和大多数解释执行的脚本语言中,则使用语句进行输出。很多的 shell 脚本语言使用 echo 命令来输出程序结果。
核心笔记:在交互式解释器中显示变量的值
通常当你想看变量内容时,你会在代码中使用print语句输出。不过在交互式解释器中,你可以用 print 语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值。
在下面的例子中,我们把一个字符串赋值给变量 myString,先用print 来显示变量的内容,之后用变量名称来显示。
创建电商平台,你需要API数据数据调用
>>> myString = 'Hello World!'>>> print myStringHello World!>>> myString'Hello World!'
注意,在仅用变量名时,输出的字符串是用单引号括起来了的。这是为了让非字符串对象也能以字符串的方式显示在屏幕上——即它显示的是该对象的字符串表示,而不仅仅是字符串本身。引号表示你刚刚输入的变量的值是一个字符串。等你对 Python 有了较深入的了解之后,你就会知道 print 语句调用 str()函数显示对象,而交互式解释器则调用 repr()函数来显示对象。
下划线( _ )在解释器中有特别的含义,表示最后一个表达式的值。所以上面的代码执行之后,下划线变量会包含字符串。
>>> _Hello World!
Python 的 print 语句,与字符串格式操作符(%)结合使用,可实现字符串替换功能,这一点和 C 语言中的 printf()函数非常相似。
>>> print "%s is number %d!" % ("Python",1)Python is number 1!
%s 表示由一个字符串来替换,而%d 表示由一个整型来替换,另外一个很常用的就是%f,它表示由一个浮点型来替换。我们会在本章中看到更多类似的例子。Python 非常灵活,所以即使你将数字传递给 %s,也不会像其他要求严格的语言一样引发严重后果。参阅 6.4.1 节以了解更多关于字符串格式操作符的信息。Print 语句也支持将输出重定向到文件。这个特性是从 Python2.0 开始新增的。符号 >> 用来重定向输出,下面这个例子将输出重定向到标准错误输出。
import sysprint >> sys.stderr, 'Fatal error: invalid input!'
下面是一个将输出重定向到日志文件的例子。
logfile = open('/tmp/mylog.txt', 'a')print >> logfile, 'Fatal error: invalid input!'logfile.close()
1.2 程序输入和 raw_input()内建函数
从用户那里得到数据输入的最容易的方法是使用 raw_input()内建函数。它读取标准输入,并将读取到的数据赋值给指定的变量。你可以使用 int() 内建函数将用户输入的字符串转换为整型。
>>> user = raw_input('Enter login name: ')Enter login name: root>>> print 'Your login is:', userYour login is: root
上面这个例子只能用于文本输入。下面是输入一个数值字符串(并将字符串转换为整型)的例子:
>>> num = raw_input('Now enter a number: ') Now enter a number: 1024>>> print 'Doubling your number: %d' % (int(num) * 2) Doubling your number: 2048
内建函数 int()将数值字符串转换成整型值,这样才可以对它进行数学运算。参阅第 6.5.3 节以了解更多有关内建函数 raw_input()的知识。
核心笔记:从交互式解释器中获得帮助
在学习 Python 的过程中,如果需要得到一个生疏函数的帮助,只需要对它调用内建函数 help()。通过用函数名作为 help()的参数就能得到相应的帮助信息。
>>> help(raw_input)Help on built-in function raw_input in module __builtin__:raw_input(...) raw_input([prompt]) -> string
从标准输入读取一个字符串并自动删除串尾的换行字符。如果用户键入了 EOF 字符(Unix: Ctrl+D, Windows: Ctrl+Z+回车),则引发 EOFError,在 Unix 平台,只要可用,就使用 GNU readline 库。如果提供提示字符串参数,则显示该字符串并自动删去字符串末尾的换行字符。(本段是 help(raw_input)的输出,译文是对其加以解释,方便读者理解——译者注)
核心风格: 一直在函数外做用户交互操作
新手在需要显示信息或得到用户输入时,很容易想到使用 print 语句和 raw_input()内建函数。不过我们在此建议函数应该保持其清晰性,也就是它只应该接受参数,返回结果。从用户那里得到需要的数据,然后调用函数处理,从函数得到返回值,然后显示结果给用户。这样你就能够在其他地方也可以使用你的函数而不必担心自定义输出的问题。这个规则的一个例外是,如果函数的基本功能就是为了得到用户输出,或者就是为了输出信息,这时在函数内使用 print 语句或 raw_input() 也未尝不可。更重要的是,将函数分为两大类,一类只做事,不需要返回值(比如与用户交互或设置变量的值),另一类则执行一些运算,最后返回结果。如果输出就是函数的目的,那么在函数体内使用 print 语句也是可以接受的选择。
1.3 注释
和大部分脚本及 Unix-shell 语言一样,Python 也使用 # 符号标示注释,从 # 开始,直到一行结束的内容都是注释。
>>> # one comment... print 'Hello World!' # another commentHello World!
有一种叫做文档字符串的特别注释。你可以在模块、类或者函数的起始添加一个字符串,起到在线文档的功能,这是 Java 程序员非常熟悉的一个特性。
def foo(): "This is a doc string." return True
与普通注释不同,文档字符串可以在运行时访问,也可以用来自动生成文档。
1.4 操作符
和其他绝大多数的语言一样,Python 中的标准算术操作符以你熟悉的方式工作。
+ - * / // % **
加、减、乘、除和取余都是标准操作符。Python 有两种除法操作符,单斜杠用作传统除法,双斜杠用作浮点除法(对结果进行四舍五入)。传统除法是指如果两个操作数都是整型的话,它将执行的是地板除(取比商小的最大整数)(关于“地板除”请参考第 5 章——译者注),而浮点除法是真正的除法,不管操作数是什么类型,浮点除法总是执行真正的除法。你可以在第 5 章学到更多有关传统除法、真正的除法及浮点除法的知识。
还有一个乘方操作符,双星号(**)。尽管我们一直强调这些操作符的算术本质,但是请注意对于其他数据类型,有些操作符是被重载了,比如字符串和列表。让我们看一个例子。
>>> print -2 * 4 + 3 ** 21
就像你看到的,操作符的优先级和你想象的一样:+和−优先级最低,*、/、//、%优先级较高,单目操作符+和−优先级更高,乘方的优先级最高。(3**2)首先求值,然后是(−2*4),然后是对两个结果进行求和。
Python 当然也有标准比较操作符,比较运算根据表达式的值的真假返回布尔值。
< <= > >= == != <>
试一试,看看这些比较运算会得到什么结果。
>>> 2 < 4True>>> 2 == 4False>>> 2 > 4False>>> 6.2 <= 6False>>> 6.2 <= 6.2True>>> 6.2 <= 6.20001True
Python 目前支持两种“不等于”比较操作符,!=和<>,分别是 C 风格和 ABC/Pascal 风格。目前后者慢慢地被淘汰了,所以我们推荐使用前者。
Python 也提供了逻辑操作符。
and or not
使用逻辑操作符可以将任意表达式连接在一起,并得到一个布尔值。
>>> 2 < 4 and 2 == 4False>>> 2 > 4 or 2 < 4True>>> not 6.2 <= 6True>>> 3 < 4 < 5True
最后一个例子在其他语言中通常是不合法的,不过 Python 支持这样的表达式,既简洁又优美。它实际上是下面表达式的缩写:
>>> 3 < 4 and 4 < 5
核心风格:合理使用括号增强代码的可读性
在很多场合使用括号都是一个好主意,而没用括号的话,会使程序得到错误结果,或使代码可读性降低,引起阅读者困惑。括号在 Python 语言中不是必须存在的,不过为了可读性,使用括号总是值得的。