zoukankan      html  css  js  c++  java
  • 被忽略的对象

    ps:抱歉,昨天住所的网络出问题了,今天在公司把昨天的补上

     

      在之前一切皆对象一文中提到了,python 中的一切都可以看作是对象。然而在学习python的过程中,我们还是会把一些经常出现在我们眼前的对象给忽略,而通过我们自己实例出来的类的对象倒是不会搞错(这是灯下黑吗?还是越容易得手的越不珍惜?)。而python的一些语法定义中,“对象”一词貌似也只有在对类进行实例这部分内容中提到过,其他地方基本难现其影踪,就算有好像也是蜻蜓点水,只寥寥几笔。这也难怪我们会经常把其他对象给忽略了。这些被忽略的对象是我们看得见,摸得着,经常和其打交道的(只是一种形容,别太纠结逻辑哈),我们编程写代码基本绕不开它们,因为它们是组成我们程序代码的最根本的元素。它们就是python中的数据和数据结构类型,或许我们更习惯称呼它们为变量。

     

      python中被忽略的对象——数据和数据结构类型基本分为以下几类:

      数据分为:

    • 整数型(integer)   :数字的整数  
    • 浮点型(float)       : 数字带小数点
    • 字符串(string)     : 用 ‘’ 或者 “” 引用的任意文本(单引号和双引号效果一样)
    • 布尔型(boolean) :只有 True 和 False

      数据结构分为:

    • 列表 list
    • 元祖 tuple
    • 字典 dict
    • 集合 set

      接下来我将分别对每一个数据和数据结构类型做一个介绍:

      


     

     整数型,简称整型(Integer)

      整数型,顾名思义,就是整数变量;以数学的概念来说就是不带小数点的实数。python的所有整型数据都是int()类的实例,其中包括正整数和负整数。所有整数变量(标签)都继承了int()类的类属性和类方法。现以交互式命令行执行几行代码来直观了解下整型数据这个对象的一些特性。

       "a = 1"与“a = int(1)”是等效的。都是表示实例化Int()类给对象a,传参1。

      通过在交互式命令行的验证可以知道正整数和负整数都类int()的实例。

      然后,我们通过help(a)来获取a这个对象的信息。通过help(a)也可以看出对象a是类int()的实例,其继承了类Int()的类方法和类属性(关于类方法和对象方法等的区别会在之后专门写一篇博客说明),例如其继承了__add__()方法和__and__()方法(这两个方法是python的魔法方法,这个在后面的博客会进行讲解,目前只需要知道前后带两个“__”的方法是魔法方法就行了,魔法方法的特点是被动触发,或事件触发)。__add__方法支持int()类的实例对象进行加法操作,即支持对象a进行“+”操作。同理,__and__()方法支持对象a进行逻辑“与”操作。实操如下:

      对于“a + b”的结果应该没什么疑惑,反而小伙伴可能会对“and”操作的结果有些不解,其实之前有编程学习经历的话不然理解:所有大于“0”的数默认为"True",所有小与“0”的数默认为“False”,再结合python给我们的回答就明白为什么“and”操作会得出这些结果了:

      看倒数第二段的解释:“x and y”的表达式会先对“x”进行判定,如果“x”为假(即小于等于0),则“and”操作返回的结果为“x”本身;否则,会对"y"进行判断,如果“y”为假则返回“y”本身(其中"x"于"y"均为真或均为假时则返回接近0的那个对象)。

     ps:在之后学习了类的相关知识后可以通过子类继承int()再覆盖__add__()方法的方式来验证整型数据对象的__add__()方法。也可以以此对__add__()(整数的加法运算)的运算模式进行各种DIY。


     

    浮点型(float)

       浮点数说白了就是小数,浮点数的运算就是小数的运算。浮点数变量(标签)同样是一个对象(准确的说是标签所引用的是一个对象),具体可以看下其在交互式命令行中的验证:

      从执行结果可以看出浮点数据是类float()的一个实例对象。浮点数比较需要注意的就是精度了,不过python浮点数的精度一般足够支持我们的普通运算了,当然个别对此要求比较高的可以导入相应的模块。除了以上表示,浮点数的表示还有一种实现方法,那就是科学计数法。

      1888e-3其实就是相当于“1888X10^-3”,1888e2则相当于“1888X10^2”

     


     

    字符串(string)

      python把C语言中的字符Char和字符串String统一起来为字符串,并不具体区分单个字符和字符串的区别。同样的,python不区分以双引号“”或单引号‘’括起来的内容,使用“”和‘’的效果是一致的。让我们通过交互式命令行来看看python中的字符串数据的具体信息:

     

      因为字符串的特殊性,无法使用help(对象)的方式来查询其具体信息(这一点在上一篇博客——学习交互式命令行的使用中已进行过讲解)。既然已经知道每一个字符串数据都是类str()的实例,那么我们就直接使用help(str)来查询字符串对象的具体信息。

      str()类中的一些python的内置方法(字符串对象的方法),比如isalpha()用来判断字符串是否全为字母,isdigit()用来判断字符串是否全为数字,可以方便我们对字符串进行各种操作,增强了我们处理文本的能力;因字符串的一些内置方法和之后要介绍的数据结构的内置方法功能基本相同,故这部分内容放在后面一起介绍。

     


     

    布尔型(boolean)

      python中的布尔型数据只有两个对象:True 和 False,同时这个两个对象也是python的关键词。True和False通常结合逻辑运算符(>,<,==,!=...)进行判断操作,常用于python的选择语句(if)和循环语句(while)中。

      这边有个地方要特别指出下,类bool()是类int()的一个子类,在上图中help(bool)的第一段的最后一句有做说明。

     

    ps:由于数据结构类型的内容篇幅过大,故特地放在下一篇博客中进行介绍(当然,我懒也是其中一个因素)

    其中的一些知识可能会涉及到之后才会接触的内容,故我会简单介绍,一笔带过,在之后的博客中再重点介绍。一些比较特别需要注意的我也会另开一篇博客进行专题介绍。 

     

     

     

  • 相关阅读:
    问卷调查--来自20145320周岐浩
    第一次尝试编写java
    写在开始编写Java之前(2)——Java的环境
    写在开始编写Java之前(1)——Java的跨平台性
    一步一步实现JS拖拽插件
    序列图像三维重建 学习流水账
    linux配置虚拟机网络环境(老师要求的host-only)
    递归函数时间复杂度分析(转)
    什么是static?什么是final?
    复习java数据库操作的总结
  • 原文地址:https://www.cnblogs.com/3fman/p/9178146.html
Copyright © 2011-2022 走看看