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






原文地址:https://www.cnblogs.com/liulvzhong/p/7469277.html