2015-03-28 2 views
0

У меня возникли проблемы с работой функций, которые зависят от вывода другой функции. Когда я запускаю следующий код (это очень упрощенная версия) ...Функции, относящиеся к выходу других функций - Python

from random import randint 

def event(): 
    if m == 1: 
     r = randint(0, 4) 
    else: 
     r = randint(3, 7) 

def random(): 
    if r == 1: 
     print "Test A" 
    elif r == 2: 
     print "Test B" 
    elif r == 3: 
     print "Test C" 
    elif r == 4: 
     print "Test D" 
    elif r == 5: 
     print "Test E" 
    elif r == 6: 
     print "Test F" 


m = 1 
event() 
random() 

m = 2 
event() 
random() 

m = 3 
event() 
random() 

... Я получаю NameError: global name 'r' is not defined

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

ответ

0

Простой способ заключается в использовании return и args

def event(): 
    if m == 1: 
     r = randint(0, 4) 
    else: 
     r = randint(3, 7) 
    return r      # return variable r here 


r = event()       # accept variable r here from event 
random(r)       # pass it to random function 

def random(r)      # receive r from the caller 
    ....       # Use r as a variable 
+0

Это сработало отлично, спасибо Bhargav !!! –

+0

Добро пожаловать. Всего наилучшего!! –

0

При возвращении переменной является хорошим способом для достижения своей цели, иногда вы должны иметь global переменные. В этом случае поставьте global r в определении event(), прежде чем назначать ему. например:

def event(): 
    global r 

    if m == 1: 
     r = randint(0, 4) 
    else: 
     r = randint(3, 7) 
+0

Спасибо за помощь! «global r» работал в некоторых частях моего кода, но позже меня отбросил, когда переменные продолжали переназначаться. –