a = 'b' 使字符串 'a' 可以更改为变量 a 以等于字符串 'b'

a = 'b' make it so string 'a' can be changed to the variable a to equal the string 'b'

所以在python中我想把一个字符串改成文字:

a = 'b'
b = 'c'
c = 'd'

encoded = input('Type encoded text and enter for decoded text: ')
decoded_list = MAKE_LITERAL_AND_SHOW_VALUES(list(encoded))
    ##Example: ['a','b','c'] becomes [a, b, c] so becomes ['b','c','d']
decoded = CONCATENATE(decoded_list)
    ##Example: ['b','c','a'] becomes 'bcd'
print(decoded)

是否有任何函数可以实现这一点?

可以改用字典吗?我的意思是,您的直接问题的答案是使用 globals()...(但我不推荐)

a = 'b'
b = 'c'
c = 'd'

def MAKE_LITERAL_AND_SHOW_VALUE(encoded):
    return [globals()[i] for i in encoded]

print MAKE_LITERAL_AND_SHOW_VALUE(encoded)

备选方案是:

letterDict = {'a':'b', 'b':'c', 'c':'d'}

那么,如果你想使用它:

def MAKE_LITERAL_AND_SHOW_VALUE(encoded):
    letterDict = {'a':'b', 'b':'c', 'c':'d'}
    return [letterDict[i] for i in encoded]

免责声明:

(根据 MattDMo 的建议)

99.9% 的时间里使用 globals() 是个坏主意。这显然是我编造的数字,但关键是它几乎总是不必要的。我敢猜测您喜欢这种方法的原因与大多数初学者一样;它看起来使用起来很直观,在某些情况下你可能会写更少的代码,等等。

问题是您可能会养成坏习惯。依赖模块的全局字典不是一个好的设计选择。这增加了耦合,减少了封装并使代码通常很难调试。这与在函数内部使用 global 传递变量没什么不同。随着程序的复杂性增加,不要指望其他人或您自己(将来)会对阅读您编写的代码感到满意。