在Python中,一般使用str()、int()、float()等函数来进行类型转换。但是,这些要求您在开发时就知道要转换成什么类型。我尝试编写的一些Python代码的子问题如下:给定两个变量,foo和bar,找到foo的类型。(在开发时不知道,因为这是通用代码。)然后,尝试将bar转换为foo的任何类型。如果无法做到这一点,则抛出异常。例如,假设您调用执行此操作的函数conv。它的签名看起来像defconv(foo,bar):#Dostuff.它会被称为:result=conv(3.14,"2.718")#resultisnow2.718,asafloat.
python的一大优点是能够对方法和函数进行自省(introspection)。例如,要获取math.log的函数签名,您可以(在ipython中)运行此命令:In[1]:math.log?Type:builtin_function_or_methodBaseClass:StringForm:Namespace:InteractiveDocstring:log(x[,base])Returnthelogarithmofxtothegivenbase.Ifthebasenotspecified,returnsthenaturallogarithm(basee)ofx.并且看到x和可选的b
有没有办法检索运行当前python脚本的可执行文件的路径(从python脚本中)? 最佳答案 那应该做你想做的>>>importsys>>>sys.executable'C:\\Python26\\python.exe'>>>importos>>>os.path.dirname(sys.executable)'C:\\Python26' 关于python-我可以从python脚本中找到运行python脚本的可执行文件的路径吗?,我们在StackOverflow上找到一个类似的问题:
我需要检测函数是否为空定义。它可以是这样的:deffoo():pass或喜欢:deffoo(i,*arg,**kwargs):pass或喜欢:foo=lambdax:None使用“检查”模块检测它们的最优雅方法是什么?有没有比这更好的方法:defisEmptyFunction(func):e=lambda:Nonereturnfunc.__code__.co_code==e.__code__.co_code 最佳答案 您建议的方法不太有效,因为具有文档字符串的空函数的字节码略有不同。对于没有文档字符串的空函数,func.__code
有没有办法找出python函数的位置参数的名称?deffoo(arg1,arg2):passf=foo#HowdoIfindoutwantthe1stargumenttofiscalled?Iwant'arg1'asananswer 最佳答案 函数inspect.getargspec()在Python2中做你需要的。在Python3中,这已被弃用,您应该改为使用signature. 关于python-通过内省(introspection)查找位置参数的名称,我们在StackOverflo
您可以像这样获取Python对象的完全限定类名(参见thisquestion):>>>importQueue>>>q=Queue.PriorityQueue()>>>deffullname(o):returno.__module__+"."+o.__class__.__name__...>>>fullname(q)'Queue.PriorityQueue'>>>如何进行逆向操作,即将一个完全限定的类名(如'Queue.PriorityQueue')映射到其关联的类对象(Queue.PriorityQueue)? 最佳答案 您可以在2
例子:>>>try:...myapp.foo.doSomething()...exceptException,e:...print'Thrownfrom:',modname(e)Thrownfrom:myapp.util.url在上面的示例中,异常实际上是在myapp/util/url.py模块中抛出的。有没有办法获取该模块的__name__?我打算在logging.getLogger函数中使用它。 最佳答案 这应该有效:importinspecttry:some_bad_code()exceptException,e:frm=in
我有很多可调用对象,它们都正确填写了__doc__字符串,但是对它们运行帮助会生成它们类的帮助,而不是基于__doc__.我想更改它,以便在它们上运行帮助生成自定义帮助,如果它们是实际函数而不是实现__call__的类的实例,那么看起来基本上就像我会得到的帮助。在代码中,我想输出:classmyCallable:def__init__(self,doc):self.__doc__=docdef__call__(self):#dosomestuffpassmyFunc=myCallable("somedocotext")help(myFunc)看起来更像这样的输出:defmyFunc()
测试.c:#include#includestructs{chara;intb;floatc;doubled;};structs*create_struct(){structs*res=malloc(sizeof(structs));res->a=1;res->b=2;res->c=3.0f;res->d=4.0;returnres;}测试.py:fromctypesimport*classS(Structure):_fields_=[('a',c_byte),('b',c_int),('c',c_float),('d',c_double)]lib=CDLL('./test.so')c
假设我有一个Python函数f和fhelp。fhelp旨在递归调用自身。f不应被递归调用。f有没有办法判断它是否被递归调用? 最佳答案 使用traceback这个模块:>>>importtraceback>>>deff(depth=0):...printdepth,traceback.print_stack()...ifdepth>>f()0File"",line1,inFile"",line2,infNone1File"",line1,inFile"",line4,infFile"",line2,infNone2File"",li