找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3596|回复: 3

[已回复] 新人关于改变函数参数的问题。

5

主题

21

帖子

21

积分

贫民

积分
21
Pythonquene 发表于 2016-7-5 12:23:01 | 显示全部楼层 |阅读模式
这是python基础教程上p97的例子,不是很理解。它说 函数只能修改参数对象本身。
例如,将变量的数值增加1的函数可以这样写:
>>>def inc(X):return x+1
...
>>>foo=10
>>>foo=inc(foo)
>>>foo
11

如果真的想改变参数,那么可以使用一点小技巧,即将值放置在列表中:
>>>def inc(x):x[0]=x[0]+1
...
>>>foo=[10]
>>>inc(foo)
>>>foo
[11]
这样就会只返回新值。

问题是:为什么第二种方法改变参数而第一种没有呢?明明两种方法返回的都是新值。
新人求解。
回复

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-7-11 16:01:22 | 显示全部楼层
在python中,函数传参分两种可变参数和不可变参数 ,想整数,字符串等都是不可变的,无论在函数内怎样修改,对外面是没改变的  ,你的第一个例子明显有错误,问题出在这句foo = inc(foo)
inc(foo)返回的结果是11,二你把这个值附给foo,那foo也就变成11了
回复 支持 反对

使用道具 举报

5

主题

21

帖子

21

积分

贫民

积分
21
Pythonquene  楼主| 发表于 2016-7-17 11:35:46 | 显示全部楼层
mongo 发表于 2016-7-11 16:01
在python中,函数传参分两种可变参数和不可变参数 ,想整数,字符串等都是不可变的,无论在函数内怎样修改,对外 ...

谢谢
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-7-17 17:52:38 | 显示全部楼层
mongo 发表于 2016-7-11 16:01
在python中,函数传参分两种可变参数和不可变参数 ,想整数,字符串等都是不可变的,无论在函数内怎样修改,对外 ...

正解
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表