最近在重新阅读《流畅的Python》,这篇文章总结一下书里面 7.4、8.4 两节的内容,主要介绍函数参数和变量的作用域两个部分。
1、函数参数
Python唯一支持的参数传递模式是共享传参(call by sharing)。共享传参指函数的各个形式参数获得实参中各个引用的副本。也就是说,函数内部的形参是实参的别名。
这种方案的结果是:函数可能会修改作为参数传入的可变对象。为了对参数的变化情况进行分析,首先定义一个函数,如下所示:
# 定义一个求和函数
def f(a, b):
a += b
return a
以下示例分别对比了函数参数是不同数据类型的情况。
1.1 数值作为函数参数
执行如下代码:
# 以常数作为参数
x = 1
y = 2
print('以数字为参数,函数的输出是:', f(x, y))
print('以数字为参数,输入的参数值是:', x, y)
输出结果如下所示,可以看到变量 x 的值没有发生变化。
以数字为参数,函数的输出是: 3
以数字为参数,输入的参数值是: 1 2
1.2 列表作为函数参数
执行如下代码:
# 以列表作为参数
a = [1,