免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 40501 | 回复: 27
打印 上一主题 下一主题

python的函数怎么使用传递引用的方式? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-04 14:08 |只看该作者 |倒序浏览
例如:

def fa(a):
    a= 2

b = 20
fa(b)

这样b的值仍然是20,如果我想让b的值经过fa(b)后变为2 , fa()函数应该怎么写?

论坛徽章:
0
2 [报告]
发表于 2006-07-04 15:12 |只看该作者
python不支持直接的引用参数传递,因为python可以一次返回多个值,所以这个问题在python提得不多。可以传入可变参数,然后在函数中进行修改,如list, dict, object等。

论坛徽章:
0
3 [报告]
发表于 2006-07-04 15:24 |只看该作者
>>> def a(x):
        b=2
        return b

就可以了,下面是测试结果
>>> f=20
>>> a(f)
2
>>> print a(f)
2
>>>

论坛徽章:
0
4 [报告]
发表于 2006-07-04 15:37 |只看该作者
上面的函数并没有改变传入参数f的值.

论坛徽章:
0
5 [报告]
发表于 2006-07-04 17:59 |只看该作者
>>> def f(x):
        return x
3751 该用户已被删除
6 [报告]
发表于 2006-07-05 12:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
7 [报告]
发表于 2006-07-05 12:24 |只看该作者
没有引用还是觉得有点别扭。

论坛徽章:
0
8 [报告]
发表于 2006-07-05 14:51 |只看该作者
因为你的思维还不是pythonic的。

论坛徽章:
1
水瓶座
日期:2014-03-20 18:21:14
9 [报告]
发表于 2006-07-05 15:34 |只看该作者
“引用”本身就违反严格的结构化程序设计思路,更违反OO
“引用”本质上就是C的传指针,改地址里的内容,就这么回事情

论坛徽章:
0
10 [报告]
发表于 2006-07-05 15:51 |只看该作者

re

def f():
  global a
  a = 2

a = 3
f()


或许他要的是global....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP