Найти - Пользователи
Полная версия: Область видимости
Начало » Python для новичков » Область видимости
1
Protoss
Господа кодеры!
Не могли бы вы мне подсказать как решить проблему. Вот например есть код:
def sum():
       Sum = 5+5
       Div = 100/25
       Mult = 2*2
       print Sum, Div, Mult
sum()
def lol():
      print Sum, Div, Mult
lol()

Естественно будет ошибка, т.к. Переменные в фун-ии lol не определены. Так вот в чем вопрос, как можно использовать переменные с другой функции?
Soteric
Необходимо либо использовать глобальные переменные (global variables), либо возвращать результаты вычислений из функций и подавать их на вход других функций в качестве аргументов. Первое кажется проще, но второе правильнее.
x = 5
y = 8

def doSum(a, b):
sumResult = a + b
return sumResult

sumResult = doSum(x, y) # В переменную sumResult вернули результат сложения

def display(something):
print something

display(sumResult) # Отправили sumResult в функцию display, чтобы она вывела ее на экран
GaiveR
Soteric, зачем же перекрывать функцию sum переменной?
Soteric
Исправил
dimy44
Не очень хорошая идея затенять имена built-in functions, в данном случае sum.
Soteric
Спасибо, поправил :)
Protoss
Спасибо большое, а если у меня больше, чем одна переменная, то я могу передать в функцию 12 параметров?
Soteric
Можно передать и 12 параметров. Но, как правило, если возникает такая необходимость, то это повод задуматься а все ли хорошо.
dimy44
Для этого существуют списки, кортежи, словари… Вот Вам простейший пример, демонстрирующий разные способы передачи параметров функции
>>> def func(x, *y, **z):
...     print x
...     print y
...     print z
... 
>>> func([1, 2, 3, 4], 2, 3, a=4, b=5)
[1, 2, 3, 4]
(2, 3)
{'a': 4, 'b': 5}
>>> 
Protoss
Спасибо большое всем
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB