zoukankan      html  css  js  c++  java
  • 列表生成式,模块的使用

    上节课复习
    1,三元表达式
    条件成立的情况下返回的值 if条件 else 条件不成立的情况下返回
    res= x if x>y else y
    2,函数的递归
    回溯
    递推
    注意点:1,必须要有一个明确的结束条件
    2,每进入下一次递归。问题的规模都应该减少
    3,匿名函数
    lambda定义
    lambda x,y:x+y
    info=[
    {'name':'egon','age':'18','salary':'300'},
    {'name':'alex','age':'156','salary':'56560'},
    {'name':'lxx','age':'78','salary':'2000'},

    ]
    max(info,key=lambda dic:int(dic['salary']))
    min(info,key=lambda dic:int(dic['salary']))
    l=sorted(info,key=lamdba dic:int(dic['salary']))
    map(lambda x:x**2,[1,2,3,4])
    redue
    filter(lambda x:x>2,[1,2,3,4])

    内置函数剩余
    pow pow(2,3,3)2**3 %3

    l=[1,4,3,5] round(四舍五入)
    res=reversed(l)
    print(list(res))
    print(l)
    # print(round(3.5))
    # print(round(3.4))

    # sc=slice(1,5,2) #1:5:2 切片
    # l=['a','b','c','d','e','f']
    # # print(l[1:5:2])
    # print(l[sc])

    # sum(求和)
    # print(sum([1,2,3,4]))

    zip(拉链,一一对应)
    left='hello'
    right={'x':1,'y':2,'z':3}

    res=zip(left,right)
    print(list(res))


    2,列表生成式


    1=[]
    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]
    print(l)

    用生成器表达式
    l=(‘egg%s’ %i for i in range(1000)if i>10)
    print(next(l))
    print(next(l))

    #练习题
    names=['egon','alex_sb','wupeiqi','yuanhao','lxx']
    res=map(lambda x:x.upper(),names)
    names=list(res)
    print(names)

    names=['egon','alex_sb','wupeiqi','yuanhao','lxx']
    names=[name.upper() for name in names]
    print(names)

    names=['egon','alex_sb','wupeiqi','yuanhao','lxx']
    names=[len(name)for name in names if not name.endswith('sb')]
    print(names)

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

    with open('db.txt','r',encoding='utf-8')as f:
    nums=(len(line) for line in f)
    print(nums)
    print(next(nums))

    max((len(line) for line in f))
    print(max(len(line) for line in f))

    模块的使用之import


    1,什么是模块?
    模块就是一系列功能的集合体,在python中 ,一个py文件就是一个模块,比如module.py,其中模块名module

    2,使用模块
    1,import 导入模块
    首次导入模块发生三件事
    1,创建一个模块的名称空间
    2,执行模块对应文件,将产生的名字存放于1中的名称空间
    3,在当前执行文件中拿到一个模块名,该模块名指向1的名称空间
    x=1
    def f1():
    pass
    import spam
    强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件

    文件如下
    #spam.py
    print('from the spam.py')
    __all__=['money','read1'] # from .. import *

    money=1000

    def read1():
    print('spam模块.read1:',money)

    def read2():
    print('spam模块.read2')
    read1()

    def change():
    global money
    money=0

    # print(__name__)
    # __name__的值
    #1、在文件被直接执行的情况下,等于'__main__'
    #2、在文件被导入的情况下,等于模块名

    if __name__ == '__main__':
    # print('文件被当中脚本执行啦。、。')
    read1()
    else:
    print('文件被导入啦')

    import spam
    import spam

    print(spam)

    print(spam.money)
    spam.read1()

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

    read1=111111
    # print(spam.read1)

    # money=1111111111111
    # spam.read1()

    # read1=11111111111111111111111111
    # spam.read2()

    # money=1111111111111111
    # spam.change()
    # print(money)
    # spam.read1()

    #3、为模块起别名
    # import spam as sm
    #
    # print(sm.money)
    # sm.read1()


    engine=input('>>: ').strip()
    if engine == 'mysql':
    import mysql as db
    elif engine == 'oracle':
    import oracle as db
    db.parse()


    4模块的使用之from。。。import
    首次导入模块发生三件事
    #1、创建一个模块的名称空间
    #2、执行模块对应文件,将产生的名字存放于1中的名称空间
    #提示:from 。。。 import。。与import前两件事一模一样
    #3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀
    import spam #spam。名字

    from spam import money,read1,read2,change
    print(money)
    read1()
    read2()

    import spam
    print(money)

    注意:1,同improm 执行模块中的功能,始终以模块的名称空间为准money=1111
    print(money)
    read1=11111
    read1()

    取别名
    from spam import money as m
    print(m)

    在一行导入多个
    from spam import money,read1,read2

    from。。。import*
    from spam import*

    #print(money)
    # print(read1)
    # print(read2)
    # print(change)

    # from spam import *
    # print(money)
    # print(read1)
    # print(read2)

    import spam


    模块的搜索路径
    import m1
    m1.f1()
    模块的查找顺序是:
    1,内存中已经加载的模块
    2,内置函数
    3,sys.path路径中包含的模块
    import time
    import m1
    m1.f1()

    tie.sleep(15)
    import m1
    m1.f1()

    import sys
    print('time' in sys.modules)
    import time
    time.sleep(2)
    print('time in sys.modules)

    import sys
    sys.path.append(rD:codeSH_fullstack_s1day14dir1')

    import m1
    m1.f1()
    强调:
    sys.path的第一次路径是当前执行文件所在的文件夹

  • 相关阅读:
    hdu (欧拉函数+容斥原理) GCD
    UVA 11624 Fire!
    drf框架之跨域问题的解决与缓存问题
    drf框架之分页器的用法
    DRF框架之 用户角色权限与访问频率的权限设置
    DRF框架之认证组件用法(第四天)
    DRF框架之视图方法的几个封装好的模块介绍(第三天)
    DRF框架之 serializers 序列化组件
    DRF框架简介(第一天)
    BBS(第三天) 如何吧用户上传的图片文件保存到本地
  • 原文地址:https://www.cnblogs.com/maojiang/p/8710367.html
Copyright © 2011-2022 走看看