string.replace()似乎不起作用

时间:2015-02-28 12:36:13

标签: python

所以我有一个由function guess_check(guess)

调用的prompt() function

Prompt()调用guess_check(),以便猜测是一个包含字母字符的作品string

word是变量= "placeholder"

以下是我遇到问题的代码:

if guess in word:
    word.replace(guess, '*')
print word

如果我做猜测=" a"我期待word =" pl * ceholder",但它没有改变。

为什么单词变量不会改变,我怎样才能让它随意改变?

1 个答案:

答案 0 :(得分:3)

字符串是不可变的,因此您需要重新分配方法调用的结果:

if guess in word:
    word = word.replace(guess, '*')
print word

根据经验,不可变对象(字符串,元组等)上的方法通常会返回一个新值,而可变对象(列表,字符串,集等)上的方法会就地修改对象,这就是为什么你可以做到

>>> l = [3, 2, 4, 1]
>>> l.sort()
>>> l
[1, 2, 3, 4]

但不是(这是另一个典型的初学者的错误)

>>> l = l.sort()

因为list.sort()没有返回任何内容(这意味着它返回None),因此该行会将None分配给l

>>> print l
None