是否可以创建一个修改输入的函数

时间:2016-12-30 06:50:56

标签: python

makebbb(a):
    a = "bbb"

此功能显然无法将其输入转换为“bbb”,如以下代码段所示

x = "notbbb"
makebbb(x)
print(x)
# Outputs "notbbb"

现在我明白了这个失败的原因,我想知道的是,无论如何要做出这样的功能? (我不仅仅是在谈论分配字符串,而是通常使用=进行分配)

5 个答案:

答案 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]