Что продолжает лямбда-выражение в этой функции Python?

Создайте новый следующий компонент, используя createGlobalStyle.

import { createGlobalStyle } from 'styled-components';


const GlobalStyle = createGlobalStyle`

* {
-webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
        box-sizing: border-box;
}

`;

export default GlobalStyle;

А затем импортировать & amp; сделать выше компонент в вашем App component.

5
задан David 8 May 2009 в 20:03
поделиться

3 ответа

В Python переменные, созданные в циклах и ветвях, не имеют области видимости. Все функции, которые вы создаете с помощью лямбда , имеют ссылку на одну и ту же переменную i , которая установлена ​​на 9 на последней итерации цикла.

Решение состоит в том, чтобы создать функцию, которая возвращает функцию, таким образом ограничивая область действия переменной итератора. Вот почему работает подход functools.partial () . Например:

def test():
    def makefunc(i):
        return lambda x: p(i, x)
    a = []
    for i in range(10):
        a.append(makefunc(i))
    return a
12
ответ дан 18 December 2019 в 13:19
поделиться

I asked a similar question, and got two answers. One basically the same as the accepted answer here, and the other which is less clear but slightly more succint.

Dynamically creating a menu in Tkinter. (lambda expressions?)

0
ответ дан 18 December 2019 в 13:19
поделиться

Well you can also bind the i to an outer lambda for the lazy.

def p(x, num):
    print x, num

def test():
    a = []
    for i in range(10):
        a.append((lambda i :lambda x: p (i, x))(i))
    return a
1
ответ дан 18 December 2019 в 13:19
поделиться
Другие вопросы по тегам:

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