p = input(":")
def c (p):
p = "cat"
return p
print(c(p))
print(p) #how do i make this p be cat
有办法做到这一点吗?
答案 0 :(得分:1)
这里有一个范围问题。你有这个代码:
p = input(":")
def c(p):
p = "cat"
return p
虽然您可以选择使用全局,但您可以更简单地将传递的变量的名称更改为其他名称。目前,当您执行p = "cat"
时,您引用的p
是方法框架的一个INSIDE,而不是全局框架中的一个。如果您将参数的名称更改为" z,"然后你将引用右p
。所以这会奏效:
p = input(":")
def c(z):
p = "cat"
return p
您可以阅读有关框架的信息,并了解Python如何与加州大学伯克利分校的优秀在线教科书中的不同框架进行交互,以获得介绍性的CS课程:http://composingprograms.com/。
我建议阅读第1章第5节 - 它涉及解决这个问题的方法。
答案 1 :(得分: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'