没有def main()= O,def main()= X.

时间:2017-03-12 00:05:05

标签: python

我做了以下功能,但是当我使用主要功能时它会产生错误,尽管没有使用主要功能

没有错误
def setup_name():
    print("Before we start...","\n"
          "What is your name?")
    char_name = input("Name : ").strip().capitalize()
    return char_name

def intro():
    print(cname," is building great walls now")
    print()

cname = setup_name()
intro()

但下面给我错误

def setup_name():
    print("Before we start...","\n"
          "What is your name?")
    char_name = input("Name : ").strip().capitalize()
    return char_name

def intro():
    print(cname," is building great walls now")
    print()

def main():
    cname = setup_name()
    intro()
main()

对我来说,似乎没有区别,所以我觉得我需要一些敏锐的眼睛。

谢谢!

1 个答案:

答案 0 :(得分:2)

在第二个版本中,

cname不再限定在模块级别(其当前作用域现在是函数main),因此在{{1}时您将获得NameError尝试使用intro

您需要明确地将cname传递给cname,以使其在第二个版本中有效。

请参阅Short Description of the Scoping Rules?