在Python中使用globals()函数的原因是什么?它只返回全局变量的字典,它们已经是全局的,所以它们可以在任何地方使用......我只是出于好奇,试图学习python.
def F():
global x
x = 1
def G():
print(globals()["x"]) #will return value of global 'x', which is 1
def H():
print(x) #will also return value of global 'x', which, also, is 1
F()
G()
H()
Run Code Online (Sandbox Code Playgroud)
我真的不明白这里的意思吗?只有我需要它的时候,如果我有本地和全局变量,两者都有相同的名称
def F():
global x
x = 1
def G():
x = 5
print(x) #5
print(globals()["x"]) #1
F()
G()
Run Code Online (Sandbox Code Playgroud)
但是你应该永远不会遇到两个具有相同名称的变量,并且需要在同一范围内使用它们的问题.
例如,如果我有一个名为add like的函数
def add(x,y):
return x+y
Run Code Online (Sandbox Code Playgroud)
我希望能够将字符串或输入转换为直接转换为该函数
w=raw_input('Please input the function you want to use')
Run Code Online (Sandbox Code Playgroud)
要么
w='add'
Run Code Online (Sandbox Code Playgroud)
有没有办法用w来引用函数add?
几天前我在网上搜索,我发现了一篇关于python词典的有趣文章.它是关于使用字典中的键来调用函数.在那篇文章中,作者定义了一些函数,然后是一个字典,其键与函数名完全相同.然后他可以从用户那里获得一个输入参数并调用相同的方法(类似于实现大小写).之后我意识到了同样的事情,但不知何故有所不同.我想知道如何实现这一点.如果我有一个功能:
def fullName( name = "noName", family = "noFamily" ):
return name += family
Run Code Online (Sandbox Code Playgroud)
现在,如果我有这样的字符串:
myString = "fullName( name = 'Joe', family = 'Brand' )"
Run Code Online (Sandbox Code Playgroud)
有没有办法执行这个查询并得到一个结果:JoeBrand
例如我记得的是我们可能会给exec()语句一个字符串,它为我们做了.但是我不确定这个特例,而且我也不知道Python的有效方法.而且我将非常感谢帮助我如何处理函数返回值,例如在我的情况下如何打印该函数返回的全名?