2013-01-15 109 views
0

我有这样的代码:的Python - 参数

>>> def enterText(value): 
    command = input ("enter text: ") 
    value = command 

>>> def start(): 
    text = "" 
    enterText(text) 
    print ("you entered: "+str(text)) 

我已经绑了很多东西,但我似乎无法弄清楚。我是Python的新手,可以帮助我通过函数传递一个字符串?谢谢!

+0

你想“返回”命令吗? – Sebastian

+0

是的,这正是我想要做的 – user1978786

回答

4

Python中的字符串是不可变的。您需要从enterText()返回字符串,以便您可以在start()之内使用它。

>>> def enterText(): 
    return input("enter text: ") 

>>> def start(): 
    text = enterText() 
    print ("you entered: " + str(text)) 

给定的字符串对象不能被改变。当您致电enterText(text)时,value将引用在start()内创建的空字符串对象。

分配到value然后重新绑定变量,即,它连接名称“值”与由分配的右手边引用的对象。对普通变量的赋值确实是而不是修改了一个对象。

然而,text变量将继续引用空字符串,直到您再次分配给text。但既然你不这样做,它就无法工作。

+0

即使'value'是一个可变列表,您也会得到相同的重新绑定行为。我认为你应该增加一些关于本地和全球范围的内容,以使其成为一个完整的答案。尽管如此,+1。 –

+0

@JoelCornett你会改述哪一部分?我并不是想让它听起来像重新绑定只发生,因为字符串是不可变的。 – phant0m

+0

这不是什么大事。你的第一句似乎暗示了字符串的不变性是赋值操作不起作用的原因。尽管你的答案的其余部分澄清了这一点。 –