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:\a\b\c\d") #递归地创建目录。
>>>
>>> os.removedirs(r"c:\a\b\c\d") #递归地删除空文件夹。
>>>
>>> os.mkdir(r"c:\a") #一级级地创建或删除非空目录(相当于linux下的mkdir与rmdir)
>>> os.mkdir(r"c:\a\b")
>>> os.rmdir(r"c:\a\b")
>>> 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 ETtree = 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/wiki7、configparser模块:用于生成和修改常见的配置文档。