在Python中更改子例程中的字符串
这不会更改字符串。进行此类更改的最佳方式是什么?您必须在Python中更改子例程中的字符串,python,string,replace,Python,String,Replace,这不会更改字符串。进行此类更改的最佳方式是什么?您必须从修改功能返回修改后的文本,否则,您的修改不会产生任何效果: def modify(text): text = text[:1] + 'Z' + text[2:] return text = 'abcdefg' modify(text) print text 由于modify函数中的文本是一个local变量,因此修改不会影响globaltext变量(您将其传递给modify函数),直到您指定它: text=modify(t
从修改功能返回修改后的文本,否则,您的修改不会产生任何效果:
def modify(text):
text = text[:1] + 'Z' + text[2:]
return
text = 'abcdefg'
modify(text)
print text
由于modify
函数中的文本是一个local
变量,因此修改不会影响global
text
变量(您将其传递给modify
函数),直到您指定它:
text=modify(text)
字符串是不可变的,您不能在函数中更改它们,也不能在函数外看到更改
正确的方法是返回修改后的字符串并在调用它的地方重新分配它
def modify(text):
text = text[:1] + 'Z' + text[2:]
return text
我不认为这是关于不可变的字符串。我认为问题在于OP认为对作为参数传递的名称的赋值会影响调用范围。您提供了正确的解决方案,但诊断不正确。@StevenRumbalski在这种情况下,他们应该检查“是”,这完全解决了问题。事实上,我结束这个问题是为了支持那个问题。欢迎来到堆栈溢出。发布你期望的内容。
def modify(text):
text = text[:1] + 'Z' + text[2:]
return text
text = 'abcdefg'
text = modify(text)
print text