python(10)基础总结

瘦欲@ 提交于 2019-12-22 17:04:11

现在我们已经了解了python的基本概念,现在来进行回顾一下之前学过的东西
我们之前提到一句话,“Everything is Object”. 那么我们就深入体验一下这句话。
首先,我们要介绍两个内置函数,dir()和help() dir()用来查询一个类或者对象所包含的属性(变量属性和方法属性)。你可以尝试一下

>>>print dir(list) 

help()用来查询的说明文档。你可以尝试一下

>>>print help(list) 

(list是Python内置的一个类,对应于我们之前讲解过的表)

1. list是一个类

在上面以及看到,表是Python已经定义好的一个类。当我们新建一个表时,比如:

>>>nl = [1,2,5,3,5] 

实际上,nl是类list的一个对象。 我们先实验一些list的方法

>>>print nl.count(5)       # 计数,看总共有多少个5 
>>>print nl.index(3)       # 查询 nl 的第一个3的下标 >>>nl.append(6)            # 在 nl 的最后增添一个新元素6 >>>nl.sort()               # 对nl的元素排序 
>>>print nl.pop()          # 从nl中去除最后一个元素,并将该元素返回。 
>>>nl.remove(2)            # 从nl中去除第一个2 
>>>nl.insert(0,9)          # 在下标为0的位置插入9

列举了这么多,就是让大家对list作为一个类有一个概念。

2. 通过list了解:运算符是特殊方法

当你使用dir(list)的时候,能看到一个属性,是__add__。从形式上看是特殊方法(下划线, 下划线),那么它特殊在哪里呢? 这个方法定义"+"运算符对于list的意义,也就是,当你将一个list的对象和另一个list对象相加时所会进行的操作。

>>>print [1,2,3] + [5,6,9]

运算符,比如+, -, >, <, 以及下标引用[start:end]等等,从根本上都是定义在类内部的方法。
我们先尝试一下

>>>print [1,2,3] - [3,4] 

会有错误信息,说明该运算符“-”没有定义。 现在我们继承list类,添加对"-"的定义

class superList(list):   
    def __sub__(self, b):       
        a = self[:]     # 这里,self是supeList的对象。由于superList继承于list,它可以利用        
        b = b[:]                
        while len(b) > 0:            
            element_b = b.pop()            
            if element_b in a:                
                a.remove(element_b)        
        return a
print superList([1,2,3]) - superList([3,4]) 

(说明:内置函数len()用来返回list所包含的元素的总数)

内置函数__sub__()定义了“-”的操作:从第一个表中去掉第二个表中出现的元素。 (教程最后也会给出一个特殊方法的清单)
(如果__sub__()已经在父类中定义,你又在子类中定义了,那么子类的对象会参考子类的 定义,而不会载入父类的定义。任何其他的属性也是这样。)
定义运算符对于复杂的对象非常有用。举例来说,人类有多个属性,比如姓名,年龄和身 高。我们可以把人类的比较(>, <, =)定义成只看年龄。这样就可以根据自己的目的,将原本不存在的运算增加在对象上了。

3.

现在,你大概已经对Python已经有了一个基本概念。这也是这个快速教程的基础部分的 目的所在。你很可能跃跃欲试,想写一些程序练习一下。相信这样做会对你很有好处。但有 一点请注意。Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的 对象。我们已经看到了内置的比如说list,还有tuple等等。它们用起来很方便。在Python的 标准库里,还有大量可以用于操作系统互动,Internet开发,多线程,文本处理的对象。而 在所有的这些的这些的基础上,又有很多外部的库包,定义了更丰富的对象,比如numpy, tkinter, django等用于科学计算,GUI开发,web开发的库,定义了各种各样的对象。对于一 般用户来说,使用这些库,要比自己去从头开始容易得多(所谓巨人的肩膀上)。

总结:

len() dir() help()
我们之前所说的数据结构list(表)实际上是一个对象,它有多个属性。 (运算符是方法)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!