2013-11-06 11 views
-1

Есть ли способ передать переменные между двумя функциями в Python без необходимости использовать другую функцию, например main()?Передача переменных между двумя функциями в Python

def fun1 (arg1:int) -> None: 
    random1 = 10 * arg1 
    return(random1) 

def fun2 (bounds:tuple) -> int: 

    random2 = fun1 (random1) 

    if random2 > bounds [1] or random2 > bounds [2]: 
     return (random2) 

    else: 
     pass 

В основном я пытаюсь передать переменную random из fun1 в fun2. Но Eclipse продолжает говорить: «Неопределенная переменная: случайная».

Любые идеи?

+1

Какое значение вы хотите передать * в * 'fun1()'? Это значение 'random' не определено. –

+0

Примечание: вы можете полностью удалить строки 'else: pass'. –

+0

ваше определение функции '' 'def fun1 (arg1: int) -> None:' '' не похоже на действительный python, не так ли? – dorvak

ответ

1

Вне функций (и до определения функции), вы бы объявить экземпляр random назначая что-то к нему. (Например: random = none) Затем в каждой из функций, в которых вы хотите использовать его, он будет доступен для использования. При необходимости, вы можете захотеть включить строку

global random 

в каждой из функций, где он используется для того, чтобы понять, что вы используете глобальную переменную. (Разумеется, использование глобальных переменных по своей природе не легко поддерживается и противоречит как объектно-ориентированной, так и процедурной практике программирования.)

+0

Спасибо! Это именно то, что я искал. Но просто из любопытства, есть ли лучший способ передать значение одной переменной другой функции? – tradt

+0

@tradt, что «лучше» в этом контексте? Это действительно глобальная переменная, если она доступна без прохождения. –

+0

@tradt: аргументы функции в Python передаются с помощью ссылки на объект, поэтому, если переменная, которая передается в, является изменчивым объектом, любые изменения, внесенные этим аргументом вызываемым пользователем, не будут отображаться вызывающим. Поэтому, если вы назначаете для этой переменной строки или другие неизменяемые объекты, глобальная переменная является вашей единственной возможностью для изменения переменной в одной функции, которую будет использовать другая функция. (Кстати, я добавил пример для определения экземпляра глобальной переменной в своем ответе.) – RobH

0

random не определен в fun2, когда он используется в первый раз:

def fun2 (bounds:tuple) -> int: 

    random = fun1 (random) # what value should be passed to fun1 here? 
+0

Я пытаюсь использовать fun1 для хранения значения переменной «random». Чтобы его можно было использовать это значение в другой функции (fun2) позже, при необходимости. Есть ли способ сохранить значение переменной во всем мире? – tradt

Смежные вопросы