Python:从函数参数修改全局变量 [英] Python: modify global var from a function argument

查看:110
本文介绍了Python:从函数参数修改全局变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个函数,该函数将根据传递给它的参数修改一个初始化的全局变量,但是我得到一个 SyntaxError:name'arg'是局部的和全局的.我已经看到了其他方法来实现此目的,可以使用 globals()或在 myFunc 内部创建一个简单的func来欺骗" Python.另一种方法是在 myFunc 内创建if语句以显式分配相应的全局变量,但这似乎太冗长了.

I'd like to create a function that will modify an initialized global variable based on the argument passed to it, but I get a SyntaxError: name 'arg' is local and global. I have seen other methods to accomplish this, using globals() or creating a simple func inside myFunc to "trick" Python. Another approach would be to create if statements inside myFunc to explicitly assign the corresponding global variables, but that seems overly verbose.

为什么会发生这种情况?最有效/优雅/Pythonic的方法是什么?

Why does this occur, and what would be the most efficient/elegant/Pythonic way to accomplish this?

给出:

var1 = 1
var2 = 2
var3 = 3

def myFunc(arg):
    global arg
    arg = 10

myFunc(var1) # each of these should print to 10
myFunc(var2)
myFunc(var3)

推荐答案

您可以使用 globals()访问变量并从 myFunc()中分配新值

You can use globals() to access the variables and assign new values from within myFunc()

var1 = 1
var2 = 2

def myFunc(varname):
    globals()[varname] = 10

print(var1, var2)

myFunc("var1")
myFunc("var2")

print(var1, var2)

将输出:

1, 2
10, 10

这篇关于Python:从函数参数修改全局变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