传递参数时名称错误?

时间:2016-04-18 19:49:06

标签: python python-3.x

我正在编写程序并继续遇到错误:

   File "C:/Users//Documents///", line 47, in                      <module>
print(operations(sorted_list_desc))
NameError: name 'sorted_list_desc' is not defined

即使你看不到我正在使用的文件,我也提供了我的代码。我应该循环这些年,并随机选择每年的运营商。但是,我继续得到上面的错误。任何想法,我继续得到它?

import csv

#List to store different operators
list_operators = ["+","-","*","/"]


#Function to read file of list
def read_file():

#List to store data
    sorted_list_desc = []

 year = csv_file.readline()
    population = csv_file.readline()


    return sorted_list_desc

     print(read_file())

def operations(sorted_list_desc):
    for i in range(len(sorted_list_desc)):
        operator = random.choice(list_operator)
    return operator
print(operations(sorted_list_desc))
##        

3 个答案:

答案 0 :(得分:1)

sorted_list_descread_file()生成。将您的最后一行更改为:

print(operations(read_file()))

该行:

print(read_file())

并没有神奇地创建名为sorted_list_desc的全局对象。 您需要明确地将其交给operations()

或者,你可以写:

sorted_list_desc = read_file()
print(operations(sorted_list_desc))

答案 1 :(得分:1)

您仅在内部sorted_list_desc分配了read_file() 。因此,您的错误告诉您sorted_list_desc未分配给您的功能范围之外的任何内容。请参阅Python scoping rules,并注意您甚至不需要将sorted_list_desc作为参数传递,因为它无论如何都会在您的函数内部分配。

答案 2 :(得分:0)

看起来sorted_list_descread_file()函数的范围内定义,因此您无法在该函数之外引用它。您可以在'read_file()'中调用print(operations(sorted_list_desc)),也可以在全局范围内定义sorted_list_desc = []