日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数的封装调用_Python封装一个函数来打印到变量

發布時間:2025/3/8 python 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数的封装调用_Python封装一个函数来打印到变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果我有一個包含大量打印語句的函數:

即.

def funA():

print "Hi"

print "There"

print "Friend"

print "!"

我想做的是這樣的事情

def main():

##funA() does not print to screen here

a = getPrint(funA()) ##where getPrint is some made up function/object

print a ##prints what funA would normally print at this step

因此,當調用funcA時,它不會進行任何打印,而是輸出到對象.然后我打印對象以獲得結果.有辦法做到這一點嗎?我也不想觸摸原來的功能.

我希望這是有道理的.

解決方法:

只要您不介意微小的語法差異,您幾乎可以完全按照自己的意愿行事:

import cStringIO

import sys

def getPrint(thefun, *a, **k):

savstdout = sys.stdout

sys.stdout = cStringIO.StringIO()

try:

thefun(*a, **k)

finally:

v = sys.stdout.getvalue()

sys.stdout = savstdout

return v

微小的區別在于你必須調用getPrint(funA),而不是getPrint(funA()) – 也就是說,你必須傳遞函數對象本身,而不會在getPrint發揮其魔力之前立即調用它的尾隨括號.

如果你絕對堅持那些額外的括號,那么getPrint不能做所有必要的準備工作,并且必須通過其他代碼來補充以正確準備(我強烈建議丟失額外的括號,從而能夠封裝getPrint中的所有功能!) .

標簽:python

來源: https://codeday.me/bug/20190713/1452379.html

總結

以上是生活随笔為你收集整理的python函数的封装调用_Python封装一个函数来打印到变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。