我想在Python中编写一个函数,它根据输入索引的值返回不同的固定值.
在其他语言中,我会使用switch或case声明,但Python似乎没有switch声明.在这种情况下,推荐的Python解决方案是什么?
在Python程序中给定带有函数名称的字符串调用函数的最佳方法是什么.例如,假设我有一个模块foo,我有一个内容为的字符串"bar".什么是最好的打电话foo.bar()?
我需要获取函数的返回值,这就是我不仅仅使用它的原因eval.我想通过使用eval定义一个返回该函数调用结果的临时函数来做到这一点,但我希望有更优雅的方法来做到这一点.
如何设置/获取t给定的属性值x.
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
Run Code Online (Sandbox Code Playgroud) 我有一个str对象,例如:menu = 'install'.我想从这个字符串运行install方法.例如,当我打电话时,menu(some, arguments)它会打电话install(some, arguments).有没有办法做到这一点?
为简单起见,这是我想要做的精简版:
def foo(a):
# I want to print the value of the variable
# the name of which is contained in a
Run Code Online (Sandbox Code Playgroud)
我知道如何在PHP中执行此操作:
function foo($a) {
echo $$a;
}
global $string = "blah"; // might not need to be global but that's irrelevant
foo("string"); // prints "blah"
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
var_list = [one, two, three]
num = 1
for var in var_list:
var = num
num += 1
Run Code Online (Sandbox Code Playgroud)
上面给出了一个"一"不存在的错误.你不能这样分配吗?我想为列表中的每个var分配一个递增的数字.
我需要做的是循环大量不同的文件并(尝试)从文件中获取元数据.
我可以创建一个大的if ... elif ...并测试每个扩展,但我认为将扩展存储在变量中会更容易,检查是否存在具有该名称的函数,然后执行它.
这是我目前的解决方案,取自另一个stackoverflow线程:
try:
getattr(modulename, funcname)(arg)
except AttributeError:
print 'function not found "%s" (%s)' % (funcname, arg)
Run Code Online (Sandbox Code Playgroud)
这有一个问题:如果底层函数引发了AttributeError,则会将其注册为"找不到函数"错误.我可以添加try ...除了块到所有函数,但这也不是特别漂亮......
我正在寻找的更像是:
if function_exists(fun):
execute_function(fun, arg)
Run Code Online (Sandbox Code Playgroud)
有这么简单的方法吗?
谢谢 :-)
我有一个字符串列表,如:
names = ['apple','orange','banana']
Run Code Online (Sandbox Code Playgroud)
我想为列表中的每个元素创建一个列表,该列表将完全命名为字符串:
apple = []
orange = []
banana = []
Run Code Online (Sandbox Code Playgroud)
我怎么能用Python做到这一点?
这可能是非常基本和简单的事情,我可能只是在谷歌搜索错误的条款,但希望有人在这里可以帮助我.(我仍然是编程的初学者,从这个问题可能很明显.)
我正在寻找一种从字符串中访问变量的方法.
像这样:
A1 = {}
B1 = {}
C1 = {}
mylist = ["A","B","C"]
for blurb in mylist:
blurb1.foo()
Run Code Online (Sandbox Code Playgroud)
现在我在这种情况下使用if/elif-constructions:
if blurb == "A":
A1.foo()
elif blurb == "B":
B1.foo()
elif blurb == "C":
C1.foo()
Run Code Online (Sandbox Code Playgroud)
这有效,但肯定有更优雅的方式吗?
谢谢你的帮助!Lastalda
编辑2:试图再次澄清(抱歉之前没有非常连贯,我很难理解这一点):
我想从字符串创建和访问对象.
因此,如果我有一个返回字符串的函数,我想创建一个使用此字符串作为列表名称的列表,然后使用该列表执行操作.
x = foo() # foo returns a string, e.g. "A"
# create list named whatever the value of x is
# in this case:
A = []
Run Code Online (Sandbox Code Playgroud)
难道没有什么比为x的所有可能结果准备列表以及使用长elif结构或词典更优雅吗?在这种情况下我是否必须使用eval()?(我对使用eval()犹豫不决,因为它被认为是危险的.)
我希望现在终于清楚了.任何帮助仍然赞赏!