makebbb(a):
a = "bbb"
此功能显然无法将其输入转换为“bbb”,如以下代码段所示
x = "notbbb"
makebbb(x)
print(x)
# Outputs "notbbb"
现在我明白了这个失败的原因,我想知道的是,无论如何要做出这样的功能? (我不仅仅是在谈论分配字符串,而是通常使用=
进行分配)
答案 0 :(得分:0)
将要更改的变量定义为global
,
>>> def makebbb():
global x
x = "bbb"
>>> print x
notbbb
>>> makebbb()
>>> print x
bbb
>>>
答案 1 :(得分:0)
为什么不简单地在函数中返回一个值并更新' a'?
def makebbb(a):
return "bbb"
x = "notbbb"
x = makebbb(x)
print(x)
答案 2 :(得分:0)
def makebbb(a):
return "bbb"
x = "notbbb"
x = makebbb(x) #call function in the assignment to modify it
print(x)
Output:
bbb
答案 3 :(得分:0)
如果x
存在于函数范围之外,则可以直接修改变量(将值重新绑定到内存中的同一变量)。否则,功能方法是返回一个新字符串。
x = "notbbb"
makebbb() # Modify variable outside function scope.
print(x)
或
x = "notbbb"
print(makebbb(x)) # return new value.
此示例的特定捕获是您尝试通过引用传递不可变值。相反的是,在参数传递时创建副本。您可以使用可变类型(例如列表)来实现所需的效果。
答案 4 :(得分:0)
您可以修改某些参数,这些参数是通过引用而不是按值传递的参数。
可以更改可变对象的参数,如下所示:
def change_list(l):
l.append(4)
k = [1, 2, 3]
change_list(k)
print(k) # Prints [1,2,3,4]
然而,这不起作用:
def dont_change_list(l):
l = [5]