zoukankan      html  css  js  c++  java
  • Python复习笔记02

    语句表达式:

    在Python中支持遍历循环的对象:可迭代器对象,支持迭代协议的对象

                                                  比如列表list没有迭代功能只是可迭代对象

         迭代:迭代协议 --> 例:f.__next__() 属于f的迭代方法,全局的迭代方法为next(f)

                   迭代工具 --> for,…推导…  map…

                           迭代器对象    已经实现

                           可迭代对象     iter() --> __iter__()用于生成迭代器

                           iter(f) is f 判断f是否有迭代功能

               内置可迭代对象 --> range()  map(函数,可迭代对象) zip() …

    注意:list在数据量小的时候操作简单方便,在数据量大的时候占用过大内存,不如支持迭代协议的对象,用到某个值就取出某个值,对内存的消耗小。

    函数:

    Why最大化代码重用、最小化代码冗余、过程分解

            定义: def 函数名(参数1,…):函数体

           调用:函数名(实际参数)

           变量作用域:Built-in、Global(global)、Enclousure(nonlocal)、Local

           参数:传递1. 不可变类型,传递副本给函数,函数内操作不影响原始值

                            2. 可变类型,传递地址引用,函数内操作可能会影响原始值

                               传副本可以不改变原始值

                        匹配 位置匹配、关键字匹配、默认值(调用时省略传值)、*args任意数量参数(接收元组)、**kwargs(接收字典表)

            Lambda表达式:定义匿名函数,基本格式 lambda 参数1,… :函数

           高级工具:map(函数,可迭代对象)、filter(函数,可迭代对象)

           !!!注意委托模式的使用!!!  代码实例:

    def hello_chinese(name):
        print('您好:', name)
    
    def hello_english(name):
        print('hello', name)
    
    def hello_japanese(name):
        print('こんにちは', name)
    
    hello = hello_english   
    # hello = lambda name:print('你好', name)
    hello('tom')   #这个步骤就委托 hello_english 函数
    def hello(action, name): 
    action(name)
    hello(hello_japanese,
    'tom') #这个步骤就委托 hello_japanese 函数
    #hello(lambda name: print('nllpko', name), 'tom')

    包与模块管理

    模块

    指令:import  from  importlib.reload(模块)

    Why:代码重用  命名空间  实现数据或服务共享

    步骤:1找到模块文件  2编译为字节代码  3运行模块文件

              如果想使用模块的最新改变的结果可使用

              import importlib

              importlib.reload(模块)   (注意在调用模块时直接(import 模块名)不能使用(from…import…)形式)

    搜索范围:1程序主目录  2环境变量  3标准库  4扩展库

    面向对象编程

    步骤:OOA面向对象分析  OOD面向对象设计  OOP面向对象编程

    实现:1分析对象的特征行为  2写类描述对象模版  3实例化,模拟过程

    特征:封装 继承 多态

    def __repr__(self): return…   或    def __str__(self): return…

    print(对象)    可以得到想要打印与对象相关的内容

    实例代码

    class Book:
        count = 0
    
        def __init__(self, title, price=0.0, author=None):
            self.title = title
            self.price = price
            self.author = author
            Book.count += 1
    
        def __del__(self):
            Book.count -= 1
    
        def __repr__(self):
            return '<图书: {}>'.format(self.title)
    
        def __str__(self):
            return '[图书:{}, 价格:{}]'.format(self.title, self.price)
    
        def print_info(self):
            print(self.title, self.price, self.author)
    
    
    if __name__ == '__main__':
        book1 = Book('Python经典', price = 29.0, author = 'Tom')
        book2 = Book('Flask')
        book3 = Book('ASP.net')
    
        del(book3)
        print(book1)  # 运行后会看到[图书:Python经典, 价格:29.0]
    
        # print('图书数量:{}'.format(Book.count))
  • 相关阅读:
    mouseOver与rollOver
    排序二叉树
    发展
    bitmapData
    回调与事件
    遍历舞台上所有对象
    面向对象原则
    面向对象的三大特征(个人理解)
    面向对象出现原因以及意义
    OC语言BLOCK和协议
  • 原文地址:https://www.cnblogs.com/yang901112/p/11305678.html
Copyright © 2011-2022 走看看