Вопрос по python – Python 3.2, как передавать данные в переменных между функциями

0

Как мне хранить и передавать содержимое r из main в два? Он напечатает r, если я сделаю это r = что-то фиксированное, но как мне передать и сохранить переменное содержимое в r. Я пробовал random.getstate / setstate, но он говорил "объект функции не подписан".

<code>import random
from random import randrange

def main():
    r = random.randrange(1,13,1)
    print (r)

r = random.randrange(1,13,1)


def two():
    if r==7 or r==11:
       print (r)
    else:
       print (r)

  main()
  two()
</code>
Как ты узнал оrandom.getstate? Это совершенно не связано. То, как вы передаете информацию между функциями, одинаково, независимо от того, что делают функции, и совершенно не связано с тем, что вы используетеrandom module, так что я не понимаю, зачем вам копаться там, чтобы найти что-то, что может помочь. Это основы программирования, которые вы должны изучить в первую очередь, прежде чем пытаться работать с чужим кодом (путем импорта модулей). Да, это означает, что сначала нужно писать крайне ограниченные вещи. Karl Knechtel
@ KarlKnechtel Я сам написал этот код и сейчас беру класс программирования Python, поэтому я действительно не ценю предположение, что я брал чужой код, когда то, что я делал, было в документации по Python. В следующий раз подумай, прежде чем предполагать. Это оскорбительно. user1316212

Ваш Ответ

2   ответа
2

Используйте возвращаемые значения и параметры функции:

import random
from random import randrange

def main():
    r = random.randrange(1,13,1)
    return r

def two(r):
    if r==7 or r==11:
       print (r)
    else:
       print (r)

r = main()
two(r)

Функцияmain вычисляет случайное значение и затем возвращает его в место, где оно было вызвано. Затем вы можете сохранить возвращаемое значение в переменной (также называемойr в этом случае:r = main()). Не нужно называтьr хотя, ты можешь также назвать это как-нибудь еще.

Чтобы передать значениеtwo, вы можете передать его в качестве параметра. Как вы можете видеть вdef two(r):, функцияtwo теперь ожидает параметр (также называетсяr) и используется в этой функции. Опять же, это не нужно называтьr но кажется уместным использовать одно и то же имя.

@ lattyware Спасибо! Работало отлично! user1316212
И спасибо за объяснение! user1316212
1

в зависимости от ситуации, вы либо хотите создать класс, либо вернуть данные, а затем передать их в качестве аргумента, последний из них, вероятно, является тем, что вы хотите, учитывая ваш код, например:

def main():
  ...
  r = do_something()
  ...
  return r

def two(r):
  ...
  do_something_else(r)
  ...

r = main()
two(r)

Если это происходит внутри чего-то, что вы можете определить как сущность, вы можете сделать это в классе:

class Main():
  def main(self):
    ...
    self.r = do_something()
    ...

  def two(self):
    ...
    do_something_else(self.r)
    ...

main = Main()
main.main()
main.two()

Однако в этом случае это не нужно, поскольку вы создаете класс, который на самом деле ничего не инкапсулирует.

Спасибо за помощь и комментарий о занятиях! user1316212
Не волнуйтесь, если это ответит на ваш вопрос, не стесняйтесьпринять эт. Gareth Latty

Похожие вопросы