我有以下两个功能:
a = 20
b = 45
def function1():
coin = np.random.randint(0, 100)
a2= a+coin
return a2
def function2():
b2= b+coin
return b2
但是,我的问题如下:我想在coin
内使用随机选择的“function 1
”值(在function 2
中确定)。
这里的条件是随机选择必须始终在函数1中完成。将coin
值传递给function 2
而不必在内部调用function 1
的最有效方法是什么? function 2
?
注意:function 1
只应返回一个a2
变量。
答案 0 :(得分:4)
虽然您可以使用全局变量,但我建议您使用类:
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)
再次将此元组解包为变量。
答案 1 :(得分:2)
"最容易"方法是让硬币成为全球变量。我认为这可能是需要对代码进行较少更改的解决方案:
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()
答案 2 :(得分:0)
确定只有一个结果在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))