【问题标题】:Calling a function within a function with python使用python在函数中调用函数
【发布时间】:2016-07-19 15:41:19
【问题描述】:

所以这是我的问题,我正在尝试在 Python 中创建一个引用另一个函数的函数 这是我的代码:

def movies_creation():
    for director in directors:
        for i in range((int(director.age)-20)/random.randint(1,5)):
            movie = MOVIE([], random.randint(1960, 2015), 
            random.choice(movie_genre), 0, [], director, 0, 0, 0)

            movie_title_type = random.randint(1,40)

            if movie_title_type == 1:
                title_colors()
    director.filmography.append(movie)

def title_colors():
    movie.name.append(random.choice(title_colors))

现在,当我尝试运行此代码时,我收到以下错误消息:

回溯(最近一次通话最后): 文件“C:\Users\Patrick\Pictures\Python\TS\gui.py”,第 7 行,在 电影创作() 文件“C:\Users\Patrick\Pictures\Python\TS\Movies.py”,第 401 行,在 movies_creation 中 标题颜色() 文件“C:\Users\Patrick\Pictures\Python\TS\Movies.py”,第 343 行,在 title_colors movie.name.append(random.choice(title_colors)) NameError: 全局名称'movie'未定义

不知道我做错了什么......

【问题讨论】:

  • 请阅读错误信息:NameError: global name 'movie' is not defined。您可能希望将movie 作为参数传递。
  • 变量movie 不在函数之间共享。您应该手动将其传递给title_colors。您应该阅读有关 Python 中“范围”的文档。
  • 您收到的邮件中有哪些不清楚的地方?

标签: python function


【解决方案1】:

您的代码中的问题是您应该将movie 变量传递给title_colors 方法:

title_colors(movie)

def title_colors(m):
    m.name.append(random.choice(title_colors))

【讨论】:

    【解决方案2】:

    感谢您的帮助,我的问题是我的函数与程序中的列表同名。改了名字,现在一切正常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2017-03-06
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      相关资源
      最近更新 更多