Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在不使用全局变量的情况下从函数内部更改变量_Python 3.x_Global Variables - Fatal编程技术网

Python 3.x 在不使用全局变量的情况下从函数内部更改变量

Python 3.x 在不使用全局变量的情况下从函数内部更改变量,python-3.x,global-variables,Python 3.x,Global Variables,初级程序员编写一个程序,需要一个函数来改变其作用域之外的变量。我希望此函数在不使用“全局”的情况下更改此变量。问题有点像这样: tries = 5 def example(): num = input('Insert number from 0 to 20: ') if num != 17: global tries tries -= 1 if tries == 0 print('You lost')

初级程序员编写一个程序,需要一个函数来改变其作用域之外的变量。我希望此函数在不使用“全局”的情况下更改此变量。问题有点像这样:

tries = 5

def example():

    num = input('Insert number from 0 to 20: ')

    if num != 17:
        global tries
        tries -= 1

        if tries == 0
            print('You lost')
        else:
            print('Wrong number!')
            print('{} tries left!'.format(tries))
            example()

    else:
        print('You win')


example()
这与我正在尝试做的类似。有什么办法可以摆脱“全球”吗。我一直看到这不是一个好的做法,而且每次我运行程序时它都会显示为一个警告,这看起来不是很好


帮助?

为什么需要在其范围外更改尝试,是否会有另一个函数同时使用尝试?在这种情况下,您可以将尝试传递到函数中。如果您需要知道之后还有多少次尝试,您可以将尝试返回到主脚本。将有其他函数使用尝试。我正在写的剧本比我展示的例子要多一些。你是对的,在这种情况下,我可以在函数内部传递变量,但是如果有其他函数也使用该变量,有没有一种方法可以在不使用“全局”的情况下更改变量?那么你将使用类似线程的方法来并行运行多个函数,同时使用多个函数进行尝试?如果是这样的话,您可以考虑使用类似于队列的东西,通过5次尝试初始化队列,每次使用一次尝试,您都可以从队列中获得它。这可能有点过分,但它是线程安全的。还值得注意的是,可变类型是通过引用传递的,因此,如果您创建一个类来表示尝试次数,并将该类的实例传递给多个函数,那么它们都将在同一个实例上运行,而不使用全局函数