找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 8106|回复: 11

[求助] 萌新求助关于函数返回值的问题

2

主题

7

帖子

7

积分

贫民

积分
7
bend3r 发表于 2017-3-24 13:31:17 | 显示全部楼层 |阅读模式
本帖最后由 bend3r 于 2017-3-24 16:52 编辑

先附上代码
  1. def change(q):
  2.     q = 100*q
  3.     print('q in change( ) has been changed',q)
  4.     return q

  5. def main():
  6.     q = 200
  7.     change(q)
  8.     print('function main() output q:',q)
复制代码
经过自己的一些常试,不理解的点在于,main()调用change()后,q为什么不会被改变,如果需要change()修改完q后返回更新main()中的值有多少种写法?
回复

使用道具 举报

0

主题

3

帖子

3

积分

贫民

积分
3
LetsGoCav 发表于 2017-3-26 21:32:45 | 显示全部楼层
名称空间的问题。两个q是不同的参数,你把change()中的q改成其他参数自己看看返回值
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-3-26 21:47:20 | 显示全部楼层
newq = change(q)
print(newq)
python3.4.4, win10
回复 支持 反对

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
#lucifer 发表于 2017-3-29 01:29:20 来自手机 | 显示全部楼层
python对于不可变对象采用类似于值传递的方式,而非引用,所以不会将原来的值改变。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

7

积分

贫民

积分
7
bend3r  楼主| 发表于 2017-3-30 22:41:32 | 显示全部楼层
谢谢楼上各位回答,我大概明白了,函数参数值是作为另外一个同名变量传入,但不会直接对原变量进行修改,除非用global全局变量,希望对后来可能遇到该疑惑的小伙伴们一些参考。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
#lucifer 发表于 2017-3-31 09:30:59 | 显示全部楼层
bend3r 发表于 2017-3-30 22:41
谢谢楼上各位回答,我大概明白了,函数参数值是作为另外一个同名变量传入,但不会直接对原变量进行修改,除 ...

童鞋,并不全是这样哦,python中除了不可变对象,还有可变对象,如列表(list),调用可变对象就不是值传递,而是引用方式:
  1. >>> def change(list):
  2. ...     list[0] = list[2]+list[1]
  3. ...     list[2] = 0
  4. ...
  5. >>> a = [3,4,5]
  6. >>> change(a)
  7. >>> a
  8. [9, 4, 0]
  9. >>>
复制代码
回复 支持 反对

使用道具 举报

2

主题

7

帖子

7

积分

贫民

积分
7
bend3r  楼主| 发表于 2017-3-31 17:12:15 | 显示全部楼层
#lucifer 发表于 2017-3-31 09:30
童鞋,并不全是这样哦,python中除了不可变对象,还有可变对象,如列表(list),调用可变对象就不是值传 ...

噢噢原来是这样,谢谢啦
回复 支持 反对

使用道具 举报

2

主题

7

帖子

7

积分

贫民

积分
7
bend3r  楼主| 发表于 2017-3-31 17:13:25 | 显示全部楼层
bend3r 发表于 2017-3-31 17:12
噢噢原来是这样,谢谢啦

对了,可以问一下你这个问题是什么情况吗http://bbs.pythontab.com/thread-3680-1-1.html感激不尽,感觉很多困惑。
回复 支持 反对

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
#lucifer 发表于 2017-3-31 19:31:34 | 显示全部楼层
bend3r 发表于 2017-3-31 17:13
对了,可以问一下你这个问题是什么情况吗http://bbs.pythontab.com/thread-3680-1-1.html感激不尽,感觉 ...

不好意思,网页方面的东西我不会
回复 支持 反对

使用道具 举报

2

主题

7

帖子

7

积分

贫民

积分
7
bend3r  楼主| 发表于 2017-4-1 19:04:14 | 显示全部楼层
#lucifer 发表于 2017-3-31 19:31
不好意思,网页方面的东西我不会

没关系,还是很谢谢你,阿里嘎多~
回复 支持 反对

使用道具 举报

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

本版积分规则

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