老男孩学习---python课程Day05
2016-06-10 00:00
597 查看
<center>oldboy 13 Day_5笔记</center>
<center>[武sir的博客内容(单击进入)][1]</center><center>[Alex的博客内容][2]</center>
----------
#1.多层装饰器
def d(func): def inner(): print('d:装饰器_1') func() return func return inner def e(func): def inner(): print('e:装饰器_2') func() return func return inner @d @e def b(): print('b:222')
#2.字符串格式化
##% 与 format
s = '名字:%s,年龄:%d' %('panda',12) print(s)
s = '名字:%(name)s,年龄:%(age)d' %{'name':'panda','age':12} print(s)
s = '名字:%(name)+10s,年龄:%(age)d' %{'name':'panda','age':12} print(s)
s = '名字:%(name)s,年龄:%(age)+10d' %{'name':'panda','age':12} print(s)
s = '名字:%(name)s ,年龄:%(age)+10d ,p:%(p).2f' %{'name':'panda','age':12,'p':1.234354} print(s)
##常用格式化
tpl = "i am %s" % "alex" tpl = "i am %s age %d" % ("alex", 18) tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18} tpl = "percent %.2f" % 99.97623 tpl = "i am %(pp).2f" % {"pp": 123.425556, } tpl = "i am %.2f %%" % {"pp": 123.425556, }
##format()
s1 = 'asdsads{0}12321{0}asdsad{1}sa'.format('哈哈','呀呀') print(s1)
s1 = 'name:{name:s},age:{age:d}'.format(name='panda',age=32) print(s1)
s1 = '-----{:*^20s}====='.format('panda') print(s1)
s1 = '-----{:*^20s}====={:+d}___{:#b}'.format('panda',123,15) print(s1)
<font color="#D2691E">Format 与 %的区别</font>
<font color="#DC143C">format可以填充字符</font>
<font color="#DC143C">可以居中</font>
<font color="#DC143C">%的区别</font>
<font color="#DC143C">二进制,十进制等可以表示</font>
常用的format:
tpl = "i am {}, age {}, {}".format("seven", 18, 'alex') tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex']) tpl = "i am {0}, age {1}, really {0}".format("seven", 18) tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18]) tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18) tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18}) tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33]) tpl = "i am {:s}, age {:d}, money {:f}".format("seven", 18, 88888.1) tpl = "i am {:s}, age {:d}".format(*["seven", 18]) tpl = "i am {name:s}, age {age:d}".format(name="seven", age=18) tpl = "i am {name:s}, age {age:d}&quo 3ff0 t;.format(**{"name": "seven", "age": 18}) tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2) tpl = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2) tpl = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15) tpl = "numbers: {num:b},{num:o},{num:d},{num:x},{num:X}, {num:%}".format(num=15)
##往期回顾
###filter函数
li = [11,22,33] r = filter(lambda x:x >22,li) print(r)
<font color="#DC143C">map()需要回顾!</font>
#3.生成器
def func(): yield 1 yield 'panda' yield 3 ret = func() print(ret) for i in ret: print(i)
yield控制
def func(): print('1111') yield 1 print('2222') yield 'panda' print('3333') yield 3 ret = func() r1 = ret.__next__() #进入函数找到yield,获取yield后面的数据 print(r1) r2 = ret.__next__() #进入函数找到yield,获取yield后面的数据 print(r2) r3 = ret.__next__() #进入函数找到yield,获取yield后面的数据 print(r3)
生成arg个数,超出返回
def myrange(arg): start = 0 while True: if start > arg: return yield start start += 1 r = myrange(3) a = r.__next__() print(a) a = r.__next__() print(a) a = r.__next__() print(a) a = r.__next__() print(a) a = r.__next__() print(a)
#4.迭代器
def myrange(arg): start = 0 while True: if start > arg: return yield start start += 1 r = myrange(3) for i in r: print(i)
#5.递归
def d(): return '123' def c(): r = d() return r def b(): r = c() return r def a(): r = b() print(r) a()
def func(n): n += 1 if n >= 5: return 'end' else: print(n) return func(n) print(func(0))
#6.模块
内置模块
第三方模块
自制模块
import sys print(sys.argv)
定义一个自定义模块test(放到lib目录中)
def a(arg): x = print(arg) return x
导入自定义的模块
import lib.test lib.test.a(123)
在sys上导入模块
import sys sys.path.append('/data/panda_python/panda_learn_python/Day_5/lib') import order
<font color="#DC143C">模块的名称很重要,不要和内置模块重名!</font>
from import
from lib import order order.a()
<font color="#DC143C">1.单模块:
import ***</font>
<font color="#DC143C">2.嵌套在文件夹下:
from *** import ***
from *** import *** as ***</font>
##第三方模块
request模块
pip3安装
<font color="#D2691E">pip3 install ***</font>
源码安装
<font color="#D2691E">进入对应下载包路径</font>
<font color="#D2691E">python3 install setup</font>
###安装request练习
<font color="#D2691E">python3 -m pip install request</font>
备注: <font color="#DC143C">python3 -m pip install</font> <font color="#D2691E">模块名称</font>
##序列化与反序列化模块
import json
import json dict = {'k1':'v1'} print(dict,type(dict)) #将python基本数据类型转换成字符串形式 result = json.dumps(dict) print(result,type(result))
<font color="#DC143C">将字典转换成字符串:</font>
import json s1 = '{"k1":"v1"}' # s1 = "{'k1':'v1'}" #这个是错误的,字符串形式中的内容必须用双引号!!! print(s1,type(s1)) #将python基本数据类型转换成字符串形式 result = json.loads(s1) print(result,type(result))
<font color="#DC143C">将字符串转换成字典:</font>
代码1 :
import requests import json r = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=北京') r.encoding = 'utf-8' print(r.text,type(r.text)) dic = json.loads(r.text) print(type(dic))
代码2 :
import requests import json r = requests.get('http://wthrcdn.etouch.cn/weather_mini?city=北京') r.encoding = 'utf-8' dic = json.loads(r.text) print(dic,type(dic))
总结 :
import json #python 基本数据类型转换字符串 r = json.dumps([11,22,33]) li = '["panda","zanda"]' ret = json.loads(li) #通过loads反序列化时,一定要用"" print(ret,type(ret))
###json.dump() 与 json.load()
import json li = [11,22,33] json.dump(li,open('db','w')) #首先将字符串序列化,然后写入文件 json.load(open('db','w')) #首先打开文件,将数据读到内存,然后将数据序列化成列表
import pickle(python专用)
pickle.dumps() 与 pickle.loads()
import pickle li = [11,22,33] r = pickle.dumps(li) print(r) result = pickle.loads(r) print(result)
pickle.dump() 与 pickle.load()
import pickle li = [11,22,33] pickle.dump(li,open('db','wb')) #以python的认识的类型保存 result = pickle.load(open('db','rb')) print(result,type(result))
json与pickle的对比
<font color="#8B008B">json更加适合跨语言,字符串,基本数据类型</font>
<font color="#8B008B">pickle:更适合做所有类型的序列化,仅使用于python</font>
##time模块
import time print(time.time()) #从1970年1月1日到现在的计时时间(1970年linux正式发布) print(time.ctime()) #当前系统时间 print(time.ctime(time.time()- 86400)) #返回前一天的时间 print(time.gmtime()) #将时间分字段可以获取,格林威治时间 a = time.gmtime() print(a.tm_year,a.tm_mday) print(time.localtime()) #本地时间 print(time.mktime(a)) #必须要传参数(时间对象),把时间对象转换成时间戳 time.sleep(3) #延迟3秒 t = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()) #将时间对象转换成指定的字符串格式 print(t) tm = time.strptime("2016-05-6 14:06","%Y-%m-%d %H:%M") #将时间格式转换成时间对象 print(tm) time.mktime(time.localtime()) #将字符串装成时间戳
##datetime模块
import datetime print(datetime.date.today()) #当前的日期 r = datetime.datetime.now() #当前的时间 print(r) print(datetime.datetime.now() + datetime.timedelta(days=10)) #加10天 current_time = datetime.datetime.now() print(current_time.replace(2015,5,1)) #修改替换时间 time_obj = current_time.replace(2015,5) print(type(time_obj)) print(current_time > time_obj) #可以做时间的比较
##logging模块(日志记录)
import logging logging.warning('11111') logging.critical('server is down') logging.basicConfig(filename='error.log', level=logging.WARNING, format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') #只有warning或更高的级别记录在文件中
日志记录:
import logging # create logger logger = logging.getLogger('TEST-LOG') #get the logger object first logger.setLevel(logging.DEBUG) #set a global log level # create console handler and set level to debug ch = logging.StreamHandler() #print the log on monitor ch.setLevel(logging.DEBUG) #set a monitor log level # create file handler and set level to warning fh = logging.FileHandler("access.log") #print the log on file fh.setLevel(logging.WARNING) #set a file log level # create formatter formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #设定输出格式 # add formatter to ch and fh ch.setFormatter(formatter) fh.setFormatter(formatter) # add ch and fh to logger logger.addHandler(ch) #tell the logger to input the log into specified handler logger.addHandler(fh) # 'application' code logger.debug('debug message') logger.info('info message') logger.warn('warn message') logger.error('error message') logger.critical('critical message')
相关文章推荐
- 老男孩学习---python课程Day01
- Python 2.7中的Numpy、SciPy、MatPlotLib安装与配置
- build python 2.7.11 for mips
- Python3学习笔记07-特殊方法与多范式、上下文管理器、对象的属性
- Python3学习笔记08-闭包、装饰器、内存管理
- Python3学习笔记09-python常用方法总结
- Python3学习笔记10-标准库之正则、时间、路径、文件管理、存储对象
- regex pattern in python for parsing html
- Python filter()函数
- Python 进阶学习笔记1
- 一个将文件复制后以时间命名的Python程序
- ImportError: No module named 'pip'
- python with open
- python的range()函数用法
- python爬虫正方教务系统
- Python实现抓取页面上链接的简单爬虫分
- python判断文件和文件夹是否存在、创建文件夹
- django学习教程(一)如何安装python django和基本的操作
- 初试scrapy编写twitter爬虫
- python使用原始套接字 解析原始ip头数据