python全栈开发 * 26知识点汇总 * 180709

 26 logging  collections  random 模块 一.logging低配:日志不能写入文件与显示同时进行 1.只写入文件:import logginglogger=logging.getLogger()     #创建一个对象fn=logging.FileHandler("高配.log",encoding="utf-8",mode="w")logger.addHandler(fn)logging.debug("debug message")logging.info("info message")logging.warning("warning message")logging.error("error message")logging.critical("critical message")2.写入文件 显示同时进行import logginglogger=logging.getLogger()     #创建一个对象fn=logging.FileHandler("高配.log",encoding="utf-8",mode="w")sh=logging.StreamHandler()logger.addHandler(fn)logger.addHandler(sh)logging.debug("debug message")logging.info("info message")logging.warning("warning message")logging.error("error message")logging.critical("critical message")3.设置显示模式import logginglogger=logging.getLogger()fh=logging.FileHandler("高配.log",encoding="utf-8",mode="w")sh=logging.StreamHandler()formatter=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")logger.addHandler(fh)logger.addHandler(sh)sh.setFormatter(formatter)fh.setFormatter(formatter)logging.debug("debug message")logging.info("info message")logging.warning("warning message")logging.error("error message")logging.critical("critical message")4.设置等级import logginglogger=logging.getLogger()fh=logging.FileHandler("高配.log",encoding="utf-8",mode="w")sh=logging.StreamHandler()formatter=logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s")logger.setLevel(logging.DEBUG)    #    没有它显示和写入文件默认从warning开始logger.addHandler(fh)logger.addHandler(sh)sh.setFormatter(formatter)fh.setFormatter(formatter)sh.setLevel(logging.DEBUG)fh.setLevel(logging.INFO)logging.debug("debug message")logging.info("info message")logging.warning("warning message")logging.error("error message")logging.critical("critical message")
二.collections1.namedtuplefrom collections import namedtuplepoint = namedtuple("point",["x","y"])p=point(10,30)         #point(x=10, y=30)print(p)2.deque    双向列队from collections import dequeq=deque(["a","b","c","d","e","f"])增加q.append(666)q.append(888)q.appendleft(111)q.appendleft(222)       #deque([222, 111, ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, 666, 888])print(q)删除q1=deque(["a","b","c","d","e","f"])q1.pop()                     #    deque([‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘])q1.pop()                    #    deque([‘a‘, ‘b‘, ‘c‘, ‘d‘])q1.popleft()                #  deque([‘b‘, ‘c‘, ‘d‘])q1.popleft()                #   deque([‘c‘, ‘d‘])print(q1) 补充: queue  先进先出    fifo原则       栈 :先进后出3.OrderedDictdic = {}dic[‘name‘] = ‘alex‘dic[‘age‘] = ‘1000‘dic[‘sex‘] = ‘男‘print(dic)from collections import OrderedDictod=OrderedDict()od["name"]="alex"od["age"]="1000"print(od)             #      OrderedDict([(‘name‘, ‘alex‘), (‘age‘, ‘1000‘)])d = dict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)])print(d)        #   {‘a‘: 1, ‘b‘: 2, ‘c‘: 3}from collections import OrderedDictod1 = OrderedDict([(‘a‘, 1), (‘c‘, 3), (‘b‘, 2),])print(od1)          #   OrderedDict([(‘a‘, 1), (‘c‘, 3), (‘b‘, 2)])

4.defaultdict练习方法一l1 = [11,22,33,44,55,77,88,99,90]dic = {}for i in l1:    if i<66:        if "key1" not in dic:            dic["key1"]=[]        dic["key1"].append(i)    else:        if "key2" not in dic:            dic["key2"]=[]        dic["key2"].append(i)print(dic)        #    {‘key1‘: [11, 22, 33, 44, 55], ‘key2‘: [77, 88, 99, 90]}方法二:from collections import defaultdictl1 = [11,22,33,44,55,77,88,99,90]my_dict=defaultdict(list)my_dict["k1"]my_dict["k2"]print(my_dict)         #defaultdict(<class ‘list‘>, {‘k1‘: [], ‘k2‘: []})for v in l1:    if v < 66:        my_dict["k1"].append(v)    else:        my_dict["k2"].append(v)print(my_dict)       #   defaultdict(<class ‘list‘>, {‘k1‘: [11, 22, 33, 44, 55], ‘k2‘: [77, 88, 99, 90]})练习2dic1 = {}  #--->  dic1={1:5,2:5,3:5.....20:5}方法一:for i in range(1,21):    dic1[i]=5print(dic1)方法二:dict={x:5 for x in range (1,21)}print(dict)方法三:dict1=defaultdict(lambda :5)for i in range(1,21):    dict1[i]print(dict1)方法四dic2 = dict.fromkeys(range(1,21),5)fromkeys  第一个参数中每一个拿出来和第二个参数组织成键值对  (神坑请注意:生成出来的键指向的value是同一个对象,改变其中一个,另一个也会跟着改变.)print(dic2)

