如果我有一个包含大量打印语句的函数:

即.

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封装一个函数来打印到变量相关推荐

  1. python函数的嵌套调用_python函数的嵌套调用

    我们之前的代码都是定义函数然后直接调用,但是没有在一个函数内调用另外一个函数,今天就感受下函数嵌套调用. 提示:如果你想当然的认为函数嵌套是在函数内部又嵌套定义一个函数这种操作的话,那么这叫做闭包.相 ...

  2. python函数type的用意_Python内置函数Type()函数一个有趣的用法

    Python内置函数Type()函数一个有趣的用法 今天在网上看到type的一段代码 ,然后查了一下文档,才知道type还有三个参数的用法. 以前只是知道type可以检测对象类型.然后发现了一个有趣的 ...

  3. python自动化开发是什么_Python自动化开发 - 函数

    本节内容 一.函数背景介绍 老板让你写一个监控程序,监控服务器的系统状况,当cpu/memory/disk等指标的使用量超过阈值时即发邮件报警,如以下代码 while True: if cpu利用率 ...

  4. python基础函数及用法意思_Python基础之函数基本用法与进阶详解

    本文实例讲述了Python基础之函数基本用法与进阶.分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数 ...

  5. python入门之函数结构函数的参数_Python 基础之函数初识与函数参数

    一.函数初识 定义:满足某一个方法 满足某一个功能#(1)功能(包裹一部分代码 实现某一个功能 达成某一个目的)#(2)可以反复调用,提高代码的复用性,提高开发效率,便于维护管理#(3)函数的基本格式 ...

  6. linux 从入参获取函数名字,C++ 函数名作为参数传递给另一个函数

    将函数名作为参数传递给另外一个函数(其实函数名是一个函数指针) 例1: int f1() { return 1; } int f2() { return 2; } void f(int f()) { ...

  7. #把函数当作参数传给另一个函数

    #把函数当作参数传给另一个函数: def foo(n):print(n)def bar (name):print("my name is %s" %name) # foo(bar) ...

  8. 成员函数的选择调用一一常成员函数 (12 分)

    成员函数的选择调用一一常成员函数 (12 分) 类中的常对象选择调用常成员函数.语法要点: 如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数, 而不能调用其他成员函数.补充完整复数类的 ...

  9. const对象只能调用const成员函数、不能调用非const成员函数;非const对象可以调用const成员函数

    引发原因: 由调用成员函数时隐式传入的当前对象的this指针引起. 1. 非const成员函数中的隐式参数:classA* this 2. const成员函数中的隐式参数:const classA* ...

最新文章

  1. Magento(麦进斗)安装问题
  2. 使用Python和Asyncio编写在线多人游戏(二)
  3. 编译执行和解释执行的区别
  4. RxJava 2.x 使用最佳实践
  5. [2dPIC调试笔记]输入参数归一化1014(1)
  6. 2019浙江省大学生网络与信息安全竞赛决赛部分WriteUp
  7. 文件压缩(Huaffman树的概念及其实现)
  8. Vue的watch和computed属性
  9. yii学习笔记--url解析
  10. SCCM 2012 R2 从入门到精通 Part11 系统推送(2)
  11. 花生油和菜籽油哪个更健康?
  12. spring-第十九篇AOP面向切面编程之增强处理的优先级
  13. char强制类型转换为int_数据类型专题之三: char类型和类型转换
  14. html h2垂直居中,css 垂直居中
  15. Qt 之 模仿 QQ登陆界面——样式篇
  16. CRA对于IE9的兼容性设置
  17. centos 关机命令_全了 Linux 常用命令大汇集
  18. UVALive - 2911 Maximum
  19. 从零搭建移动H5开发项目实战
  20. java实现加权随机,负载均衡--加权随机算法(Weight Random)

热门文章

  1. Java Web项目_order下载、运行
  2. win10 下安装、配置、启动mysql5.7
  3. 第三篇:服务消费者(Feign)(Finchley版本)V2.0_dev
  4. android studio n3710,英特尔奔腾N3710性能跑分和评测 | ZMMOO
  5. 分区裁剪 oracle,[讨论]分区表并行和剪裁的困惑
  6. mysql慢查询日志分析工具比较_MySQL慢查询日志总结 日志分析工具mysqldumpslow
  7. d0...while循环结构讲解
  8. php 数组排序 按值,php – 按值排序数组
  9. 微型计算机中的奔四指的是,2015云南省计算机等级考试二级理论考试试题及答案...
  10. 计算机管理员相关知识,计算机管理员述职报告范文