Как можно создать новые объемы в Python

После сброса объекта с помощью print_r() я смог получить доступ к массиву posts с помощью:

print_r($the_query1 -> posts);
19
задан Community 23 May 2017 в 11:33
поделиться

8 ответов

В Python обзор имеет три типа: глобальный, локальный и класс. Можно создать специализированные словари 'объема', чтобы передать должностному лицу / оценка (). Кроме того, можно использовать вложенные объемы (определяющий функцию в другом). Я нашел, что они были достаточны во всем моем коде.

, Поскольку Douglas Leeder уже сказал, главная причина использовать, это на других языках - переменный обзор, и этого действительно не происходит в Python. Кроме того, Python является самым читаемым языком, который я когда-либо использовал. Это шло бы вразрез с мелкой частицей удобочитаемости, чтобы сделать что-то как то, если - истинные приемы (Который Вы говорите Вас, хотят избежать). В этом случае я думаю, что лучший выбор состоит в том, чтобы осуществить рефакторинг Ваш код в несколько функций или использовать единственный объем. Я думаю, что доступные объемы в Python достаточны для покрытия каждой возможности, таким образом, локальный обзор не должен действительно быть необходимым.

я надеюсь, что это помогает.

8
ответ дан 30 November 2019 в 04:04
поделиться

Почему Вы хотите создать новые объемы в Python так или иначе?

нормальная причина того, чтобы сделать это на других языках - переменный обзор, но этого не происходит в Python.

if True:
    a = 10

print a
9
ответ дан 30 November 2019 в 04:04
поделиться

переменные в понимании списка (Python 3 +) и генераторы локальны:

>>> i = 0
>>> [i+1 for i in range(10)]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> i
0

, но почему точно Вам нужно это?

3
ответ дан 30 November 2019 в 04:04
поделиться

Я рассматривал бы это как ясный знак, что пора создать новую функцию и осуществить рефакторинг код. Я не вижу причины создать новый объем как этот. Какая-либо причина в памяти?

2
ответ дан 30 November 2019 в 04:04
поделиться

Python имеет точно два объема, локальные и глобальные. Переменные, которые используются в функции, находятся в локальном объеме, в каком уровне отступа они были созданы. Вызов вложенной функции будет иметь эффект, который Вы ищете.

def foo():
  a = 1

  def bar():
    b = 2
    print a, b #will print "1 2"

  bar()

Все еще как все остальные, я должен спросить Вас, почему Вы хотите создать ограниченный объем в функции.

4
ответ дан 30 November 2019 в 04:04
поделиться

Если Вы просто хотите создать временные переменные и позволить им, собраны "мусор" прямо после использования их, можно использовать

del varname

, когда Вы больше не хотите их.

, Если его только для эстетики, Вы могли бы использовать комментарии или дополнительные новые строки, никакое дополнительное добавление отступа, все же.

2
ответ дан 30 November 2019 в 04:04
поделиться

А объемом является текстовый регион программы Python, где пространство имен непосредственно доступно. “Directly accessible” здесь означает, что неполная ссылка на имя пытается найти имя в пространстве имен...

, читайте документация и разъясните свой вопрос.

btw, Вам не нужно if(TRUE){} в C, простое {} достаточно.

2
ответ дан 30 November 2019 в 04:04
поделиться
def a():
    def b():
        pass
    b()

, Если я просто хочу некоторое дополнительное добавление отступа или отлаживаю, я буду использовать if True:

1
ответ дан 30 November 2019 в 04:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: