python 3.2如何在函数之间传递变量中的数据

时间:2012-04-06 21:28:21

标签: python function variables python-3.x

如何存储r并将主要内容传递给两个?如果我将r =固定的话,它将打印r,但是如何将变量内容传递给r。我试过random.getstate / setstate,但它说的是“函数对象不可订阅”。

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()

2 个答案:

答案 0 :(得分: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计算随机值,然后将其返回到调用它的位置。然后,您可以将返回值存储在变量中(在本例中也称为rr = main())。它不需要被称为r,你也可以将它命名为其他东西。

要将值传递给two,您可以将其作为参数传递。正如您在def two(r):中所看到的,函数two现在需要一个参数(也称为r),并在该函数中使用它。同样,这不需要被称为r,但似乎适合使用相同的名称。

答案 1 :(得分: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()

但是,在这种情况下,这是不必要的,因为您正在创建一个实际上没有封装任何内容的类。