可变对象在函数中作为参数传递时不会改变

时间:2019-04-07 11:15:25

标签: python

我真的不明白为什么在调用函数后这些对象的值不会改变。我以前在一个站点上读过,可变对象可以作为参数传递,并且它们的值可以更改。 / p>

def concatenare(Q, sigma, s, F, delta):
    Q = Q1.union(Q2R)
    sigma = sigma1.union(sigma2)
    s = s1.copy()
    F = set(F2)
    delta = delta1.copy()
    delta.update(delta2R)
    for finale in F1:
        delta[(finale, s2R[0])] = '.'

Q = set()
F = set()
sigma = set()
delta = dict()
cuvinte = list()
s = list()

concatenare(Q, sigma, s, F, delta)


# Q1,Q2R,sigma1,sigma2,F2,delta1,delta2r,F1 are previously defined and have some values assigned

output:
set()
set()
{}
[]
set()

1 个答案:

答案 0 :(得分:0)

由于您不使用传入的值,仅对其进行赋值,因此您应该让函数返回所有想要的值:

def concatenare():
    Q = Q1.union(Q2R)
    sigma = sigma1.union(sigma2)
    s = s1.copy()
    F = set(F2)
    delta = delta1.copy()
    delta.update(delta2R)
    for finale in F1:
        delta[(finale, s2R[0])] = '.'
    return Q, sigma, s, F, delta

Q, sigma, s, F, delta = concatenare()

或者,(异端!)分配给全局变量,因为无论如何您都使用全局变量来构建值。