Python 网络爬虫实战
上QQ阅读APP看书,第一时间看更新

2.1 Python变量类型

Python的标准数据类型只有5个,分别是数字、字符串、列表、元祖、字典。看起来比C语言的数据类型少了很多,但该有的功能一个不少。即使C语言的代表作链表和二叉树,Python同样能应付自如。

2.1.1 数字

Python支持4种不同的数值类型:

1. int类型

有符号整数,就是C语言中所指的整型,也就是数学中的整数。它的大小与安装的解释器的位数有关。如果赋值超出了这个范围,则自动转换成了Long长整型。查看当前系统下的Int最大值,使用Putty登录Linux,执行命令:

        python
        import sys
        print sys.maxint

执行结果,如图2-1所示。

图2-1 求int最大值

与C语言不同的是,Python给变量赋值时不需要预先声明变量类型。也就是说,在给变量赋值时小于9223372036854775807的数字会被默认为int类型。超过了,则自动变成Long类型。

另外,八进制数字、十六进制数字都是属于int(Long)类型的。

2. Long类型

长整数,超过int类型的整数默认转换Long,一般来说int足够用了。Long类型没有限制大小,想赋值多大都行,只要内存足够大就可以了。在Windows中打开cmd.exe,执行命令:

        python
        type(999999999999999999999999999999)

执行结果如图2-2所示。

图2-2 Python long int

3. Float类型

浮点型实数,基本和C语言的浮点型一致,也就是数学中带小数点的数,不包括无限小数,不区分精度。只要是带小数点的数都可以看作浮点型数据。

4. Complex类型

复数,在C语言中是需要自定义的一个数据类型。在Python中把它单独列出作为基本数据类型。复数包含一个有序对,表示为a + bj,其中,a是实部,b是复数的虚部。

【示例2-1】用一个简单的程序showNumType.py来显示Python的数字类型。使用Putty连接到Linux,执行命令:

        mkdir -pv code/crawler
        cd ! $
        vi showNumType.py

showNumType.py代码如下:

          1 #! /usr/bin/env python
          2 #-*- coding: utf-8-*-
          3 __author__ = 'hstking hstking@hotmail.com'
          4
          5 class ShowNumType(object):
          6    def __init__(self):
          7        self.showInt()
          8        self.showLong()
          9        self.showFloat()
         10        self.showComplex()
         11
         12    def showInt(self):
         13        print(u"##########显示整型#############")
         14        print(u"十进制的整型")
         15        print("%-20d, %-20d, %-20d" %(-10000,0,10000))
         16        print(u"二进制的整型")
         17        print("%-20s, %-20s, %-20s" %(bin(-10000), bin(0), bin(10000)))
         18        print(u"八进制的整型")
         19        print("%-20s, %-20s, %-20s" %(oct(-10000), oct(0), oct(10000)))
         20        print(u"十六进制的整型")
         21        print("%-20s, %-20s, %-20s" %(hex(-10000), hex(0), hex(10000)))
         22
         23    def showLong(self):
         24        print(u"##########显示长整型#############")
         25        print(u"十进制的整型")
         26        print("%-20Ld, %-20Ld, %-20Ld" %(-
10000000000000000000,0,10000000000000000000))
         27        print(u"八进制的整型")
         28        print("%-20s, %-20s, %-20s" %(oct(-
10000000000000000000), oct(0), oct(10000000000000000000)))
         29        print(u"十六进制的整型")
         30        print("%-20s, %-20s, %-20s" %(hex(-
10000000000000000000), hex(0), hex(10000000000000000000)))
         31
         32    def showFloat(self):
         33        print(u"##########显示浮点型#############")
         34        print("%-20.10f, %-20.10f, %-20.10f" %(-100.001,0,100.001))
         35
         36    def showComplex(self):
         37                print(u"##########显示复数型#############")
         38        print(u"变量赋值复数var = 3 + 4j")
         39        var = 3 + 4j
         40        print(u"var的实部是:%d\tvar的虚部是:%d" %(var.real, var.imag))
         41
         42
         43 if __name__ == '__main__':
         44   showNum = ShowNumType()

在Putty下执行命令:

          python showNumType.py

得到结果如图2-3所示。

图2-3 run showNumType.py

showNumType.py是Linux下以C++风格写的程序,展示如何标准输出各种基本数字类型。

2.1.2 字符串

