Глобальное имя не работает в Python -- python поле с участием python-2.7 поле с участием global-variables поле с участием curses пол Связанный проблема

Global name not working in python


0
vote

проблема

русский

Я кодирую программу, где я использую Curses, чтобы создать пользовательский интерфейс, и я получил ширину и высоту терминала через другую команду, и я хочу сделать эти две переменные Global, чтобы я мог ссылаться на них по всему Программа без необходимости передать их через параметры каждый раз (если я не должен просто сделать это?) Вот простая макет серии звонков:

 <код> def three():     print width, height  def two():     three()  def one():     two()  global width global height  width, height = console.getTerminalSize()  one()   

Так что я получаю глобальное имя не определенную ошибку, но не уверен, почему, как я определил их как глобальную первую, а затем назвал серию функций, где я ошибился не так?

Английский оригинал

I am coding a program where I am using curses to create a UI and I have gotten the width and height of the terminal via a different command and I want to make those two variables global so that I can refer to them throughout the program without having to pass them in through parameters everytime (unless I should just do that?) here is a simple layout of the series of calls I have:

def three():     print width, height  def two():     three()  def one():     two()  global width global height  width, height = console.getTerminalSize()  one() 

So I am getting the global name not defined error but not sure why as I have defined them as global first then called the series of functions, where did I go wrong?

</div
           

Список ответов

1
 
vote

Вам не нужно определять <код> global в главном коде; Любые переменные, объявленные там глобальные по умолчанию. Вам нужно разместить <код> global width и <код> global height в функции, где вы их называете. Это говорит Python использовать глобальную версию переменной вместо того, чтобы сделать локальный с этим именем (что является поведением по умолчанию).

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

Использование глобальных переменных в функции, отличной от того, что они создали их

 

You don't need to define global out in the main code; any variables declared there are global by default. You need to place global width and global height in the function where you call them. That tells Python to use the global version of the variable instead of making a local one with that name (which is the default behavior).

But to answer your other question: using globals is generally undesirable, and it's better to pass in parameters when you can. It's less risky.

Using global variables in a function other than the one that created them

</div
 
 

Связанный проблема

98  Подключение к серверу Microsoft SQL с помощью Python  ( Connecting to microsoft sql server using python ) 
<Р> Я пытаюсь подключиться к SQL через питон для запуска некоторых запросов на некоторых базах данных SQL на сервере Microsoft SQL. Из моих исследований в Инте...

-3  Как публиковать данные в api api django  ( How to post data to django rest api ) 
У меня есть модель Django, которая выглядит как следующее: <код> [ { "ticker": "AAPL", "balance_sheet": [], "income_statement": ...

-1  Почему мои переменные выделены синим цветом? [закрыто]  ( Why are my variables highlighted in blue ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос не воспроизводится или был вызван опечаткам...

2  Векторный способ применить 3-измерительную маску к RGB в Pytorch  ( Vectorized way to apply a 3 dimension mask to rgb in pytorch ) 
У меня есть тензор HXWX3, представляющий изображение RGB, и тензора RGBX3 (Boolean) Tensor в качестве ввода. Предполагается, что для каждого (i, j) в маске те...

6  ReportLab 'LayoutError' Обработка и отладки  ( Reportlab layouterror handling and debugging ) 
Я работал с некоторыми сложными выходами PDF с ReportLab. Это, как правило, хорошо, но есть некоторые случаи, где я получаю LayoutErrors - это обычно потому, ...

1  Выполнить файл SQL, возвращать результаты как Pandas DataFrame  ( Execute sql file return results as pandas dataframe ) 
У меня есть сложный запрос SQL Server, который я хотел бы выполнить из Python и вернуть результаты в виде файла PandaFrame. Моя база данных читается только ...

2  Скапировка не вызывает никакой другой функции после «__init__»  ( Scrapy not calling any other function after init ) 
ОС: Ubuntu 16.04 Стек - Scrapy 1.0.3 + Selenium Я довольно новичок в Scrape, и это может звучать очень простое, но в моем пауке только « init » выполняется. Л...

1  Прочитайте текстовый файл и интерпретируйте данные  ( Read a text file and interpret the data ) 
Я должен написать программу, которая читает в текстовом файле, называемых «TESS.TXT», а затем сортирует файл и распечатывает его со ссылкой, с которой следует...

5  Сайт к изображению  ( Website to image ) 
Я запускаю Python 3.1, и вы бы назвали меня продвинутым начинающим :) Мой вопрос простой: я пытаюсь сделать простую программу, которая просит пользователям ...

-2  Обменная переменная или бесплатная переменная?  ( Is num a bound variable or a free variable ) 
<код> def function() num = 1 num += 1 return num Обменивается связанная переменная или бесплатная переменная? P.S. Этот код написан в Python...

0  Вызов частных методов для метода класса: Python  ( Calling private methods for class method python ) 
Я пытаюсь реализовать несколько конструкторов в Python, а одно из предложений (через онлайн-поиск) должен был использовать ClassMethod. Однако, используя это,...

1  Почему libleosa liblesa.feature.mfcc () выпрыгивает 2D массив?  ( Why does librosa librosa feature mfcc spit out a 2d array ) 
Вызов libleosa.feature.mfcc () в аудиофайле выплесет 2D-массив, как так: <код> array([[ -5.229e+02, -4.944e+02, ..., -5.229e+02, -5.229e+02], [ 7.105...

-1  Ошибка Python OpenCV: (-215) Размер .Width> 0 && size.hight> 0 в функции imshow  ( Python opencv error 215 size width0 size height0 in function imshow ) 
Я запускаю эту программу, и это возвращает мне это сообщение об ошибке: Ошибка: (-215) Size.width & GT; 0 & AMP; & amp; Size.height & GT; 0 в функции imsho...

0  Питоновый способ Ифициализации булева  ( Pythonic way to initalize a boolean ) 
Это лучший / самый Pythonic способ инициализации логического значения для этой цели? <код> if start == today: b = date_time_obj <= start else: b = d...

0  Использование Selenium Python при взаимодействии с веб-сайтом вручную  ( Using selenium python while interacting with a website manually ) 
Обновление: Я создал пользовательский профиль с совместимым способом IE в качестве по умолчанию и получить ту же сообщение об ошибке, поэтому кажется что-то о...




© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.