为什么当我在一个函数中定义变量时,它不能在另一个函数中访问

时间:2015-03-22 18:36:42

标签: python

我是python和编程的新手,所以这看起来像是一个愚蠢的问题。当我在一个函数中定义变量时,我无法在另一个函数中访问它。例如:

def getname():
    name = raw_input("What is your name?")
    print("Ok," + name)

def getage(name):
    age = raw_input("What is you age," + name)
    print ("Great!")

getname()
getage()

当我运行它时,它说“全局名称'名称'未定义”。对不起,如果这是一个非常愚蠢的问题。我之前没有真正编程, 感谢。

2 个答案:

答案 0 :(得分:5)

您可以返回name并将其传递给另一个函数,函数中的变量对于它们声明的函数是本地的,除非您使用global关键字但返回是更好的选项:< / p>

def getname():
    name = raw_input("What is your name?")
    print("Ok," + name)
    return name # return the name so we can use it later

def getage(name):
    age = raw_input("What is you age," + name)
    print ("Great!")


name = getname() # assign name to return value from getname
getage(name) # pass it to getage

python practice-book有一些不错的教程。

答案 1 :(得分:1)

可以将变量定义为具有全局或局部范围。使用全局变量,虽然它不是&#34;错误&#34;本身,增加了软件的整体耦合,并使其更难维护。

因此,使用局部变量,您可以选择在不同的软件(函数,对象,编程语言提供的任何构造)之间共享哪些变量,以及哪些变量应保持对该函数的私有。

如果一个函数需要另一个函数的变量,您可以考虑让第一个函数返回该变量,并将其作为输入参数传递给第二个函数。但是,您还应该考虑这两个函数是否首先不属于一起。

由于您不熟悉编程,我建议您关注耦合和内聚,这两个软件质量是这些设计决策的基础。