Приложение узла не доступно из HTTPS

Причина, по которой вы не можете изменять локальные переменные внутри функции, используя exec таким образом, и почему exec действует так, как это делается, можно суммировать следующим образом:

  1. exec - это функция, которая разделяет ее локальную область действия с областью самой внутренней области, в которой она вызвана.
  2. Всякий раз, когда вы определяете новый объект в пределах области действия, он будет доступен в своем локальном пространстве имен, т. е. он изменит словарь local(). Когда вы определяете новый объект в exec, то, что он делает, примерно эквивалентно следующему:

from copy import copy
class exec_type:
    def __init__(self, *args, **kwargs):
        # default initializations
        # ...
        self.temp = copy(locals())

    def __setitem__(self, key, value):
        if var not in locals():
            set_local(key, value)
        self.temp[key] = value

temp - временное пространство имен, которое сбрасывается после каждого экземпляра (каждый время, которое вы вызываете exec).


  1. Python начинает поиск имен из локального пространства имен. Он известен как способ LEGB. Python начинается с Local namespce, затем просматривает области Enclosing, затем Global и в конце просматривает имена в пространстве имен Buit-in.

Более подробный пример будет примерно следующим:

g_var = 5

def test():
    l_var = 10
    print(locals())
    exec("print(locals())")
    exec("g_var = 222")
    exec("l_var = 111")
    exec("print(locals())")

    exec("l_var = 111; print(locals())")

    exec("print(locals())")
    print(locals())
    def inner():
        exec("print(locals())")
        exec("inner_var = 100")
        exec("print(locals())")
        exec("print([i for i in globals() if '__' not in i])")

    print("Inner function: ")
    inner()
    print("-------" * 3)
    return (g_var, l_var)

print(test())
exec("print(g_var)")

Выход:

{'l_var': 10}
{'l_var': 10}

locals являются одинаковыми

{'l_var': 10, 'g_var': 222}

после добавления g_var и изменения l_var он добавляет только g_var и оставил неизменяемый l_var

{'l_var': 111, 'g_var': 222}

l_var, потому что мы меняем и печатаем местные жители в одном экземпляре (один вызов exec)

{'l_var': 10, 'g_var': 222}
{'l_var': 10, 'g_var': 222}

В локальных локалях функции и локальном l_var exec не изменяется, а g_var добавлен

Inner function: 
{}
{'inner_var': 100}
{'inner_var': 100}

inner_function. Локальная такая же, как и локальная команда exec

['g_var', 'test']

global содержит только g_var и имя функции (после исключения специальных методов)

---------------------

(5, 10)
5
0
задан Anup 22 January 2019 в 04:53
поделиться

1 ответ

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

Apache Doc Root Как установить

0
ответ дан Saransh Sharma 22 January 2019 в 04:53
поделиться
Другие вопросы по тегам:

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