Name is not defined

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Python 3.8, Win 7.

Добрый день. Есть следующий код:

Python:
    def faust_calc(self):
        #тут идут вычисления
        global data_sunt
        data_sunt={'Amp':depth, 'Freq':sint_sonic}

    def get_data(self):
        data_input={'Input':[]}
        #заполнение данными
        global data_work
        data_work={**data_sunt, **data_input}
        
    def pivot_table(self):
        dt=pd.DataFrame(data_work)

После выполнения третьей функции получается ошибка: name 'data_work' is not defined. Хотя словарь есть, данными заполнен.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 599
464
83
Python:
def get_data(self):
        data_input={'Input':[]}
        #заполнение данными
        self.data_work={**data_sunt, **data_input}
        
    def pivot_table(self):
        dt=pd.DataFrame(self.data_work)
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Python 3.8, Win 7.

Добрый день. Есть следующий код:

Python:
    def faust_calc(self):
        #тут идут вычисления
        global data_sunt
        data_sunt={'Amp':depth, 'Freq':sint_sonic}

    def get_data(self):
        data_input={'Input':[]}
        #заполнение данными
        global data_work
        data_work={**data_sunt, **data_input}
     
    def pivot_table(self):
        dt=pd.DataFrame(data_work)

После выполнения третьей функции получается ошибка: name 'data_work' is not defined. Хотя словарь есть, данными заполнен.
покажи код полностью(а если он слишком большой, то покажи, где ты определяешь глобальную переменную)
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
покажи код полностью(а если он слишком большой, то покажи, где ты определяешь глобальную переменную)
Во второй функции же. Код не очень большой, но унылый.
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Python:
def get_data(self):
        data_input={'Input':[]}
        #заполнение данными
        self.data_work={**data_sunt, **data_input}
       
    def pivot_table(self):
        dt=pd.DataFrame(self.data_work)
Не работает. Ругается, что у класса нет такого атрибута.
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
Нашел решение. Не очень подходит в принципе, но здесь и сейчас - сойдёт:
Python:
def faust_calc(self):
        #тут вычисления
        global data_sunt
        data_sunt={'Depth':depth, 'Sint':sint_sonic}

    def get_data(self):
        data_input={'DT':[]}
        # тут заполнение массива
        data_work={**data_sunt, **data_input}
        return data_work
        
    def pivot_table(self):
        dt=self.get_data()
 

lynulx

Модератор
Команда форума
Модератор
Авг 9, 2020
139
19
18
Python 3.8, Win 7.

Добрый день. Есть следующий код:

Python:
    def faust_calc(self):
        #тут идут вычисления
        global data_sunt
        data_sunt={'Amp':depth, 'Freq':sint_sonic}

    def get_data(self):
        data_input={'Input':[]}
        #заполнение данными
        global data_work
        data_work={**data_sunt, **data_input}
       
    def pivot_table(self):
        dt=pd.DataFrame(data_work)

После выполнения третьей функции получается ошибка: name 'data_work' is not defined. Хотя словарь есть, данными заполнен.
уверен, что вызываешь get_data до pivot_table?
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
уверен, что вызываешь get_data до pivot_table?
Хорошая мысль. Проверю.
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
141
13
18
А вот теперь снова столкнулся со старой проблемой - загрузкой данных из массива в элемент treeview. Столбы подписываю, а до данных добратьяс не могу.
Python:
    def pivot_table(self):
        dt=self.get_data()
        cols=list(dt)
        self.tbl_workdata['columns']=cols
        for i,head in enumerate(self.tbl_workdata['columns']):
            self.tbl_workdata.heading(i, text=head)
            self.tbl_workdata.column(i, width=(self.tbl_workdata.winfo_width()//len(cols)))
        self.tbl_workdata['show']='headings'
        for col in dt:
            for val in dt[col]:
                self.tbl_workdata.insert("", END, values=val)
Было где-то решение, но найти не могу. Этот вариант выводит всё в один столбец, а по столбцам
 
Последнее редактирование:

Форум IT Специалистов