Как выровнять несколько элементов внутри столбца?

Причина, по которой вы не можете изменять локальные переменные внутри функции, используя 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
задан cepi1993 18 January 2019 в 14:39
поделиться

2 ответа

Вы можете применить следующий класс и стили к первому столбцу:

.space-between {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

Пример bootply

. столбец в загрузочном листе (вы вложили второй столбец в первый столбец кода выше)

0
ответ дан Pete 18 January 2019 в 14:39
поделиться

Похоже, вам не хватает закрытия div, нарушающего сетку.

codepen: https://codepen.io/brooksrelyt/pen/JwQpqm

<div class="container">
    <h1 class="display-3 text-center mb-5">
        Lorem, ipsum dolor sit amet consectetur adipisicing elit.
    </h1>
    <div class="row">
        <div class="col-md-6">
            <!-- I need this paragraph to stay at the top -->
            <p class="text-muted text-center">
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Officiis laudantium ducimus veritatis aliquam voluptas, maiores error inventore facere minus rem.
            </p>
            <!-- I need this image to be at the bottom of the container -->
            <img src="https://via.placeholder.com/150x100" class="img-fluid" alt="" />
<!--           <img src="imgs/abc.svg" class="img-fluid" alt="" /> -->
            </div>
            <div class="col-md-6">
              <!-- Other stuff-->
              <p>Form other stuff</p>
            </div>
        </div>
    </div>
</div>
0
ответ дан brooksrelyt 18 January 2019 в 14:39
поделиться
Другие вопросы по тегам:

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