在 python 中将字符串转换为 char

Convert string to char in python

是否有可能(例如内置函数)在 python 中将字符串转换为字符?例如,如果我给变量赋值

p1=100

然后有字符串

"p1",

是否可以像

一样将p1的值赋给一个新的变量t
t=char("p1")

所以我得到

print(t)->100 ? 

显然,上述解决方案不起作用,因为它会抛出以下错误消息:

NameError: name 'char' is not defined

编辑:问题与最佳实践无关:我知道我应该用字典来做到这一点,但我想做的是理解 Python 中的数据类型以及如何转换它们。例如,将字符串转换为整数相当容易,所以我想知道这是否同样适用于字符串到字符的转换。 eval() 命令确实解决了示例的问题,但没有回答上述问题。所以我会将目标编辑为

 char("p11")=20

哪个应该给我

 print(p11) -> 20

没有。使用字典。

>>> names = {'p1': 100, 'p2': 200}
>>> t = names['p1']
>>> t
100

如果名称不存在,这将抛出 KeyError

>>> t = names['p3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'p3'

... 但您可以使用 dict.get 并提供默认值:

>>> t = names.get('p3', 'default')
>>> t
'default'

默认默认值是 None

(顺便说一句,这与将字符串转换为字符(acter?)无关,您的术语很混乱。)

您可能正在寻找 eval()https://docs.python.org/3.5/library/functions.html#eval

p1 = 100
print(eval('p1'))   # prints 100

如果你想计算表达式你也可以使用exec()

p1 = 100
t = 'p1 += 99'
exec(t)
print(p1)           # prints 199

但正如其他人已经指出的那样,您应该尽可能避免使用它。 timgeb 提供了一个不错的选择,例如字典。


如果你想把一个字符串变成一个全局变量你也可以这样做:

globals()['y'] = 5
print(y)

注意:当你运行你的代码在全局范围内(在一个函数之外),你也可以使用locals()['y'] = 5 - 但是这不会在非全球范围内工作!

如果你想把它变成字符那么不要使用“char” 在 python 中,char 声明为 chr 所以你可以这样:

chr(input('Enter here'))