Я импортирую файл 'testmod' в мой 'основной' файл и обнаружил следующую ошибку:

NameError: name 'apple' is not defined

Как убедиться, что все переменные в файле 'testmod', такие как 'year', 'banana', 'apple', доступны для чтения в файле 'main'


Sampledata.csv :

Year,Apple,Orange,,,
2011,45,67,,,
2012,48,43,,,
2013,58,89,,,

Файл 'testmod':

import csv

def insertcsv():
    openfile = open('sampledata.csv')
    csvreader = csv.reader(openfile)
    next(csvreader)
    
    year=[]
    apple=[]
    orange=[]

    for row in csvreader:
        year.append(row)
        apple.append(row)
        orange.append(row)
    
    return year
    return apple
    return orange

def calfruits:
    cal = [apple[i] + orange[i] for i in range(len(apple))]

Импортируем «testmod» на «main»:

import testmod as tmod
tmod.insertcsv()
print(apple)
print(cal)
0
Joliver 19 Июл 2020 в 13:19

3 ответа

Лучший ответ

Проверь это.

файл 'testmod':

import csv
def insertcsv():
    openfile = open('sampledata.csv')
    csvreader = csv.reader(openfile)
    next(csvreader)
    
    year=[]
    apple=[]
    orange=[]

    for row in csvreader:
        year.append(row)
        apple.append(row)
        orange.append(row)
    
    return year,apple,orange # return all values in a single line.

def calfruits():
    cal = [apple[i] + orange[i] for i in range(len(apple))]
    return cal

Импорт 'testmod' на 'main':

import testmod as tmod
year,apple,orange = tmod.insertcsv()
cal = tmod.calfruits()
print(apple)
print(cal)
0
TheSohan 19 Июл 2020 в 11:03

Потому что insertcsv () возвращает локальную переменную с именем apple, но вам нужно предоставить глобальную переменную для использования в операторе печати. Поскольку мы здесь, у вас есть несколько предложений: вместо трех отдельных операторов return используйте это

    return year, apple, orange

Чем получить значения, сказав

    year, apple, orange = tmod.insertcsv()

Это сделало бы это

0
Lorenzo Paolin 19 Июл 2020 в 10:31

Верните все значения в строке, потому что, как только он вернет значение, ваша функция будет прервана.

Использование: год возврата, яблоко, апельсин Вместо: год возврата, яблоко возврата, апельсин

0
Diwas Acharya 19 Июл 2020 в 10:42