zoukankan      html  css  js  c++  java
  • 列表生成式、生成器表达式、模块导入

    一:列表生成式和生成器表达式

    1.1.用传统的方法创建一个列表

    l=[]
    for i in range(100):
      l.append('egg%s' %i)
      print(l)

    用传统的方法创建列表需要至少三行的代码,采用列表生成式:

    l=['egg%s' %i for i in range(100)]

    一行代码就已经搞定了列表的创建,大大简化了我们写代码的工作量,而且还可以在生成式里面添加一个判断。

    l=['egg%s' %i for i in range(1000) if i > 10]

    这样,列表生成的就是大于10的数字了。

    1.2.生成器表达式

    生成器的优势在于可以取得很多的数字,但是他并不像列表那样把所有的字符保存下来,提取时如果列表内含有的元素过多的话会爆掉内存。于是生成器就被需要了,把列表生成式的中括号换成小括号,得到的就是一个生成器,生成器又是迭代器,使用__next__方法一个个的取值,对内存占用极小。

    l=('egg%s' %i for i in range(1000) if i > 10)#生成器表达式
    print(next(l))#取值
    print(next(l))
    print(next(l))

    二:模块

    2.1.什么是模块?

    模块就是一种系统功能的集合体,在python中一个.py文件就是一个模块,如modul.py文件,modul就是文件名。

    2.2:使用模块

    导入模块方法:

      1:import 模块名:调用模块内的方法必须加上前缀,调用不会出错。

      2:from...import...:调用模块内的方法不用加上前缀,但是有可能会和执行文件中的名字起冲突。

    首次导入模块发生的三件事:

      1、创建一个模块的名称空间。

      2、执行模块对应文件,将产生的名字存放于1中的名称空间。

      3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间。

    注意:1、首次导入之后重复导入,后续的导入会直接引用第一次的导入结果,不会再次执行文件内容。

       2、模块中功能的执行始终以模块自己的名称空间为准。

    为模块起别名

      模块的名称一般来说是描述性的,有的时候会很长,如果每次调用都要在前面加上前缀的话,非常不方便,这个时候我们就可以给模块在导入时另外取一个简洁的名字。另外一种场景则是导入多个模块,其执行内容一致,但是需要判断条件来执行,这时就可以把两个导入的模块另外取名,然后判断,做具体调用运算。

    engine=input('>>: ').strip()
    if engine == 'mysql':
        import mysql as db
    elif engine == 'oracle':
        import oracle as db
    
    db.parse()
    
    if__name__ =="__main__" #如果文件是直接被执行
    # 在文件被直接执行的情况下等于__main__
    # 在文件被导入的情况下,等于文件名
    # if __name__ == "__main__":
    # print("文件被当做脚本执行了")
    # else:
    # print("文件被导入啦")

    常常可以在模块文件下看到这一行代码,这个代码的意思是,如果文件是直接被执行,那么会调用定义的函数如果是被当做模块导入的话,只会获取定义的名字,不会执行函数

    三:模块中名字的查找顺序

    内存中已经加载的名字》内置的名字》sys.path路径中包含的模块。

    强调:sys.path的第一个路径是当前执行文件所在的文件夹

  • 相关阅读:
    hibernate中HQL多对多的查询
    Georgia Tech- 新的篇章
    吴军《智能时代》读书笔记
    P5项目完成记录
    Codewar python训练题全记录——持续更新
    优达学城纳米学位P5项目知识点总结——github使用
    优达学城数据分析师纳米学位——P5项目知识点整理贝叶斯规则
    优达学城数据分析师纳米学位——P5项目知识点整理机器学习基本术语
    P3-SQL 学习笔记
    HTML+CSS 学习笔记
  • 原文地址:https://www.cnblogs.com/li1992/p/8709790.html
Copyright © 2011-2022 走看看