-4
def F_1():
print("Hello")
def F_2():
F_1()
def F_3():
F_1()
當我調用該函數F_2它打印「你好」 同樣的,當我調用該函數F_3 我需要停止打印你好當我打電話F_2和打印你好我叫F_3 發生可能嗎?編輯功能的行爲
如果有人可以給我的代碼
感謝名單
def F_1():
print("Hello")
def F_2():
F_1()
def F_3():
F_1()
當我調用該函數F_2它打印「你好」 同樣的,當我調用該函數F_3 我需要停止打印你好當我打電話F_2和打印你好我叫F_3 發生可能嗎?編輯功能的行爲
如果有人可以給我的代碼
感謝名單
當然,簡單地重新定義F_2
所以它不叫F_1
。
def F_2():
pass
你甚至可以做到這一點有條件:
if something == otherthing:
def F_2():
pass
如果你想繼續看漲F_1
從F_2
,而只是抑制前者的輸出,用這個小上下文管理器:
import sys
class suppressing_output(object):
def __enter__(self):
self.stdout, sys.stdout = sys.stdout, self
return self
def __exit__(self, *args):
sys.stdout = self.stdout
def write(self, data):
pass
用法:
def F_2():
with suppressing_output():
F_1()
是的,但它是非常OBSCURE!
import sys
from io import StringIO
def F_1():
print("Hello")
def F_2():
F_1()
def F_3():
F_1()
訣竅是重定向sys.stdout
無處當你調用它。
_stdout = sys.stdout #make a copy
sys.stdout = StringIO()
F_2()
sys.stdout = _stdout #restore
然後它不打印任何東西。