这是我的代码:
a= {'u':exec("def u(str):return Unicode(str,'utf-8')"),}
print a
但显示错误:
SyntaxError: invalid syntax
(mysite)zjm1126@zjm1126-G41MT-S2:~/桌面/test$ python a.py
File "a.py", line 5
a= {'u':exec("def u(str):return Unicode(str,'utf-8')"),}
^
SyntaxError: invalid syntax
我将它存储到我公司的数据库中,它必须是一个字典,
我能做什么,
感谢
答案 0 :(得分:1)
替代方案是存储函数,或代码存储为文本:
a= {'u': lambda x: Unicode(x,'utf-8')}
或
a= {'u':"def u(str):return Unicode(str,'utf-8')",}
然后将其作为
执行exec(a['u'])
答案 1 :(得分:0)
exec
不会返回值;相反,它会评估当前上下文中的某些代码(默认情况下)或用户指定的上下文。通过“上下文”,我的意思是本地人和全球的决定。
看起来你想要以下内容:
a = { }
exec "def u(string): return unicode(string, 'utf-8')" in { }, a
# a now contains method by name 'u', just like your original example
a['u']('cheese') # -> u'cheese'
这可以通过执行带有临时字典({ }
)的代码字符串来存储生成的全局变量,并使用a
来存储本地变量。有关详细信息,请参阅docs。
如果您需要评估代码块的值,则可以使用eval()
(尽管您不能eval()
方法声明)。
另请注意,unicode
应具有小写U.
答案 2 :(得分:0)
我不知道这是多少答案但是如果你首先将exec拉到函数参数中它似乎 ...
>>> exec("def t(x): return x**x")
>>> t(5)
3125
>>> a={'t': t}
>>> a['t'](5)
3125
现在我已经有机会考虑这个问题了。 Exec将评估一段代码,但它不会返回任何内容。我上面的代码片段声明了一个函数 t ,可以将其分配给一个字典。