python参数传递问题

我在书上看说python都是按引用传递的。那么下面的例子中total的值己经被sum函数修改,那么不论是在函数内或者函数外都应该是30,为什么printtotal输出的是... 我在书上看说python都是按引用传递的。那么下面的例子中 total的值己经被sum函数修改,那么不论是在函数内或者函数外都应该是30,为什么 print total输出的是0

#!/usr/bin/python

total = 0; # This is global variable.
# 可写函数说明
def sum( arg1, arg2 ):
#返回2个参数的和."
total = arg1 + arg2; # total在这里是局部变量.
print "Inside the function local total : ", total
return total;

#调用sum函数
sum( 10, 20 );
print "Outside the function global total : ", total

以上实例输出结果:
Inside the function local total : 30
Outside the function global total : 0
展开
 我来答
leffe_李洋
推荐于2016-04-22 · 超过59用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:114万
展开全部
>>> total = 0
>>>
>>> def sum(arg1, arg2):
...     total = arg1+arg2
...     print 'inside the function total total : %s' % (total)
...     return total
...
>>> sum(10, 20)
inside the function total total : 30
30
>>> print 'outside the function global total : %s' % (total)
outside the function global total : 0
>>>
>>> total = sum(10, 20)
inside the function total total : 30
>>> print 'outside the function global total : %s' % (total)
outside the function global total : 30
>>>

如果你想定义全局标量,应该是这样

>>> global total
>>> ......

注意:

>>> global total
>>> total
>>> def sum(arg1, arg2):
...     total = ...

这三个total是完全不一样的三个变量


具体的区别请查看变量的作用范围,看完如果还不明白请继续提问。

匿名用户
2014-12-25
展开全部
全局变量定义错误,不是这样写的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式