Python学习笔记---高级主题

来源:互联网 发布:舒立轻淘宝下架 编辑:程序博客网 时间:2024/06/08 06:30

1.列表的递归---用于输出列表字符串中的每个元素

>>> def printList(L):
    #如果为空,则什么都不做
    if not L:
        return
    #如果是链表,则对第一个元素调用printList函数
    if type(L[0])==type([]):
        printList(L[0])
    else:#如果不是链表,仅输出元素即可
        print L[0]
    #处理L的其他部分
    printList(L[1:])

>>> aList=['a',['b','c',['d','e']],'f',[],'g']
>>> printList(aList)
a
b
c
d
e
f
g
>>>

由于上例中是列表的嵌套,所以我们必须测试首项是否为一个列表,如果是,则递归调用printList()函数,如果不是,那我们就简单地打印它。处理完首项后,我们将继续处理列表的其他各项。

在大型数据结构中,递归会耗尽内存,因此,如果你的内存比较小,或者想处理很大的数据结构,那么使用更复杂的常规代码可能更安全些。

2.Python有三种名字空间:

    局部---在类,模块或方法中定义的名字

    模块---在文件中定义的名字

    内置---python自身定义的名字

绘图1

如果要访问模块名字空间,使用import

3.事件驱动编程:面向批处理的程序流程是---启动程序,处理事情,然后终止程序;而事件驱动程序流程是---只有通过事件触发,程序才启动程序,等待事件,然后由事件通知它终止

编写事件驱动程序有两种方式:一是模拟一个事件环境;二是创建一个简单的GUI程序,该程序可利用操作系统和环境来生成事件。

事件捕获和处理的独立性是事件驱动编程的关键特性。