14我的Pyhton学习之路模块

1. 模块

  • 1.1 简介
    • 模块化指将一个完整的程序分解成一个个的小模块
    • 通过将模块组合,搭建一个完整的程序
    • 模块化的特性
      • 方便开发、方便维护、模块可以复用
  • 1.2 模块的创建
    • 在Python 当中一个py文件就是一个模块

    • 在一个模块中引入外部模块 import 模块名(模块名就是py文件)

    • 可以引用同一个模块多次,但是模块的实例只会创建一次

    • 模块的使用:

      • 模块名.变量 模块名.函数 模块名.类
    • 引入模块的方法:以下前两种引入方式,使用模块中的对象时,需要加模块名

      • import 模块名

      • import 模块名 as 模块别名

      • from 模块名 import 变量,变量,…

      • from 模块名 import 变量 as 别名

      • from 模块名 import 类

      • from 模块名 import *

      • 示例

        # ---------------------------------------------------------
        import mokuai
        
        print(mokuai.a)
        mokuai.test1()
        c = mokuai.Car()
        c.name()
        # ---------------------------------------------------------
        import mokuai as m
        print(m.a)
        # ---------------------------------------------------------
        # 用以下语句引入模块不用加模块名
        # 引入模块中的一个或多个对象
        from mokuai import Car
        c = Car()
        c.name()
        # ---------------------------------------------------------
        from mokuai import  test1 as t
        t()
        # ---------------------------------------------------------
        from mokuai import *
        c = Car()
        c.name()
        test1()
        # ---------------------------------------------------------
        
      • 运行结果:
        在这里插入图片描述

    • 比较 import 模块 和 from 模块 import * 的区别。特别要注意使用 from 导入模块的重名问题

    • 示例:

      def test1():
          print('这是主模块中的test1()')
      
      import mokuai
      
      test1()
      
    • 运行结果:
      在这里插入图片描述

      def test1():
          print('这是主模块中的test1()')
      
      from mokuai import *
      
      test1()
      
    • 运行结果:
      在这里插入图片描述

    • 模块分两大类:一种是python自带的,另一种是第三方模块

    • 在一个模块内部都有一个 __ name __。通过它我们可以获得模块的名字

    • 若py文件直接运行时,那么__ name __ 默认等于字符串 '__ main __ '。__ name __ 属性值为 __ main __ 的模块是主模块。一个程序中只有一个主模块。

    • 可以使用 __ name __ 对单个模块的代码进行测试

3. 推导式

  • 常用的推导式:列表推导式、字典推导式、集合推导式

  • 推导式适合于一些代码量少,逻辑较简单的场景

  • 语法: [变量 for 变量 in 源列表] or [变量 for 变量 in 旧列表 if 条件判断式]

  • 示例:

    # 需求 取出列表中 小于50的数字组成一个新列表
    # 需求 取出列表中 小于50的数字组成一个新列表
    num = [1,2,3,4,5,3,56,5,7,11,34,243,67,90,112,110]
    
    def fn(n):
        new = []
        for n in num:
            if n < 50:
                new.append(n)
        return new
    l = fn(num)
    print('普通函数:',l)
    
    r = [n for n in num if n < 50]
    print('列表推导式:',r)
    
    
  • 运行结果:
    在这里插入图片描述

3. 生成器

  • 生成器概念:
    • 当Python 在处理大规模的序列时,一次存储这个序列会占用较大的存储空间,计算也不方便,因此python中引入了新的机制–生成器(generator)。
    • 在Python中一边循环一边计算的机制称为生成器
  • 生成器的使用
    • 获取生成器中元素的方法
      • __ next __()
      • next()
    • 生成器的实现
      • 通过列表推导式来得到生成器

        num = [1,2,3,4,5,3,56,5,7,11,34,243,67,90,112,110]
        g = (n for n in num if n < 50)
        print(g)
        print(g.__next__())
        print(g.__next__())
        print(g.__next__())
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))
        print(next(g))  # 生成器越界访问会提示 StopIteratio
        
      • 运行结果:
        在这里插入图片描述

      • 通过函数得到生成器

        • 定义一个函数,函数中要使用yield 关键字
        • 调用函数,接受调用的结果,结果就是一个生成器
        • 借助next() ,next 获得元素
        • 函数中出现yield 关键字,该函数就是一个生成器函数
      • 示例:

        def f():
            num = 1
            while True:
                num *= 3
                yield num
        
        g = f()
        print(g.__next__())
        print(next(g))
        print(next(g))
        
      • 运行结果:
        在这里插入图片描述

4. 迭代器

  • 迭代器概念:

    • 获得元素的一次过程就叫迭代

    • 可迭代:一般就指可迭代对象,简单理解for 循环,可连续的不断的获取元素的数据

    • 可迭代对象:

      • 1.列表、集合、字典、字符串、元组等序列
      • 2 .生成器
    • 判断一个对象是否是可迭代的
      示例:

      num = [1,2,3,4,5,3,56,5,7,11,34,243,67,90,112,110]
      g = (n for n in num if n < 50)
      print(type(g))
      from collections import Iterable
      print(isinstance(num,Iterable))  # 列表是可迭代的
      print(isinstance(g,Iterable))	 # 生成器是可迭代的
      
      
      • 运行结果:
        在这里插入图片描述
    • 迭代器 可以被next() 函数调用并不断返回下一个值的对象称为迭代器 Iterator

      • 生成器是可迭代的,也是迭代器
      • 列表是可迭代的,但不是迭代器
  • 语法:(变量 for 变量 in range() 代码块)或 用Iter() 函数可以将可迭代对象变成一个迭代器

  • 示例:

    l = [2,3,45,5,6]
    print(next(l))  # 报错:TypeError: 'list' object is not an iterator
    
    l = [2,3,45,5,6]
    l = iter(l)
    print(next(l))  
    print(next(l))
    
    运行结果:
    2
    3
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值