在Python中,字符串是被定义为在引号(或双引号)之间的一组连续的字符。这个字符可以是键盘上的所有可见字符,也可以是不可见的如“回车符”“制表符”等等。

字符串的操作方法很多,这里只选出最典型的几种。

(1)字符串大小写转换

● S.lower() :字母大写转换成小写。

● S.upper() :字母小写转换成大写。

● S.swapcase():字母大写转换小写,小写转换成大写。

● S.title():将首字母大写。

(2)字符串搜索、替换

● S.find(substr, [start, [end]]):返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1, start和end作用就相当于在S[start:end]中搜索。

● S.count(substr, [start, [end]]) :计算substr在S中出现的次数。

● S.replace(oldstr, newstr, [count]):把S中的oldstar替换为newstr, count为替换次数。

● S.strip([chars]):把S左右两端chars中有的字符全部去掉,一般用于去除空格。

● S.lstrip([chars]):把S左端chars中所有的字符全部去掉。

● S.strip([chars]):把S左端chars中所有的字符全部去掉。

(3)字符串分割、组合

● S.split([sep, [maxsplit]]):以sep为分隔符,把S分成一个list。maxsplit表示分割的次数,默认的分割符为空白字符。

● S.join(seq):把seq代表的序列— 字符串序列,用S连接起来。

(4)字符串编码、解码

● S.decode([encoding]):将以encoding编码的S解码成unicode编码。

● S.encode([encoding]):将以unicode编码的S编码成encoding, encoding可以是gb2312、gbk、big5……

(5)字符串测试

● S.isalpha():S是否全是字母,至少有一个字符。

● S.isdigit() :S是否全是数字,至少有一个字符。

● S.isspace():S是否全是空白字符,至少有一个字符。

● S.islower():S中的字母是否全是小写。

● S.isupper():S中的字母是否全是大写。

● S.istitle():S是否是首字母大写的。

