python基础知识回顾

  1. IPython 中 的 “I” 代表 交互 interactive

  2. 注意python解释器、交互式python shell、集成开发环境三者之间的区分

  3. 编译型语言和解释型语言对比

    • 速度 —— 编译型语言比解释型语言执行速度快
    • 跨平台性 —— 解释型语言比编译型语言跨平台性好
    • Python 是完全面向对象的语言
      • 函数、模块、数字、字符串都是对象,在 Python 中一切皆对象
      • 完全支持继承、重载、多重继承
      • 支持重载运算符,也支持泛型设计
    • Python 拥有一个强大的标准库,Python 语言的核心只包含 数字、字符串、列表、字典、文件 等常见类型和函数,而由 Python 标准库提供了 系统管理、网络通信、文本处理、数据库接口、图形系统、XML 处理 等额外的功能
    • Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖 科学计算、人工智能、机器学习、Web 开发、数据库接口、图形系统 多个领域
    • 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件
    • 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件
      • 一个项目通常会包含 很多源文件
  4. 关于代码规范:
    谷歌有对应的中文文档:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

  5. 注意

    1. elif 和 else 都必须和 if 联合使用,而不能单独使用
    2. 可以将 if、elif 和 else 以及各自缩进的代码,看成一个 完整的代码块
    3. elif 的应用场景是:同时 判断 多个条件,所有的条件是 平级 的
    4. if 的嵌套 的应用场景就是:在之前条件满足的前提下,再增加额外的判断
  6. random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b

  7. 运算符:(回忆运算符的优先顺序)

    1. 算术运算符 : ** * / // % + -
    2. 比较(关系)运算符 : == != >= <= > <
    3. 逻辑运算符 : and or not
    4. 赋值运算符 : **= *= /= //= %= = += -=
  8. \t 在控制台输出一个 制表符,协助在输出文本时 垂直方向 保持对齐

  9. 导入模块的注意事项
    # from fxj_01_99 import multiple_table
    import fxj_01_99
    “”“导入模块时–模块中的全局变量、可执行代码–全部都会执行”""
    # fxj_01_99.multiple_table()

    • 形参:定义 函数时,小括号中的参数,是用来接收参数用的,在函数内部 作为变量使用
    • 实参:调用 函数时,小括号中的参数,是用来把数据传递到 函数内部 用的
  10. 模块体验:模块可以让 曾经编写过的代码 方便的被 复用!
    - 可以 在一个 Python 文件 中 定义 变量 或者 函数
    - 然后在 另外一个文件中 使用 import 导入这个模块
    - 导入之后,就可以使用 模块名.变量 / 模块名.函数 的方式,使用这个模块中定义的变量或者函数

  11. pyc 文件 – 可以提高程序执行速度
    pyc文件 – 已经编译(compiled)过的二进制文件 – 字节码

  12. 注意:如果使用 del 关键字将变量从内存中删除

    后续的代码就不能再使用这个变量了

  13. 函数和方法的区别:

    1. 函数 封装了独立功能,可以直接调用  -- 函数名(参数)
    2. - 方法 和函数类似,同样是封装了独立的功能
       - 方法 需要通过 对象 来调用,表示针对这个 对象 要做的操作
       # 对象.方法名(参数)
    
  14. 尽管 Python 的 列表 中可以 存储不同类型的数据

    但是在开发中,更多的应用场景是

    1. 列表 存储"相同类型"的数据
    2. 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
    
  15. 在 Python 中,可以使用 for 循环遍历所有非数字型类型的变量:# 列表、元组、字典 以及 字符串

    提示:在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多

  16. 字典在开发应用中的应用场景:

    - 使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息
    - 将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理
    
  17. 字符串对象的方法特别多 – 开发中,字符串的使用更加灵活

  18. 切片

    切片 方法适用于 字符串、列表、元组  # 不包含字典
    
  19. 注意:在开发时,应该把模块中的所有全局变量

    定义在所有函数上方,就可以保证所有的函数

    都能够正常的访问到每一个全局变量了

  20. 多值参数:*变量名 元组
    **变量名 字典
    eg: def demo(num, *args, *kwargs):

  21. 多值参数 – 元组和字典的拆包
    eg: gl_nums = [2,3,4,5]
    gl_xiaoming = {“name”:“小明”, “age”:18}
    demo(*gl_nums, **gl_xiaoming)

  22. 函数的递归

  23. init 改造初始化方法,可以让创建对象更加灵活
    del 如果希望在对象被销毁前,再做一些事情,可以考虑一下 del 方法
    str 魔法方法 : 改变实例对象的返回值,必须return一个#字符串

  24. 封装:

        1.封装 是面向对象编程的一大特点
        2.面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中
        3.外界 使用 类 创建 对象,然后 让对象调用方法
        4.对象方法的细节 都被 封装 在 类的内部
    练习: 家具练习 + 士兵突击练习
        1.一个实例对象可以作为“参数传入”到另外一个类创建的实例对象的调用方法内
        2.一个对象的 ”属性“ 可以是 另外一个类创建的对象
            此时可以通过属性来调用另外一个对象中包含的方法
            #当不知道给属性设置什么值的时候,可以设置为 none
    

    继承:可以减少相同代码的重复编写,大大提高开发效率

        #当相同代码需要修改时,各个类都需要进行修改
    

    多态:

        1.多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
        2.多态 可以 增加代码的灵活度
        3.以 继承 和 重写父类方法 为前提
        4.是调用方法的技巧,不会影响到类的内部设计
    
    1. super 是python中 一个内置的 特殊的 类
    2. 应用场景: 父类中的方法需要保留的时候,
      方法1 : 此时可以使用super().方法名来保留,
      减少方法重写时代码的重复
      方法2 : 父类名.方法名(self) 不推荐使用,
      修改父类时,此处调用也需要修改
  25. 子类不能直接访问或调用父类中的私有属性和私有方法

    子类可以通过父类调用自己的私有属性和方法–间接访问

    子类可以通过 _父类名__属性或方法 – 间接访问

  26. 多继承的使用注意事项: 开发中尽量避免容易产生混淆的情况 – 父类之间尽量不用相同的属性和方法#名称

    Python 中针对 类 提供了一个 “内置属性” mro 可以查看 方法 搜索顺序

    eg: print(C.__mro__)
    

    在搜索方法时,是按照 mro 的输出结果 从左至右 的顺序查找的
    如果在当前类中 找到方法,就直接执行,不再搜索
    如果 没有找到,就查找下一个类 中是否有对应的方法,如果找到,就直接执行,不再搜索
    如果找到最后一个类,还没有找到方法,程序报错

  27. 类方法:# 实例对象和类对象均可调用 – 只能使用类方法和类属性
    静态方法:# 实例对象和类对象均可调用 – 不可以使用类或者实例对象的方法或属性
    实例方法:# 只能由实例对象调用 – 类方法、类属性、实例方法、实例属性均可使用

  28. 在每次使用 类名() 创建对象时,Python 的解释器都会自动调用两个方法:
    1.# new 分配空间 和 返回对象的引用
    2.# init 对象初始化

  29. 如果 两个模块,存在 “同名的函数”,那么

    后导入模块的函数,会 覆盖掉先导入的函数

  30. 1.在开发时,给文件起名,不要和 系统的模块文件 重名
    2.如果 两个模块,存在 同名的函数,那么 后导入模块的函数,会 覆盖掉先导入的函数
    # 开发时 import 代码应该统一写在 代码的顶部,更容易及时发现冲突
    # 一旦发现冲突,可以使用 as 关键字 给其中一个工具起一个别名
    3.原则 —— 每一个文件都应该是可以被导入的
    一个 独立的 Python 文件 就是一个 模块
    # 在导入文件时,文件中 所有没有任何缩进的代码 都会被执行一遍!
    4. name 属性可以做到,测试模块的代码 只在测试情况下被运行,
    而在 被导入时不会被执行!
    # 根据 name 判断是否执行下方代码
    if name == “main”:
    main()

  31. 1.read 方法默认会把文件的 所有内容 一次性读取到内存
    如果文件太大,对内存的占用会非常严重
    2.readline 方法可以一次读取一行内容
    方法执行后,会把 文件指针 移动到下一行,准备再次读取

  32. import(‘os’).system(‘ls’) 不要随便使用eval函数

    如果直接调用os模块,容易出现意想不到的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值