2013-10-09 99 views
-4
def F_1(): 
    print("Hello") 

def F_2(): 
    F_1() 

def F_3(): 
    F_1() 

當我調用該函數F_2它打印「你好」 同樣的,當我調用該函數F_3 我需要停止打印你好當我打電話F_2和打印你好我叫F_3 發生可能嗎?編輯功能的行爲

如果有人可以給我的代碼

感謝名單

回答

1

當然,簡單地重新定義F_2所以它不叫F_1

def F_2(): 
    pass 

你甚至可以做到這一點有條件:

if something == otherthing: 
    def F_2(): 
     pass 

如果你想繼續看漲F_1F_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() 
0

是的,但它是非常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 

然後它不打印任何東西。