【示例2-2】编写一个showStrOperation.py来实验一下。这次在Windows下以IDLE为IDE来编写程序。showStrOperation.py代码如下:

        #! /usr/bin/env python
        #-*- coding: GBK -*-
        ''’因为Windows默认的中文字符编码是GBK,所以…'''
        __author__ = 'hstking hstking@hotmail.com'

        def strCase():
            "字符串大小写转换"
            print "演示字符串大小写转换"
            print "演示字符串S赋值为:'  ThIs is a PYTHON  '"
            S = '  ThIs is a PYTHON  '
            print "大写转换成小写:\tS.lower() \t= %s"%(S.lower())
            print "小写转换成大写:\tS.upper() \t= %s"%(S.upper())
            print "大小写转换:\t\tS.swapcase() \t= %s"%(S.swapcase())
            print "首字母大写:\t\tS.title() \t= %s"%(S.title())
            print '\n'

        def strFind():
            "字符串搜索、替换"
            print "演示字符串搜索、替换等"
            print "演示字符串S赋值为:'  ThIs is a PYTHON  '"
            S = '  ThIs is a PYTHON  '
            print "字符串搜索:\t\tS.find('is') \t= %s"%(S.find('is'))
            print "字符串统计:\t\tS.count('s') \t= %s"%(S.count('s'))
            print "字符串替换:\t\tS.replace('Is', 'is') = %s"%(S.replace('Is', 'is'))
            print "去左右空格:\t\tS.strip() \t=#%s#"%(S.strip())
            print "去左边空格:\t\tS.lstrip() \t=#%s#"%(S.lstrip())
            print "去右边空格:\t\tS.rstrip() \t=#%s#"%(S.rstrip())
            print '\n'

        def strSplit():
            "字符串分割、组合"
            print "演示字符串分割、组合"
            print "演示字符串S赋值为:'  ThIs is a PYTHON  '"
            S = '  ThIs is a PYTHON  '
            print "字符串分割:\t\tS.split() \t= %s"%(S.split())
            print "字符串组合1: '#'.join(['this', 'is', 'a', 'python']) \t=
    %s"%('#'.join(['this', 'is', 'a', 'python']))
            print "字符串组合2: '$'.join(['this', 'is', 'a', 'python']) \t=
    %s"%('$'.join(['this', 'is', 'a', 'python']))
            print "字符串组合3: ' '.join(['this', 'is', 'a', 'python']) \t= %s"%('
    '.join(['this', 'is', 'a', 'python']))
            print '\n'
        def strCode():
            "字符串编码、解码"
            print "演示字符串编码、解码"
            print "演示字符串S赋值为:’编码解码测试’"
            S = ’编码解码测试’
            print "GBK编码的S \t = %s"%(S)
            print "GBK编码的S转换unicode编码"
            print "S.decode('GBK')= %s"%(S.decode("GBK"))
            print "GBK编码的S转换成utf8"
            print "S.decode('GBK').encode('utf8') =
    %s"%(S.decode("GBK").encode("utf8"))
            print "注意:不管是编码还是解码针对的都是unicode字符编码,\n所以要编码或者解码前
    必须先将源字符串转换成unicode编码格式"
            print '\n'

        def strTest():
            "字符串测试"
            print "演示字符串测试"
            print "演示字符串S赋值为:'abcd'"
            S1 = 'abcd'
            print "测试S.isalpha() = %s"%(S1.isalpha())
            print "测试S.isdigit() = %s"%(S1.isdigit())
            print "测试S.isspace() = %s"%(S1.isspace())
            print "测试S.islower() = %s"%(S1.islower())
            print "测试S.isupper() = %s"%(S1.isupper())
            print "测试S.istitle() = %s"%(S1.istitle())

        if __name__ == '__main__':
              strCase()
              strFind()
              strSplit()
              strCode()
              strTest()

打开Windows的命令行工具(cmd.exe),执行命令:

        python showStrOperation.py

得到结果如图2-4所示。

图2-4 run showStrOperation.py

与showNumType.py不同,showStrOperation.py是在Windows下以C语言的风格编写的。实际上这两个程序并没有什么区别,写哪种风格看个人习惯。唯一的区别就是Windows默认的是GBK编码,所以showStrOperation.py声明的是#-*- coding:GBK -*-;而Linux默认的是utf8编码,所以showNumType.py声明的是#-*- coding:utf8-*-。

提示

字符串也可以看成一个不可修改的字符列表。所以,大部分用来操作列表的方法(不涉及修改列表元素的)同样可以用来操作字符串。

2.1.3 列表

列表是Python最常用的变量类型。列表是一个可变序列,序列中的每个元素都分配一个数字即它的位置,或者叫索引。第一个索引是0,第二个索引是1,依此类推。列表中的元素可以是数字、字符串、列表、元组、字典……Python使用中括号 [ ] 来解析列表,给一个变量赋值为空列表。很简单,执行命令var = []就可以了。

列表的基本操作很简单,常用的操作一般是创建列表、插入数据、追加数据、访问数据、删除数据。下面实验一下:

创建列表,直接赋值即可。访问列表只需要列表名和列表中元素的下标即可。创建一个字符的列表,执行命令:

        L1 = ['a', 'b', 'c', 'd', 'e']
        L1[0]
        L1[1]
        L1[4]
        L1[5]

执行结构如图2-5所示。

图2-5 创建列表

如图2-5所示,如果访问超出范围,Python则会抛出一个异常IndexError。如果只是创建一个纯字符的列表,无须一个个地输入字符,有个更简单的方法,执行命令L1 =list(‘abcde')即可。

插入、追加、删除列表数据也很简单。执行命令:

        L1.insert(0,0)
        L1.insert(-1,100)
        L1.append('python')
        L1.pop(3)
        L1.pop()

执行结果如图2-6所示。

图2-6 插入、追加、删除数据

对列表最常用的操作是列表分片。分片可以简单地理解为将一个列表分成几块。它的操作方法是list[index1:index2[:step]]。先创建一个较长的数字列表做这个分片示例,执行命令:

        L2 = []
        for i in xrange(0,101):
         L2.append(i)
        L2

这样就创建了一个包含了从0~100,共101个数字的列表,如图2-7所示。

图2-7 创建数字列表

列表切片其实和访问列表元素很相似。例如,要访问列表L2的第10个元素,那么就应该是L2[10]就可以了。如果要访问列表L2的第10到20个元素呢?很简单,L2[10:21]就可以了。至于list[index1:index2[:step]]中的step是步长。实验一下就清楚了,执行命令:

        L2[0:21]
        L2[21:41]
        L2[81:100]
        L2[0:21:1]
        L2[0:21:2]
        L2[0:21:3]
        L2[0:21:4]
        L2[0:21:5]

执行结果如图2-8所示。

图2-8 列表分片

【示例2-3】写个简单的程序showList.py验证一下。打开Putty连接到Linux,执行命令:

        cd code/crawler
        vi showList.py

showList.py的代码如下:

          1 #! /usr/bin/env python
          2 #-*- coding: utf-8-*-
          3 __author__ = 'hstking hstking@hotmail.com'
          4
          5 class ShowList(object):
          6     def __init__(self):
          7         self.L1 = []
          8         self.L2 = []
          9
         10         self.createList()  #创建列表
         11         self.insertData()  #插入数据
         12         self.appendData()  #追加数据
         13         self.deleteData()  #删除数据
         14         self.subList()  #列表分片
         15
         16     def createList(self):
         17         print("创建列表:")
         18         print("L1 = list('abcdefg')")
         19         self.L1 = list('abcdefg')
         20         print("L2 = []")
         21         print("for i in xrange(0,10):")
         22         print("\tL2.append(i)")
         23         for i in xrange(0,10):
         24            self.L2.append(i)
         25         print("L1 = "),
         26         print(self.L1)
         27         print("L2 = "),
         28         print(self.L2)
         29         print('\n')
         30
         31     def insertData(self):
         32         print(u"插入数据")
         33         print(u"L1列表中第3个位置插入数字100,执行命令:L1.insert(3,100)")
         34         self.L1.insert(3,100)
         35         print("L1 = "),
         36         print(self.L1)
         37         print(u"L2列表中第10个位置插入字符串’python',执行命令:
L2.insert(10, 'python')")
         38         self.L2.insert(10, 'python')
         39         print("L2 = "),
         40         print(self.L2)
         41         print('\n')
         42
         43      def appendData(self):
         44         print(u"追加数据")
         45         print(u"L1列表尾追加一个列表[1,2,3],执行命令L1.append([1,2,3]")
         46         self.L1.append([1,2,3])
         47         print("L1 = "),
         48         print(self.L1)
         49         print(u"L2列表尾追加一个元组('a', 'b', 'c'),执行命令
L1.append(('a', 'b', 'c')")
         50         self.L2.append(('a', 'b', 'c'))
         51         print("L2 = "),
         52         print(self.L2)
         53         print('\n')
         54
         55      def deleteData(self):
         56         print(u"删除数据")
         57         print(u"删除L1的最后一个元素,执行命令L1.pop()")
         58         self.L1.pop()
         59         print("L1 = "),
         60         print(self.L1)
         61         print(u"删除L1的第1个元素,执行命令L1.pop(0)")
         62         self.L1.pop(0)
         63         print("L1 = "),
         64         print(self.L1)
         65         print(u"删除L2的第4个元素,执行命令L1.pop(3)")
         66         self.L2.pop(3)
         67         print("L2 = "),
         68         print(self.L2)
         69         print('\n')
         70
         71      def subList(self):
         72         print(u"列表分片")
         73         print(u"取列表L1的第3到最后一个元素组成的新列表,执行命令L1[2:]")
         74         print(self.L1[2:])
         75         print(u"取列表L2的第2个到倒数第2个元素组成的新列表,步长为2,执行命>
      令L2[1:-1:2]")
         76         print(self.L2[1:-1:2])
         77         print('\n')
         78
         79
         80 if __name__ == '__main__':
         81    print("演示列表操作:\n")
         82    sl = ShowList()

输入:wq,保存showList.py。showList.py显示了Python列表的基本功能——列表的创建、插入、追加、分片等。执行命令:

        python showList.py

得到的结果如图2-9所示。

图2-9 run showList.py

列表还有很多其他的函数和操作方法,如有兴趣可参考官方文档和google。列表和元组非常相似,掌握了列表,就基本掌握了元组。列表,是Python编程中必不可少的一部分。

2.1.4 元组

Python的元组与列表非常相似,不同之处在于元组的元素是不可修改,它是一个不可变序列。列表使用[]来声明,元组使用()声明。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。创建一个空元组,执行命令var = ()。因为元组中元素是不可修改的,所以列表中的操作方法insert、append、pop等操作对于元组这些都没有。又因为元组与列表的高度相似性,列表的切片对元组是完全适用的(切片并不改变原始数据),所以只需要记住一个原则,列表中修改元素值的操作元组都不可用,列表中不修改元素值的操作元组基本上都可以用。

元组和列表是可以互相转换的。使用tuple(list)可以将一个列表转换成元组,反过来使用list(tuple)也可以将一个元组转换成列表。

【示例2-4】编写一个showTuple来实验一下。打开Putty连接到Linux,执行命令:

        cd code/crawler
        vi showTuple.py

showTuple.py的代码如下:

          1 #! /usr/bin/env python
          2 #-*- coding: utf-8-*-
          3 __author__ = 'hstking hstking@hotmail.com'
          4
          5 class ShowTuple(object):
          6    def __init__(self):
          7        self.T1 = ()
          8        self.createTuple()  #创建元组
          9        self.subTuple(self.T1)  #元组分片
         10        self.tuple2List(self.T1)  #元组、列表转换
         11
         12    def createTuple(self):
         13        print(u"创建元组:")
         14        print(u"T1 = (1,2,3,4,5,6,7,8,9,10)")
         15        self.T1 = (1,2,3,4,5,6,7,8,9,10)
         16        print(u"T1 = "),
         17        print(self.T1)
         18        print('\n')
         19
         20    def subTuple(self, Tuple):
         21        print(u"元组分片:")
         22        print(u"取元组T1的第4个到最后一个元组组成的新元组,执行命令T1[3:]")
         23        print(self.T1[3:])
         24        print(u"取元组T1的第2个到倒数第2个元素组成的新元组,步长为2,执行命令
    T1[1:-1:2]")
         25        print(self.T1[1:-1:2])
         26        print('\n')
         27
         28    def tuple2List(self, Tuple):
         29        print(u"元组转换成列表:")
         30        print(u"显示元组")
         31        print(u"T1 = "),
         32        print(self.T1)
         33        print(u"执行命令L2 = list(T1)")
         34        L2 = list(self.T1)
         35        print(u"显示列表")
         36        print(u"L2 = "),
         37        print(L2)
         38        print(u"列表追加一个元素100后,转换成元组。执行命令L2.append(100)
      tuple(L2)")
         39        L2.append(100)
         40        print(u"显示新元组")
         41        print(tuple(L2))
         42
         43
         44 if __name__ == '__main__':
         45    st = ShowTuple()

输入:wq,保存showTuple.py。showTuple.py显示了Python元组的创建、分片和转换。执行命令:

        python showTuple.py

得到的结果如图2-10所示。

图2-10 run showTuple.py

因为元组和列表高度相似,绝大部分场合都可以用列表来替代元组。

提示

元组和列表不同仅在于一个可修改,一个不可修改。其他方面几乎没什么区别。由于元组不可修改的特性,一般在函数中需要返回多个返回值时,可以将这些返回值放入一个元组中返回。

2.1.5 字典

从某种意义上来说,字典和列表也很相似。字典使用的是{},列表使用的是[],元素分隔符都是逗号。所不同的是列表的索引只是从0开始的有序整数,不可重复;而字典的索引实际上在字典里应该叫键。虽然字典中的键和列表中的索引一样是不可重复的,但键是无序的,也就是说字典中的元素是没有顺序而言的。字典中的元素任意排列都不影响字典的使用。

字典的键可以是数字、字符串、列表、元组……几乎什么都可以,一般用字符串来做键,键与键值用冒号分割。在列表中是通过索引来访问元素,而在字典中是通过键来访问键值。因为字典按“键”寻值而不同于列表的按“索”寻值,所以字典的操作方法与列表稍有区别。

首先创建一个字典实验一下,执行命令:

        ironMan = {'name':'tony stark', 'age':47, 'sex':'male'}

这样就建立了一个简单的IronMan字典。因为字典的键值是无序的,所以插入一个数据无须insert之类的方法。直接定义即可,执行命令:

        ironMan['college'] = 'NYU'
        ironMan['Nation'] = 'America'

如需添加资料,只需要继续这样添加即可。如果发现资料有误,修改字典,同样也是直接定义,执行命令:

        ironMan['college'] = 'MIT'

如果要删除某个元素,可以使用del命令。del命令可以理解为取消分配给变量的内存空间。执行命令:

        del ironman['Nation']

del命令不只是可以删除字典的元素,类似字典元素、用户定义的变量都可以用del来删除。它可以删除数字变量、字符串变量、列表、元组、字典等等。

字典还有一些独特的操作。以下是字典中最常用的操作:

● dict.items():返回一个包含所有(键,值)元组的列表。

● dict.values():返回一个包含字典所有value的列表。

● dcit.keys():返回一个包含字典所有key的列表。

● dict.clear():删除字典中所有的元素。

● dict.get(key):返回字典中key所对应的值。

【示例2-5】编写一个showDict来实验一下。打开Putty连接到Linux,执行命令:

        cd code/crawler
        vi showDict.py

showDict.py的代码如下:

      1 #! /usr/bin/env python
      2 #-*- coding: utf-8-*-
      3 __author__ = 'hstking hstking@hotmail.com'
      4
      5 class ShowDict(object):
      6    ''’该类用于展示字典的使用方法 '''
      7    def __init__(self):
      8        self.spiderMan = self.createDict()  #创建字典
      9        self.insertDict(self.spiderMan)  #插入元素
     10        self.modifyDict(self.spiderMan)  #修改元素
     11        self.operationDict(self.spiderMan)  #字典操作
     12        self.deleteDict(self.spiderMan)  #删除元素
     13
     14    def  createDict(self):
     15        print(u"创建字典:")
     16        print(u"执行命令spiderMan = {'name':'Peter
Parker', 'sex':'male', 'Nation':'Americ', 'college':'MIT'}")
     17          spiderMan = {'name':'Peter
Parker', 'sex':'male', 'Nation':'Americ', 'college':'MIT'}
     18        self.showDict(spiderMan)
     19        return spiderMan
     20
     21    def  showDict(self, spiderMan):
     22        print(u"显示字典")
     23        print(u"spiderMan = "),
     24        print(spiderMan)
     25        print('\n')
     26
     27    def  insertDict(self, spiderMan):
     28        print(u"字典中添加键age,值为31")
     29        print(u"执行命令spiderMan['age'] = 31")
     30        spiderMan['age'] = 31
     31        self.showDict(spiderMan)
     32
     33    def  modifyDict(self, spiderMan):
     34        print(u"字典修改键’college’的值为’Empire State University'")
     35        print(u"执行命令spiderMan['college'] = 'Empire State University'")
     36        spiderMan['college'] = 'Empire State University'
     37        self.showDict(spiderMan)
     38
     39    def operationDict(self, spiderMan):
     40        print(u"字典的其他操作方法")
     41        print(u"###########################")
     42        print(u"显示字典所有的键,keyList = spiderMan.keys()")
     43        keyList = spiderMan.keys()
     44        print(u"keyList = "),
     45        print(keyList)
     46        print('\n')
     47        print(u"显示字典所有键的值,valueList = spiderMan.values()")
     48        valueList = spiderMan.values()
     49        print(u"valueList = "),
     50        print(valueList)
     51        print('\n')
     52        print(u"显示字典所有键和值的元组,itemList = spiderMan.items()")
     53        itemList = spiderMan.items()
     54        print(u"itemList = "),
     55        print(itemList)
     56        print('\n')
     57        print(u"取字典中键为college的值,college =
spiderman.get('college')")
     58        college = spiderMan.get('college')
     59        print(u"college = %s" %college)
     60        print('\n')
     61
     62    def deleteDict(self, spiderMan):
     63        print(u"删除字典中键为Nation的值")
     64        print(u"执行命令del(spiderMan['Nation'])")
     65        del(self.spiderMan['Nation'])
     66        self.showDict(spiderMan)
     67        print(u"清空字典中所有的值")
     68        print(u"执行命令spiderMan.clear()")
     69        self.spiderMan.clear()
     70        self.showDict(spiderMan)
     71        print(u"删除字典")
     72        print(u"执行命令del(spiderMan)")
     73        del(spiderMan)
     74        print(u"显示spiderMan")
     75        try:
     76           self.showDict(spiderMan)
     77        except NameError:
     78           print(u"spiderMan未被定义")
     79
     80
     81 if __name__ == '__main__':
     82    sd = ShowDict()

输入:wq,保存showDict.py。showDict.py显示了Python字典的基本功能。执行命令:

    python showDict.py

得到的结果如图2-11所示。

图2-11 run showDict.py

Python的基本变量类型就是这些。其他的类型几乎都是由这些基本类型组合而来(Python的数据类型还有None和boolean)。

提示

字典的键和键值可以是任何类型。在没有什么特殊要求的情况下尽可能地使用字符串作为键。如果把键设置得太复杂了,那也就失去字典的意义了。