![](/img/trans.png)
[英]Python - how to share variables between functions(not using global var)
[英]How to share values between functions in Python?
我有以下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))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.