函数的return 语句只能返回一个值,可以是任何类型。

因此,我们可以“返回一个 tuple类型,来间接达到返回多个值 ”。

例: x 除以 y 的余数与商的函数

def F1 ( x, y ):

a = x % y

     b = (x-a) / y

     return ( a,b )     # 也可以写作 return a, b

(c, d )= F1( 9, 4) # 也可以写作 c , d = F1 ( 9, 4 )

print c ,d

结果显示: 1, 2

Python 与大多数其它语言一样有局部变量和全局变量之分, 但是它没有明显的变量声明。变量通过首次赋值产生, 当超出作用范围时自动消亡。

例 3.17. 定义 myParams 变量

if
name == “main
:

myParams = {"server"
:“mpilgrim”
 , /
 “database”
 :“master”
 , /
 “uid”
 :“sa”
 , /
 “pwd”
 :“secret”
 /

首先注意缩进。 if 语句是代码块, 需要像函数一样缩进。

其次, 变量的赋值是一条被分成了多行的命令, 用反斜线 (“/ ”) 作为续行符。

注意
当一条命令用续行符 (“/ ”) 分割成多行时, 后续的行可以以任何方式缩近, 此时Python 通常的严格的缩近规则无需遵守。如果您的 Python IDE 自由对后续行进行了缩近, 您应该把它当成是缺省处理, 除非您有特别的原因不这么做。
严格地讲, 在小括号, 方括号或大括号中的表达式 (如 定义一个 dictionary ) 可以用或者不用续行符 (“/ ”) 分割成多行。甚至在不是必需的时候, 我也喜欢使用续行符, 因为我认为这样会让代码读起来更容易, 但那只是风格的问题。

第三, 您从未声明过变量 myParams , 您只是给它赋了一个值。这点就象是VBScript 没有设置 option explicit 选项一样。幸运的是, 与 VBScript 不同的是,Python 不允许您引用一个未被赋值的变量, 试图这样做会引发一个异常。

3.4.2. 一次赋多值
Python 中比较 “酷” 的一种编程简写是使用序列来一次给多个变量赋值。

例 3.19. 一次赋多值

v
 (‘a’, ‘b’, ‘e’)(x,y,z)=v
 x
 ‘a’y
 ‘b’z
 ‘e’

v 是一个三元素的 tuple, 并且 (x, y, z) 是一个三变量的 tuple。将一个 tuple 赋值给另一个 tuple, 会按顺序将 v 的每个值赋值给每个变量。
这种用法有许多种用途。我经常想要将一定范围的值赋给多个变量。在 C 语言中, 可以使用 enum 类型, 手工列出每个常量和其所对应的值, 当值是连续的时候这一过程让人感到特别繁琐。而在 Python 中, 您可以使用内置的 range 函数和多变量赋值的方法来快速进行赋值。

例 3.20. 连续值 赋值

range(7)
 range(0, 7)x=range(7)
 x
 range(0, 7)for i in x:
 print(i)0
 1
 2
 3
 4
 5
 6[i for i in range(7)]
 [0, 1, 2, 3, 4, 5, 6](MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
 2
 2MONDAY
 0TUESDAY,
 (1,)WEDNESDAY,
 (2,)THURSDAY,
 (3,)FRIDAY,
 (4,)