p = input(":")
def c (p):
p = "cat"
return p
print(c(p))
print(p) #how do i make this p be cat
有没有办法做到这一点?我如何改变一个变量的值,但是从一个函数内部?
p = input(":")
def c (p):
p = "cat"
return p
print(c(p))
print(p) #how do i make this p be cat
有没有办法做到这一点?我如何改变一个变量的值,但是从一个函数内部?
您在这里有一个范围问题。你有这样的代码:
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节 - 它涉及到解决这个问题的方法。
的另一种方式,你可以用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'
你必须设置':P = C(P)'捕捉到你的函数的返回值。 –
以及确定这是正确的方法@Rar ...但不是唯一的方法:P –
这是一个范围问题。 p已经指的是方法内的东西。 –