#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
intry block
. Вы должны инициализировать переменную pivots вне блока try. Затем импортируйте все во второй файл и вызывайте pivots. Я приведу вам пример, который поможет мне понять, как это работает. У вас есть файл модуля с именем test.py test.pypivots = [] try: pivots.append(1) print(pivots) except Exception: print("-")
В вашем втором py-файле вы можете взять сводный список test2.pyfrom test import * print("Pivots are: ") print(pivots)