>我有以下 2 个函数:
a = 20
b = 45
def function1():
coin = np.random.randint(0, 100)
a2= a+coin
return a2
def function2():
b2= b+coin
return b2
但是,我在这里的问题如下:我想在function 2
中使用随机选择的"coin
"值(以function 1
确定)。
这里的条件是随机选择必须始终在函数 1 中完成。将此coin
值传递给function 2
而无需在function 2
内部调用function 1
的最有效方法是什么?
注意:function 1
应该只返回一个变量,即a2
。
编辑后
虽然您可以使用全局变量,但我建议使用类:
class Functions:
def __init__(self, a, b):
self.a = a
self.b = b
self.coin = 0
def function1(self):
self.coin = np.random.randint(0, 100)
a2 = self.a + self.coin
return a2
def function2(self):
b2 = self.b + self.coin
return b2
f = Functions(a=20, b=45)
f.function1()
f.function2()
这两个功能是紧密耦合的。因此,一个类似乎更适合举办它们。理想情况下,函数应该是独立的。另一方面,类的方法应该相互依赖。
旧答案
我建议对函数使用参数。这使它们独立:
def function1(a):
coin = np.random.randint(0, 100)
a2 = a+coin
return a2, coin
def function2(coin):
b2 = b+coin
return b2
a = 20
b = 45
a2, coin = function1(a)
print(function2(coin))
这一行:
return a2, coin
"返回两个结果"。实际上,它构建了一个中间元组。 还有这一行:
a2, coin = function1(a)
再次将此元组解压缩为变量。
最简单的"方法是使硬币成为全局变量。我认为这可能是需要较少更改代码的解决方案:
a = 20
b = 45
coin = 0 # good practice to always initialize vars
def function1():
global coin # will create and use "coin" from the global scope
coin = np.random.randint(0, 100)
return a+coin
def function2():
b2 = b+coin
return b2
function1()
function2()
好的,在function1() 中只有一个结果,没有类,也许你可以复古找到硬币?
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from random import randrange
a = 20
b = 45
def function1():
coin = randrange(0, 100)
a2 = a + coin
return a2
def function2(coin):
b2 = b + coin
return b2
coin = function1() - a
f2 = function2(coin)
print("coin: {}".format(coin))
print("f2: {}".format(f2))