python 获取函数调用者】的更多相关文章

import traceback def _mode(): print "hi---------------------------" print traceback.extract_stack()[-2][2] def fun1(): _mode() def fun2(): _mode() if __name__ == '__main__': fun2() fun1() traceback.extract_stack() output> [('test_traceback.py…
Date: 20140223Auth: Jin 参考: http://hi.baidu.com/greysign/item/d11919d325c4c2e6b2f777bf 获取函数名python中获取函数名的情况分为内部.外部从外部的情况好获取,使用指向函数的对象,然后用__name__属性 def a(): pass a.__name__ 除此之外还可以:getattr(a,'__name__')从外部获取的方法是非常灵活的.有些同学需要从函数内部获取函数本身的名字,就需要用些技巧了. 使用…
1.使用函数的__defaults__魔术方法 demo: # coding=utf-8 def f(a,b,c=1): pass f.__defaults__ 输出结果: (1,) 2.使用inspect模块 使用inspect.getargspec获取 # coding=utf-8 import inspect def f(a,b,c=1): pass print(inspect.getargspec(f)) 输出结果: ArgSpec(args=['a', 'b', 'c'], varar…
使用 help  函数 可以查看 函数的注释内容 但是它也有点"添油加醋" 其实函数的注释被保存在 __doc__属性里面  PS 双下划线 def f(): """这里是f函数""" pass print('=======================') help(f) print('=======================') print(f.__doc__) print('===================…
Python中利用强大的threading模块可以很容易的实现多线程开发,提高运行速度.这一般是对某个进行大量计算操作的的函数进行多线程处理,然后合并各线程的结果.获取函数返回值的方法可以如下: 1). 利用multiprocessing.pool类 import time import random def test1(): # run without multi-thread t = time.time() list = [] for i in range(10000000): list.a…
Python帮助函数调试函数 用于获取对象的属性及属性值 刚接触Python,上篇 <Python入门>第一个Python Web程序--简单的Web服务器 中调试非常不方便,不知道对象详细有什么属性,包括什么值,所以写了一个函数.用于获取对象的属性及属性值 函数代码例如以下: #调试函数.用于输出对象的属性及属性值 def getAllAttrs(obj): strAttrs = '' for o in dir(obj): strAttrs =strAttrs + o + ' := ' +…
需求背景: 现在用jenkins构建自动化测试(2个job),公司现将自动化纳入到发布系统 要求每次构建成功之后,把测试结果发送给发布系统.这就需要先获取jenkins构建的结果,如果构建结束,才能发送测试结果,否则就要等待jenkins构建结束. 理解回调函数: 像这样类似:男女朋友约会结束,男方要求女方到家后发1个信息,告诉他安全到家了.就是python回调函数的应用场景.男女朋友约会结束是在主函数mainfunc中,女朋友回家这个动作由callback函数完成. 在mainfunc函数中,…
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://docs.python.org/2/library/functions.html#abs 也可以在交互式命令行通过help(abs)查看abs函数的帮助信息. 调用abs函数: >>> abs(100) 100 >>> abs(-20) 20 >>> abs(1…
装饰器内获取函数有用信息方法 .__doc__用于得到函数注释信息 .__name_用于得到函数名 在函数引用装饰器的时候,函数名会变为装饰器内部执行该函数的名字,所有在直接执行函数名加.__doc__或__name_的时候得到的是,装饰器内部函数的注释信息和名字.因为函数名被替换了. 所以想得到实际的内容,需要引用一个模块,from functools import wraps,并在装饰器函数内部再加一个@wraps的形式改变,得到实际想得到的信息. 作用是在函数加上装饰器后让能够得到真正原来…
#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat # python的函数是如何工作的 # 比方说我们定义了两个函数 def foo(): bar() def bar(): pass # 首先python解释器(python.exe)会用一个叫做PyEval_EvalFrameEx()的C语言函数去执行foo,所以python的代码是运行在C程序之上的 # 当运行foo函数时,会首先创建一个栈帧(stack frame),…