Ошибка имени: имя «сводных точек» не определено

#module #global-variables #jupyter

#модуль #глобальные переменные #jupyter

Вопрос:

Не могли бы вы помочь мне решить следующую проблему, пожалуйста? Я написал модуль на python. Для следующего модуля мне нужны следующие переменные или значения: lastprice и lastpivotprice

Какое определение или изменение сценария необходимо, чтобы эти 2 переменные были глобальными переменными)?

На самом деле, если я попытаюсь вызвать lastpivotprice вне модуля, я получаю следующее сообщение об ошибке: NameError: имя ‘pivots’ не определено

Код модуля: checkpivots.py

     try:  
      df['High'].plot(label='high')

      pivots =[]
      dates = []
      counter = 0
      lastPivot = 0

      Range = [0,0,0,0,0,0,0,0,0,0]
      daterange = [0,0,0,0,0,0,0,0,0,0]

      for i in df.index:
        currentMax = max(Range , default=0)
        value=round(df["High"][i],2)
        Range=Range[1:9]
        Range.append(value)
        daterange=daterange[1:9]
        daterange.append(i)

      if currentMax == max(Range , default=0):
          counter =1
      else:
          counter = 0
      if counter ==  5:
          lastPivot=currentMax
          dateloc =Range.index(lastPivot)
          lastDate = daterange[dateloc]

          pivots.append(lastPivot)
          dates.append(lastDate)
   
            
    except Exception:
      print("-")

    lastpivotprice = pivots[-1]
    
    lastprice=df.iloc[-1]['Close'] #read value in the last row in col 'close'
    lastprice2 = df['Close'].values[-2] #read value in the last row minus2 in col 'close'
   
    #print (lastprice)        
    # print (lastpivotprice)
    # print (lastprice2)
 

Ответ №1:

Если вы хотите использовать свои переменные в каждом модуле как глобальные, вы должны установить их как глобальные переменные. Например, смотрите Этот код ниже:

 c = 0 # global variable

def add():
    global c
    c = c   2 # increment by 2
    print("Inside add():", c)

add()
print("In main:", c)
 

Если вы удалите global из c, c останется 0 в MAIN.

Комментарии:

1. Я написал глобальную lastpivotprice, но получил тот же код ошибки. Трассировка ошибки имени (последний последний вызов) ~ checkpivots.py в <module> 39 40 глобальная lastpivotprice —> 41 lastpivotprice = pivots[-1] 42 43 Ошибка имени: имя ‘pivots’ не определено

2.Это происходит потому, что pivots является local variable in try block . Вы должны инициализировать переменную pivots вне блока try. Затем импортируйте все во второй файл и вызывайте pivots. Я приведу вам пример, который поможет мне понять, как это работает. У вас есть файл модуля с именем test.py test.py pivots = [] try: pivots.append(1) print(pivots) except Exception: print("-") В вашем втором py-файле вы можете взять сводный список test2.py from test import * print("Pivots are: ") print(pivots)