Как функция может использовать переменные, сгенерированные другими (функциями) в качестве параметров для себя в python? - PullRequest
0 голосов
/ 14 мая 2011

Я изучаю Python и хотел бы разделить разные процессы моего кода на разные функции.Для этого мне нужно передать переменные предыдущей функции в качестве параметра другой функции.Я пробовал что-то вроде этого

def F1 (A):
   B=A+1 

def F2 (B):
   C=B+1
   print C  

F1 (1) F2 ()

Например, в этом случае я ожидаю получить 3 в качестве конечного результата.Это не работает.

Ответы [ 3 ]

3 голосов
/ 14 мая 2011

Просто return это:

def F1 (A):
   return A+1

def F2 (B):
   C=B+1
   print C

# Then use it as parameter
F2(F1(1))
2 голосов
/ 14 мая 2011

РЕДАКТИРОВАТЬ: Поскольку вы редактировали свой пост: переменные, созданные в функциях, являются локальными для этой функции, то есть вы не можете ссылаться на них в другом месте, если не используете команду global, например, global myvar. Это не рекомендуется, хотя было бы лучше, если бы ваш код выглядел так:

def F1 (A):
  return A+1

def F2 (B):
 return B+1

first = F1(1)
second = F2(first)

print first, second

Помните, def F2 (B): означает «использовать B в качестве параметра» - параметры не определены, пока вы не вызовете функцию со значением.

--- оригинальный ответ ---

Не уверен, что именно вы пытаетесь сделать здесь, но позвольте мне попытаться объяснить функции:

def F1(A):
  ...

Это создает функцию с именем F1, которая принимает один параметр с именем A. Какой бы аргумент не был передан F1, он будет установлен на A, поэтому:

def F1(A):
  print A

F1('hello world')

В этом коде F1 вызывается с аргументом 'hello world'. Этот аргумент имеет значение A, а затем функция запускает print A, что теперь эквивалентно print 'hello world'.

Таким образом, в вашей функции вы немедленно переназначаете A на B, но B нигде не было создано в вашем коде. Назначение B=C так же мало смысла.

1 голос
/ 14 мая 2011

Может быть, вам нужен общий объект для хранения результатов? Что-то вроде dict:

def f1(data):
    data['b'] = data['a'] + 1

def f2(data):
    data['c'] = data['b'] + 1
    print data['c']

my_data = {'a': 1}

f1(my_data)
f2(my_data) # prints 3
...