簡體   English   中英

我可以使用 python return function 只返回值到具體的 function

[英]Can I use python return function to only return the value to the specific function

如果我有這個

def fun1:
    a = 2
    b = 3
    return a
    return b     #problem is here
def fun2:
    c = fun1()
print(fun1())

我想將 a return a為默認返回,而 fun1 將 a 返回給所有其他函數,但return b僅適用於返回 fun2 而無其他地方

您可以做的是為 function 創建一個可選參數,該參數決定返回什么值。

def fun1(arg=0):
    a = 2
    if arg != 0:
        a = 3
    return a
def fun2():
    c = fun1(1)
print(fun1())
fun2()

在這里,如果您在沒有任何 arguments 的情況下調用 fun1(),它將返回 2。但如果您給它任何 integer 參數 [例如:fun1(2) 或 fun1(1)],它將返回 3。

每當執行return a - 它退出 function fun1

所以這行return b永遠不會被執行。

您可以執行以下操作:

def fun1(return_b=False):
    a = 2
    b = 3
    if return_b:
        return b
    else:
        return a

def fun2:
    c = fun1(return_b=True)

在此處閱讀有關默認參數值的更多信息。

如果你想返回ab ,你可以返回它們的一個元組: return a, b

一個 function 一次只能返回一個 output。 這意味着如果您在問題中有多個return語句,則只會執行第一個語句,並且不會執行該語句之后編寫的任何行。

在您的示例中,您在return b之前輸入return a return a ,這意味着 function 只會返回 a 的值,而不會執行return b行。

從您對自己問題的評論中,我可以看到您想先打印,然后希望c a值為 3。為此,您可以這樣做-

def fun1():
    a = 2
    b = 3
    print(a)
    return b

def fun2():
    c = fun1()

fun1()

你只需要兩個不同的功能。

每個人都只調用fun1() ,但只有fun2()調用fun1a()

def fun1():
    a = 2
    b = 3
    return a

def fun1a():
    a = 2
    b = 3
    return b 

def fun2():
    c = fun1a()
    return c
print(fun1())
print(fun2())

這里只是回答你的奇思妙想:首先通過inspect.currentframe獲取當前幀,然后通過當前幀和inspect.getframeinfo獲取上一層調用的幀。 返回值中會記錄function名稱,通過比較function名稱可以返回不同的值。

import inspect


def fun1():
    a = 2
    b = 3
    curr_frame = inspect.currentframe()
    back_frameinfo = inspect.getframeinfo(curr_frame.f_back)
    return b if back_frameinfo.function == 'fun2' else a


def fun2():
    return fun1()


print(fun1(), fun2())    # 2 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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