Как вы разблокализуете переменную только из цикла for и вместо этого делаете ее локальной для всей функции?

#python #variables

#питон #переменные #python

Вопрос:

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

 def my_function(Array):
    for i in Array:
        if ... :
            Item=i     # 'Item' is the variable created in the loop which i want to make local 
                      # to the function instead of just local to only the for loop.
  

Я уже знаю о вызове null (или None ) переменных заранее, но я не хочу этого делать, я должен создать переменную в цикле for.

Обратите внимание, что это псевдокод

Также я не включил условие оператора if, потому что в нем нет необходимости, поскольку это всего лишь пример.

Комментарии:

1. Вы понимаете правила определения области видимости python? Цикл здесь не создает область видимости

2. @RobinZigmond. Я думаю, вы путаете Python и JavaScript. В Python нет «let» или «var».

3. @RobinZigmond , я не уверен, о чем ты говоришь. Проверьте свой синтаксис, поскольку, похоже, это JavaScript.

4. В Python все переменные, не входящие в лямбда-выражение или понимание, имеют область действия функции. В вашей исходной программе i будет иметь любое значение, которое оно в последний раз получило в конце цикла. Если в вашей программе вы просто «прерываете» после «if», i будет иметь значение, которое вы хотите. Однако вам, возможно, придется беспокоиться о том, что произойдет, если массив пуст.

5. ой, извините всех — я действительно думал, что это вопрос Javascript, извиняюсь и, пожалуйста, игнорируйте мой (теперь удаленный) комментарий

Ответ №1:

Определите var внутри функции, и он будет изменен циклом for при запуске, а затем верните его, чтобы перенести его за пределы функции.

Комментарии:

1. Мне нужно создать переменную внутри цикла for, я не хочу ее предварительно определять.

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