5.Counterfrom collections import Counterc=Counter("gdhhhfffddggghhhfff")d=Counter([1,2,2,2,2,3,3,3,3,4,4,4,4])e=Counter((6,6,6,6,6,8,8,8,8,8,8,))b=Counter({"name":"alex","name":"eve","name":"mary"})print(c)       #  Counter({‘h‘: 6, ‘f‘: 6, ‘g‘: 4, ‘d‘: 3})     以字典的形式返回print(d)      #   Counter({2: 4, 3: 4, 4: 4, 1: 1})print(e)      #    Counter({8: 6, 6: 5})print(b)     #      Counter({‘name‘: ‘mary‘})三.random1.random(1,2)    #0到1之间的小数2.uniform(1.3)     #  大于1 小于3的小数3.randint(1,5)    #  1=<,=<5的整数4.randrange(1,10,2)   #  1到10之间的奇数 顾头不顾尾5.choice([1,"23",[4,5])   #   括号里面必须是有索引的数据类型6.sample([1,2,3,4,5,6,],2)    #列表元素任意两个组合.7.shuffle(item)   #    打乱item的顺序

原文地址:https://www.cnblogs.com/J-7-H-2-F-7/p/9288115.html

时间: 2024-11-02 21:01:16

python全栈开发 * 26知识点汇总 * 180709的相关文章

python全栈开发 * 10知识点汇总 * 180612

10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表?接收任意内容) (1)动态位置参数def eat(*args): print(args)eat("水果","蔬菜","肉",)# # 结果以元祖的形式呈现. : ('水果', '蔬菜', '肉') (2) 位置参数,动态位置参数: 动态参数必须在位置参数后?def eat(a,b,*args): print(a,b,args)e

python全栈开发* 02 知识点汇总 * 180531

运算符和编码 一  格式化输出 1  .输入  name ,age , job , hobby. 输出  :   ---------------  info of Mary  ------------------ Name  : Mary Age   : 18 Job  : Teacher Hobbie  :sing ----------------------end------------------------- eg:   name = input ("Name  : ") ag

python全栈开发 * 22 知识点汇总 * 180703

22 面向对象 --- 属性,类方法,静态方法,反射一.属性1.属性的定义:将方法伪装成属性,虽然在代码层面上没有任何高深之处,但让其看起来更合理. (类似于属性的方法)class Person: def __init__(self,name,weight,height): self.name=name self.weight=weight self.height=height @property def bmi(self): return self.weight/self.height**2p

python全栈开发 * 30知识点汇总 * 180713

30 re模块2一.正则表达式在线测试 在线测试工具 http://tool.chinaz.com/regex/(一).*?的用法: . 是任意字符 * 是取 0 至 无限长度 ? 是非贪婪模式.合在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:.*?x就是取前面任意长度的字符,直到一个x出现(二).问号"?"的四种用法 1.量词,重复零次或一次 2.非贪婪匹配(惰性匹配)的象征( .*? ) 3.?: 分组一开始加?:表示取消分组优先. 4.?p: 分组命名 html

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发

Python全栈开发 一文让你彻底明白Python装饰器原理,从此面试工作再也不怕了. 一.装饰器 装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理. 1.不带参数的装饰器 假设我定义了一个函数f,想要在不改变原来函数定义的情况下,在函数运行前打印出start,函数运行后打印出end,要实现这样一个功能该怎么实现?看下面如何用

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

Python全栈开发记录_第一篇

Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(代码行数:70行) 知识点1:优先级:not>and 短路原则:and:如果第一个条件的结论为假,那么 and 前后两个条件组成的表达式计算结果一定为假,后面的条件计算机不会进行计算 or:如果第一个条件的结论为真,那么or 前后两个条件组成的表达式计算结果一定为真,后面的条件计算机不会进行计算 知识点2:python区分大小写,常量需全部字母大写(默认这样写) python换行