擅长:python、mysql、java
<p>在第一个示例中,<code>a = float</code>,<code>a</code>是一个内置函数,但在第二个示例中,<code>a = u"float"</code>,<code>a</code>是一个unicode字符串。如果您想在不需要创建动态映射的情况下完成该类型的转换,请执行以下操作:</p>
<pre><code># for Python 2
a = u"float"
b = "123.123"
import __builtin__
print getattr(__builtin__, a.decode())(b)
# 123.123
# for Python 3+
a = u"float"
b = "123.123"
import builtins
print(getattr(builtins, a)(b))
# 123.123
</code></pre>
<hr/>
<p>我建议您不要使用<code>eval()</code>(如{a1}所建议的那样),因为这可能导致重大的安全风险。这就是为什么我使用<a href="https://docs.python.org/2/library/__builtin__.html#module-builtins" rel="nofollow noreferrer">^{<cd6>}</a>/<a href="https://docs.python.org/3/library/builtins.html#module-builtins" rel="nofollow noreferrer">^{<cd7>}</a>模块和<code>getattr()</code>来检索{<cd9>}函数。在</p>
<hr/>
<p>您还可以创建一个映射(即<code>dict</code>),将unicode字符串映射到其相应的函数(由<a href="https://stackoverflow.com/questions/50148545/python-dynamic-type-casting-unicode-object-to-python-object-conversion#comment87315250_50148545">comment</a>建议):</p>
^{pr2}$
<p>使用映射是最安全的方法,但它将您的“动态性”仅限于映射中列出的类型。在</p>