簡體   English   中英

如何在Python中的函數之間共享值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM