我有一个变量f。如何确定其类型?这是我的代码,输入到python解释器中,显示出我在Google上发现的许多示例的成功模式都出错了。(提示:我是Python的新手。)
>>> i=2; type(i) is int
True
>>> def f():
... pass
...
>>> type(f)
<class 'function'>
>>> type(i)
<class 'int'>
>>> type(f) is function
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined
>>> f=3
>>> type(f) is int
True
使用fa函数,我尝试使用u =
str(type(f))将type(f)的返回值转换为字符串。但是当我尝试u.print()时,我收到一条错误消息。这给我提出了另一个问题。在Unix下,来自Python的错误消息会出现在stderr或stdout上吗?
检查函数类型的pythonic方法是使用isinstance
内置函数。
i = 2
type(i) is int #not recommended
isinstance(i, int) #recommended
Python包括一个types
用于检查功能的模块。
它还定义了标准Python解释器使用的某些对象类型的名称,但没有像int或str are这样的内置函数公开。
因此,要检查对象是否为函数,可以按以下方式使用类型模块
def f():
print("test")
import types
type(f) is types.FunctionType #Not recommended but it does work
isinstance(f, types.FunctionType) #recommended.
但是,请注意,对于内置函数,它将打印为false。如果您还希望包括这些内容,请检查以下内容
isinstance(f, (types.FunctionType, types.BuiltinFunctionType))
但是,如果您只想要特定的功能,请使用上面的代码。最后,如果您只关心检查它是否为函数,可调用或方法之一,则只需检查其行为是否类似于可调用函数即可。
callable(f)
问题内容: 也许这是一个愚蠢的问题,但是有没有办法找到所有返回特定类型的函数(在标准库或GOPATH中)? 例如,有许多函数使用io.Writer作为参数。现在,我想知道如何创建io.Writer,并且有很多方法可以做到这一点。但是,如何能轻松地找到所有方法而又无需猜测软件包并仔细查看所有方法以找到返回io.Writer(或我追随的其他任何类型)的方法? 编辑: 我应该扩展我的问题,以查找实现特定
问题内容: 有没有办法查看内置函数如何在python中工作?我不仅意味着如何使用它们,而且还意味着它们是如何构建的,排序或枚举等背后的代码是什么? 问题答案: 由于Python是开源的,因此你可以阅读源代码。 要找出实现了特定模块或功能的文件,通常可以打印属性。或者,你可以使用该inspect模块,请参阅的文档中的“ 检索源代码 ”部分。 对于内置的类和方法,这是不是这样,因为直白,并会返回一个类
本文向大家介绍用Python实现一个二分查找的函数。相关面试题,主要包含被问及用Python实现一个二分查找的函数。时的应答技巧和注意事项,需要的朋友参考一下 二分查找算法:简单的说,就是将一个列表先排序好,比如按照从小到大的顺序排列好,当给定一个数据,比如3,查找3在列表中的位置时,可以先找到列表中间的数li[middle]和3进行比较,当它比3小时,那么3一定是在列表的右边,反之,则3在列表的
问题内容: 好的,我知道您可以使用dir()方法列出模块中的所有内容,但是有什么方法只能查看该模块中定义的功能吗?例如,假设我的模块如下所示: 即使我使用inspect()来过滤掉内置函数,我仍然剩下任何导入的内容。例如,我会看到: [‘date’,’datetime’,’test’] 有什么办法可以排除进口?还是找出模块中定义的另一种方法? 问题答案: 您是否正在寻找这样的东西? 编辑:将变量名
问题 你想把多个数组连在一起,生成一个数组的数组。换句话说,你需要实现与 Python 中的 zip 函数类似的功能。 Python 的 zip 函数返回的是元组的数组,其中每个元组中包含着作为参数的数组中的第 i 个元素。 解决方案 使用下面的 CoffeeScript 代码: # Usage: zip(arr1, arr2, arr3, ...) zip = () -> lengthArr
本文向大家介绍Python函数参数类型*、**的区别,包括了Python函数参数类型*、**的区别的使用技巧和注意事项,需要的朋友参考一下 刚开始学习python,python相对于java确实要简洁易用得多。内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来说理解起来比较轻松。只是函数部分参数的"*"与"**",闭包