Python中的全局变量问题

问题描述 投票:0回答:1

我正在尝试在函数之间传递全局整数和字符串。整数似乎传输良好,但字符串却传输不正确。字符串中包含全局整数。即使在第二个函数中更改了全局整数之后,包含整数的字符串似乎也没有更新。任何帮助将不胜感激。

num=1
num_str = ''

class Class(object):

    def Function1(self):
        global num
        global num_str
        num_str = ("number " + str(num))
        print(num)
        print(num_str)
        self.Function2()

    def Function2(self):
        global num
        global num_str
        num += 1
        print(num)
        print(num_str)


Class().Function1()

我的输出是

1
number 1
2
number 1

Process finished with exit code 0
python python-3.x global-variables global
1个回答
0
投票

如果您希望每次更新数字时都更新字符串,则实际上并不需要字符串;您需要一个返回字符串的函数/ lambda。这是一个例子:

num=1
num_str = None

class Class(object):
    def Function1(self):
        global num, num_str
        num_str = lambda: f'number {num}'
        print(num)
        print(num_str())
        self.Function2()

    def Function2(self):
        global num, num_str
        num += 1
        print(num)
        print(num_str())


Class().Function1()

输出:

1
number 1
2
number 2
© www.soinside.com 2019 - 2024. All rights reserved.