[英]How can I get a function in Python 3 to return a value that I can use in another 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)
在此處閱讀有關默認參數值的更多信息。
如果你想返回a
和b
,你可以返回它們的一個元組: 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.