2015-08-27 4 views
1

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

 def interest(day,month,year): 
     interest = x   #I got X by requesting a web data base. 

    def calc(debt,time): 
     result = (debt*x)/time 

Есть ли способ, чтобы импортировать X из одной функции в другую?

Спасибо!

+2

Где указано x? – Zarwan

+0

По импорту вы пытаетесь перевести из одной функции в другую функцию по тому же сценарию – The6thSense

+0

x это результат, который я получил от первой функции, это просто буквальный пример, мне нужно импортировать результат, который я получил в первой функции и использовать во второй функции. – user3435341

ответ

0

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

def interest(amt): 
    return amt * FIXED_INT 

def calc(debt, time): 
    return debt * interest(debt) ** time 
0

Вы можете передать переменную в аргументы

def interest(day,month,year): 
    interest = x 
    return interest 


def calc(debt,time, interest): 
    result = (debt*interest)/time 

...  

x = interest(day,month,year) 
calc(debt,time, x) 
2

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

class Foo: 
    def __init__(self): 
     pass 

    def set_x(self): 
     self.x = 5 # Whatever your source is! 

    def calculate_something(self, foo, bar): 
     return foo * bar * self.x 

q = Foo() 
q.set_x() 
print(q.calculate_something(2, 3)) 

Выход: 30

В случае, если вы не заинтересованы в использовании классов, которые вы можете сделать следующее:

  1. Fetch х.
  2. Передайте его как interest и calc, а не извлечение его в interest
+1

Извините, но сказал: «Занятия чрезвычайно полезно, если у вас есть переменные, которые должны быть переданы многим функциям », это похоже на то, что« goto чрезвычайно полезен, если у вас есть код, который должен выполняться во многих разных местах » – progo

0

Вот как я это сделал:

def grades_sum(scores): 
    sum1 = 0 
    for i in scores: 
     sum1 = sum1 + i 
    print sum1 
    return sum1 

grades_sum([100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]) 

def grades_average(grades): 

    average = grades_sum(grades)/float(len(grades)) 

    print average 

    return average 

grades_average([100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]) 

В принципе, я вернулся sum1 в первой функции, так что, когда я называю он во второй функции, sum1 будет разделен на float (len (оценки)). Надеюсь, я помог! P.S. Извинения за уродливый отформатированный текст, это мой первый пост.

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