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正则表达式模块:






  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/liulvzhong/p/7469277.html
Copyright © 2011-2022 走看看