def func(arg): arg[0] = 'hello' var = ['ok'] func(var) print(var)和def func(arg): arg = ['hello'] var = ['ok'] func(var) print(var)的区别
时间: 2024-01-20 07:02:34 浏览: 51
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
这两个函数的区别在于它们对参数 `arg` 的处理方式不同。第一个函数通过修改 `arg` 列表的第一个元素为 `'hello'`,来改变 `arg` 的值;而第二个函数则通过将参数 `arg` 重新赋值为一个含有一个元素 `'hello'` 的列表,来改变 `arg` 的值。
下面是这两个函数的详细解释:
第一个函数:
```
def func(arg):
arg[0] = 'hello' # 将列表 arg 的第一个元素修改为 'hello'
var = ['ok'] # 定义一个局部变量 var,值为一个含有一个元素 'ok' 的列表
lst = ['hi']
func(lst)
print(lst) # 输出 lst 的值,结果为 ['hello']
```
在调用这个函数时,我们向它传递了一个列表 `lst`,它的值为 `['hi']`。在函数内部,我们通过修改 `arg` 列表的第一个元素为 `'hello'`,来改变了 `arg` 的值。然后我们定义了一个局部变量 `var`,其值为一个含有一个元素 `'ok'` 的列表。函数执行完毕后,我们在函数外部输出了 `lst` 的值,可以看到它的值已经被修改为 `['hello']` 了。
第二个函数:
```
def func(arg):
arg = ['hello'] # 将参数 arg 重新赋值为一个含有一个元素 'hello' 的列表
var = ['ok'] # 定义一个局部变量 var,值为一个含有一个元素 'ok' 的列表
lst = ['hi']
func(lst)
print(lst) # 输出 lst 的值,结果为 ['hi']
```
在调用这个函数时,我们向它传递了一个列表 `lst`,它的值为 `['hi']`。在函数内部,我们首先将参数 `arg` 重新赋值为一个含有一个元素 `'hello'` 的列表,然后定义了一个局部变量 `var`,其值为一个含有一个元素 `'ok'` 的列表。函数执行完毕后,我们在函数外部输出了 `lst` 的值,可以看到它的值仍然为 `['hi']`,没有被修改。
因此,这两个函数的区别在于它们对参数 `arg` 的处理方式不同,第一个函数通过修改 `arg` 列表的值来改变它的值,而第二个函数则通过重新赋值来改变它的值。
阅读全文