zoukankan      html  css  js  c++  java
  • 模块2复习

    1、  函数即变量;

    2、  高阶函数:a,把一个函数名当做实参传给另一个函数;b,返回值中包含函数名;

    生成器:

    1、  只有在调用时才会生成相应的数据;

    2、  只记录当前位置;

    3、  只有__next_()方法(只能生成下一个数据,不能往后生成上一个数据)。

    Fibonacci(菲波拉契数列)

    a,b=b,a+b 相当于:

    T=(b,a+b)

    a = t[0]

    b = t[1]

    但不必写出临时变量T

    4、__next_  (遇到yield时保存当时状态并返回,下一次执行_next_时从yield开始但并不传参) ,send 则除了会从yield开始,还会传参给yield) 

    5、__next__(fib(6)) 等同于 next(fib(6))

     

    0822:

    一、lambda :简单的三元运算就行如:

    cale = lambda n:3 if n<4 else n
    print(cale(1))

    (2)但它可以结合其它模块来用(如下的函数将range()里的值取出,交给lamba处理):

    Res = filter(lambda n:n>5,range(10))

    for i in  Res

        print (i)

    (3)map:

    print ("_____3______")
    Res3 = map(lambda n:n*n,range(10))
    for i in  Res3:
        print (i)
     

    (4)累加:

    print ("_____4______")
    res4 = functools.reduce(lambda x,y:x+y,range(10))
    print(res4)

     

    (5)判断变量是否存在:

         print(globals())

    08.23:

    print ("______6,排序_____")
    a = {6:2,8:0,1:4,-5:6,6:99,4:22}
    print( sorted(a.items()) ) #按字典k来排序
    print( sorted(a.items(),key=lambda x:x[1]) ) #将字典k对应的值来排序
    print( sorted(a) )        #仅排序k值

    print ("______7,次方_____")
    print(pow(3,3))   #3的3次方
    print ("______8,zip_____")
    a = [1,2,3,4,5,6]
    b = ["a","b","c","d"]
    for i in zip(a,b):      #将a.b.按最少的那一组一一对应地组合,map则没有的那个标计为none
       
    print(i)
    print ("_____9,decorator_____")
    __import__('decorator')

    0825:

    Json :不同语言的转换与交互(以前用xm),python与java的类完全不同;

    print ("_____10,序列化_____")
    #序列化:
    info = {'name':'alex','age':22}
    f = open("test.txt","w")
    f.write(str(info))
    f.close()

    #反序列化:
    f = open("test.txt","r")
    data = eval( f.read() )
    f.close()
    print(data['age'])
    print(data)

    print ("_____10,json:序列化与反序列化_____")
    #序列化:(然后可写入或读取内容)
    import json
    info = {'name':'alex','age':22}
    f = open("test.txt2","w")
    print(json.dumps(info))
    f.write(json.dumps(info))
    f.close()

    #反序列化:
    import json
    f = open("test.txt2","r")
    data = json.loads(f.read())
    print(data["age"])

    08.28:

    一、模块:本质上就是.py结尾的文件。

    2、导入模块的方法:

    (1) import  module_name ;

    (2) from module_name import *

    (3) 、from module_name import def_name as xxx_name    #从某模块名导入函数名,并用别名命名。

    (4) from module_name import def_name 与import module_name.def_name的意思相同:

       导入函数或变量。

    二、包:本质上就是从逻辑上组织模块,就是一个目录(必须带有 _init_.py的文件)

    总结:(1)导入包的本质就是执行包下面的_init_.py文件;

         (2)导入模块的本质就是把python文件解释一遍:

    Import module_name --------à module_name.py---------àmodule_name.py的路径,以下方法导入上一层目录的py函数:

    X =  os.path.dirname(os.path.abspath(_file_))  #这是file当前文件的目录,再往上一层目录,则应如下:

    X= os.path.dirname(os.path.dirname(os.path.abspath(_file_)))

    sys.path.append(x)  #加入系统变量里去;

    import module_name  #导入上一层目录下的模块名。

    From filename import package_test    #导入上一层目录某文件夹下的包,

    Package_test.test1.test()    #并执行该包下test1文件的test函数

    From filename import module_name   #导入上一层目录某文件夹下的模块(即某py文件)

     From module_name import def_name    #导入模块内的函数名,放在文件最上面,这样不用每次在引用函数时module_name.def_name() 进行引用函数了。

    导入包:

    Import package_name  #等于run _init_.py 导入包与模块名的方法一样,但执行的过程不同。

    二、模块的分类:

    标准库,开源,自定义模块。

    1、时间截:
    import time
    x = time.time()
    print(x)

    2、  #显示本地时间(元组的格式):

    3、  (1)

    y = time.localtime()
    print(y)
    time.struct_time(tm_year=2017, tm_mon=8, tm_mday=29, tm_hour=7, tm_min=55, tm_sec=22, tm_wday=1, tm_yday=241, tm_isdst=0)
    (2)
    u = time.strftime("%Y-%m-%d %H:%M:%S",y)
    print(u)                                  #自定义格式并显示当前时间

    2017-08-29 07:55:22

    (3)

    o = time.strptime('2017-08-29 07:55:22' ,"%Y-%m-%d %H:%M:%S")
    print(o)                                #将时间按自定义的格式显示为元组

    time.struct_time(tm_year=2017, tm_mon=8, tm_mday=29, tm_hour=7, tm_min=55, tm_sec=22, tm_wday=1, tm_yday=241, tm_isdst=-1)

    中国为UTC+8

     (4)
    #显示UTC时间(元组的格式,标准时间):
    z = time.gmtime()
    print(z)
     

    09.01:

    1、random模块

    import random      #获得随机数。
    I = [1,2,3,4,5,6]
    random.shuffle(I)
    print(I)

    #示例2(仅数字):

    import random
    checkcode=''
    #每次获得一个数字:
    print("-------------")
    current=random.randint(0,9)
    print(current)

    #将随机数字追加到列表中(5次),并打印:
    for i in range(5):
        current=random.randint(0,9)
        print(current)
        checkcode+=str(current)
        print(checkcode)
    #示例3:
    x = random.randrange(0,99)
    print(x)
     

    #示例4(数字加字母):

    import random
    checkcode=''
     
    for i in range(5):
        current=random.randint(0,5)
        if current ==i:
             tmp = chr(random.randint(65,99))
        #checkcode+=str(tmp)
       
    else:
            tmp=random.randint(0,9)
        checkcode+=str(tmp)
    print(checkcode)

    2、  os模块:

    >>> os.getcwd()           #当前目录。

    'C:\Users\Administrator'

    >>> os.chdir("c:\")               #切换目录到c:。

    >>> os.getcwd()

    'c:\'

    >>> os.makedirs(r"c:acd")       #递归地创建目录。

    >>> 

    >>> os.removedirs(r"c:acd")     #递归地删除空文件夹。

    >>> 

    >>> os.mkdir(r"c:a")     #一级级地创建或删除非空目录(相当于linux下的mkdir与rmdir)

    >>> os.mkdir(r"c:a")

    >>> os.rmdir(r"c:a")

    >>> os.name             #显示操作系统名。

    >>> os.listdir(r"d:")    #列出d盘的目录

    >>> os.environ          #显示环境变量

    >>> os.system('dir')   #执行系统自带的命令。

    >>> os.path.abspath('Drivers')      #显示某文件的绝对路径。

    'c:\Drivers'

    >>> os.path.exists(r'c:')    #判断路径是否存在。

    True

    3、  shutil模块:

    import shutil
    f1 = open("本节笔记",encoding="utf-8")
    f2 = open("笔记2","w",encoding="utf-8")
    shutil.copyfileobj(f1,f2)                   #拷贝本节笔记里的内容到笔记2

    shutil.copystat(src,dst)                   #拷贝状态信息,包括mode等

    shutil.copy(src,dst)                      #拷贝文件和权限;

    shutil.copy2(src,dst)                      #拷贝文件和状态;

    shutil.copyfile("笔记2","笔记3")
    shutil.copymode("笔记2","笔记4")
    shutil.
     
    4、  Json,pickle,shelve模块:用于字符串和python数据类型间进行转换;
    pickle :用于python特有的类型和python的数据类型间进行转换。
    他们各有四大功能:dumps,dump,load,loads

    Shelve:是一个简单的kv,将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

     #示例:

    import shelve

    d = shelve.open('test')   #打开一个文件;

    print(d.get("age"))      #取出里面的age的值。

    5、Xml 模块:(www.cnblogs.com/alex3714)

    没有json以前,用xml进行接口开发,示例:

    import xml.etree.ElementTree as ET
    tree = ET.parse("test.xml")
    root = tree.getroot()
    print(root.tag)
    #遍历xml文档:
    for child in root:
    print(child.tag,child.attrib)
    for i in child:
    print(i.tag,i.text,i.attrib)

    #只遍历year节点:
    for node in root.iter('year'):
    print(node.tag,node.text)

    #修改;

    6、pyyaml模块:用于处理ymal文档格式,只是需要安装一个模块.参考文档:http://pyyaml.org/wiki
    7、configparser模块:用于生成和修改常见的配置文档。
    8、hashlib,hmac加密模块:
    # md5不支持反解
    import hashlib,hmac
    m = hashlib.md5() #用md5加密
    n = hashlib.sha256() #sha256加密,也可以是sha512
    m.update(b"hello")
    print(m.hexdigest()) #加密“hello"
    m.update("你在哪里?".encode(encoding="utf-8"))
    print(m.hexdigest()) #加密“hello你在哪里?”(不是“你在哪里?”),与m.update("hello你在哪里?".encode(encoding="utf-8"))相同

    h = hmac.new(b"123123",b"I love you") #若要中文加密需加encode(encoding="utf-8")
    print(h.digest())

    9、re正则表达式模块:






  • 相关阅读:
    fishredux 大体流程
    flutter Container组件和Text组件
    vue 页面跳转以及传参
    mySql 查询当天、本周、最近7天、本月、最近30天的语句
    Flutter编译时下载依赖报错的解决方案
    计算属性和方法
    计算属性传参
    原生js发送请求
    MySQL数据库连接
    flask 蓝图
  • 原文地址:https://www.cnblogs.com/liulvzhong/p/7469277.html
Copyright © 2011-2022 走看看