Python如何区分不同的数据类型?

2024-10-01 00:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

对不起,如果这对你来说是很不好的,但是我刚开始学习Python后学习C++和java,我想知道在世界上我怎么能在前面声明变量,比如^ {CD1>}和^ {CD2>},而没有任何^ {CD3>}或^ {CD4}}!我想,可能是因为在一个数中没有^ {CD5}},但是Python如何在C++中像^ {CD6}}那样来代替一些类似^ {CD7}}的东西?在


Tags: 声明javacd1cd2cd5cd3cd4cd6
3条回答

当然,你提到的文本对象携带(指针到;-)它们自己的类型,所以当一个名称绑定到该对象时,类型问题就不会出现——对象总是有一个类型,名称没有——只是将它委托给它所绑定的对象。在

def increase(first, second):中没有“计算”—名称increase被绑定到一个函数对象,名称first和{}被记录为参数名,并在increase被调用时被绑定(很可能在不同点绑定到不同类型的对象)。在

所以假设主体是return first + second——对increase('foo', 'bar')的调用将很高兴地返回'foobar'(将加法委托给对象,在本例中是字符串),也许稍后对increase(23, 45)的调用也将同样愉快地返回68——同样,在调用点,将加法委托给绑定到这些名称的对象,在本例中是int。如果你用不兼容的类型调用,你会得到一个异常,因为委托的加法操作无法理解这种情况——没什么大不了的!在

Python是动态类型的:所有变量都可以引用任何类型的对象。idname可以是任何东西,但实际对象的类型是int和{}。0是一个被解析为生成int对象的文本,而{}是一个生成{}对象的文本。许多对象类型没有文本,而是由可调用的(如frozenset-无法生成文本冻结集,必须调用frozenset

因此,不存在变量声明,因为您没有定义任何关于变量的内容。id = 0和{}只是赋值。在

increase返回一个int,因为这就是您在其中返回的内容;Python中没有任何内容强制它不是任何其他对象。first和{}只有当你这样做的时候才是int。在

在某种程度上,对象共享一个公共接口。您可以对它们使用相同的运算符和函数,如果它们支持特定的操作,它就可以工作。这是一种常见的,推荐的技术,使用不同的类型,表现类似的互换;这称为duck typing。例如,如果某个对象采用file对象,则可以传递cStringIO.StringIO对象,该对象支持与文件相同的方法(如read和{}),但它是完全不同的类型。这有点像Java接口,但不需要任何正式的用法,您只需定义适当的方法。在

Python使用duck类型方法-如果它走路、看起来和呱呱叫都像鸭子,那么它就是鸭子。如果您传入一个字符串,并尝试对其执行数值操作,则它将失败。在

看一下:http://en.wikipedia.org/wiki/Python_%28programming_language%29#Typinghttp://en.wikipedia.org/wiki/Duck_typing

相关问题 更多 >