2015-12-07 126 views
0
p = input(":") 
def c (p): 
    p = "cat" 
    return p 

print(c(p)) 

print(p) #how do i make this p be cat 

有没有办法做到这一点?我如何改变一个变量的值,但是从一个函数内部?

+2

你必须设置':P = C(P)'捕捉到你的函数的返回值。 –

+0

以及确定这是正确的方法@Rar ...但不是唯一的方法:P –

+0

这是一个范围问题。 p已经指的是方法内的东西。 –

回答

1

您在这里有一个范围问题。你有这样的代码:

p = input(":") 
def c(p): 
    p = "cat" 
    return p 

虽然你可以选择用全局的,你可能只是更简单地更改您在传递给别的变量的名称。目前,当您执行p = "cat"时,您所引用的是您的方法框架中的一个INSIDE,而不是全局框架中的一个。如果您将参数的名称更改为“z”,那么您将引用正确的p。因此,这会工作:

p = input(":") 
def c(z): 
    p = "cat" 
    return p 

你可以阅读有关框架和了解的Python如何与对CS入门课程加州大学伯克利分校的伟大网上购书不同的帧交互:http://composingprograms.com/

我推荐阅读第1章第5节 - 它涉及到解决这个问题的方法。

0

的另一种方式,你可以用global定义或改变这样的函数中的全局变量:

p = input(":") 
def c (p): 
    global p 
    p = "cat" # now the `p` become 'cat' 
    return p 

print(c(p)) 
print(p) # it's 'cat' 
相关问题