zoukankan      html  css  js  c++  java
  • day14之模块

    一、列表生成式与生成表达式

    1、列表生成式(数据量小)

    要求:在列表内造100个元素

    示例:

    1 l=[]
    2 for i in range(100):
    3     l.append('egg%s'%i)
    4 print(l)
    5 
    6 #可简化如下格式:
    7 l=['egg%s'%i for i in range(100)]
    8 print(l)

    1.2、常用列表生成式

    示例:

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

      注:此处不能写else,因为无法判断else输入for 还是 if

    2、生成器表达式(数据量大)

    l=('egg%s'%i for i in range(100) if i > 10)
    #1.
    res=l.__iter__()
    print(res.__next__())
    print(res.__next__())
    #2.
    print(next(l))
    print(next(l))
    #3.
    for i in l:
        print(i)

    3、练习题

    3.1、把列表内元素都变成大写

    names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
    names=[i.upper() for i in names]
    print(names)

    3.2、把结尾带sb的过滤掉

    names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
    names=[i for i in names if not i.endswith('sb')]
    print(names)

    3.3、保存剩下的名字的长度

    names=['egon','alex','wupeiqi','yuanhao','lxx_sb']
    names=[len(i) for i in names ]
    print(names)

    3.4、求a.txt中最长的行的长度,需要使用max函数

      a.txt文件内容如下:

    sdfsdfsdgffsdgfdshfdgfh
    12231321311321
    132132
    321
    321
    321
    32
    sdaflkjsdlkfs
    sdflkjsdlkfjlsdjf
    sdlkfjlsddjflk

      1.

    with open('a.txt','r',encoding='utf-8')as f:
        nums=[len(line) for line in f]
    print(nums)
    print(max(nums))

      2.

    with open('a.txt','r',encoding='utf-8')as f:
        nums=(len(line) for line in f)
        # print(nums)#内存地址
        # print(next(nums))#取出一个值
        # print(max(nums))#取出最大值
    
        print(max(len(line) for line in f))  #取出最大值

    二、模块

    1、什么是模块?

      模块就是系统功能的结合体,在python中一个py文件就是一个模块,比如module.py其中模块名是module。

    2、使用模块

    2.1、import导入模块

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

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

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

        提示:from ... import ... 与import 前两件事是一模一样

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

    执行:

    import time
    import time
    import time
    time.sleep(2)

    强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件

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

    3、为模块起别名

    import time as sm
    sm.sleep(2)
    import time as mysql
    mysql.sleep(4)

    功能升级示例:

    如果两个模块有类似功能,用户可以选择执行

    engine=input('>>:').strip()
    if engine == 'sm':
        import sm as db
    elif engine == 'mysql':
        import mysql as db
    
    #执行db模块中的函数:db.xxx(),输入什么调什么功能

    4、一行导入多个模块

    不推荐使用

    import time , requests , _mysql

    推荐成多行

    import time
    import requests
    import json

    5、模块的使用之from ... import ...

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

      1、创建一个模块的名称空间;
    2、执行模块对应的文件,将产生的名字存放于1中名称空间
    提示:from ... import ... 与import 前两件是一模一样
    3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀
    from ... import...名字,拿到的名字可以不加前缀直接使用,使用起来更加方便,
    但问题是容易与当前执行文件中相同的名字冲突
    注意:同import,执行模块中的功能,始终以模块的名称空间为准

    6、起别名

    from requests import get as m
    print(m)
    可以在一行导入多个,'*'代表所有,如果在模块中存在__all__=['get',....],那么'*'代表列表内的一些功能
    from requests import *

    7、模块的设计者__name__的使用

    spam.py文件内容:

    # -*- coding:utf-8 -*-
    #spam.py
    print('from the spam.py')
    __all__=['money','read1']#from ... import *
    
    money=1000
    
    def read1():
        print('spam模块:',money)
    
    def read2():
        print('spam模块')
        read1()
    
    def change():
        global money
        money=0
    
    
    # print(__name__)
    #__name__的值
    #1、在文件被直接执行的情况下,等于'__main__'
    #2、在文件被导入的情况下,等于模块名
    
    if __name__ == '__main__':
        # print('文件被当做脚本执行了')
        read1()
    else:
        print('文件被导入了')

    8、模块的搜索路径

    import sys
    print(sys.path)

    查看内存中被导入的模块

    import sys
    print(sys.modules)
    获取到文件路径列表:
    ['D:\mypython\projects\函数\day14', 'D:\mypython',
    'D:\Python\Python36\python36.zip', 'D:\Python\Python36\DLLs',

    'D:\Python\Python36\lib', 'D:\Python\Python36',
    'D:\Python\Python36\lib\site-packages']


    第一条路径是:此文件的执行路径
            可以看做python文件

    因此模块的查找顺序是:
    1、 内存中已经加载的模块
    2、 内置模块
    3、 sys.path路径中包含的模块
    import sys
    sys.path.append(r'D:mypythonprojects函数day14')
    
    import spam
    read1()

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

  • 相关阅读:
    react-native运行iOS真机、模拟器命令
    如何在RN插件iOS部分添加framework文件
    fatal error: module map file '/Users/z/Library/Developer/Xcode/DerivedData/sometest-cnjreghvqrsixrehofwrnercfpei/Build/Products/Debug-iphoneos/YogaKit/YogaKit.modulemap' not found 1 error generated.
    ERROR | attributes: Missing required attribute `homepage`.
    数据交互一
    JSP__第1章 动态网页开发基础
    第9章 表单校验
    第8章 使用JQuery操作DOM
    第7章 jQuery中的事件与动画
    第6章 jQuery选择器
  • 原文地址:https://www.cnblogs.com/happyfei/p/9428125.html
Copyright © 2011-2022 走看看