python:一日总结

日志: 

 日志是一种可以追踪某些软件运行时所发生事件的方法。

      概念:  用来记录程序中, 你认为重要的消息.

日志的作用 : 

      可以简单总结为以下3点:

                                            1. 程序调试

                                                    2. 了解软件程序运行情况,是否正常

                                                         3.  软件程序运行故障分析与问题定位

日志的等级     在python中最常用的有五种等级

日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

调试 Debug      一般信息Info     警告Warning      错误Error      致命Critical

说明:

      上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次减少的;

一种方法:

#日志的使用
#简单使用,在控制面板输出
import logging    #先引入模块logging

logging.debug('this is a debug')
logging.info('this is a info')
logging.warning('this is a warning')
logging.error('this is a error')
logging.critical('this is a critical')
#输出为: WARNING:root:this is a warning
#          ERROR:root:this is a error
#         CRITICAL:root:this is a critical
'''
只输出三条: 
    因为logging模块提供的日志记录函数所使用的日志器设置的日志级别是WARNING,
因此只有 WARNING 级别的日志记录以及大于它的 ERROR 和 CRITICAL 级别的日志记录被输出了
而小于它的DEBUG和INFO级别的日志记录被丢弃了。
'''

另一种方法:

#简单使用,在控制面板输出
import logging    #先引入模块logging
logging.log(logging.DEBUG,'this is a debug')
logging.log(logging.INFO,'this is a info')
logging.log(logging.WARNING,'this is a warning')
logging.log(logging.ERROR,'this is a error')
logging.log(logging.CRITICAL,'this is a critical')
#输出为三条 同上
#          WARNING:root:this is a warning       
#          ERROR:root:this is a error
#         CRITICAL:root:this is a critical

上面输出结果中每行日志记录的各个字段含义分别是:

            日志级别  :  日志器名称  :   日志内容


将日志输出到文件中 ,需使用函数 :

     logging.basicConfig(**kwargs     该方法用于为logging日志系统做一些基本配   

filename指定日志输出目标文件的文件名,指定该设置项后日志信心就不会被输出到控制台了
format指定日志格式字符串,即指定日志输出时所包含的字段信息以及它们的顺序。logging模块定义的格式字段下面会列出。
datefmt指定日期/时间格式。需要注意的是,该选项要在format中包含时间字段%(asctime)s时才有效
level指定日志器的日志级别      

函数说明: 可以内置的参数

#简单使用,在文件中输出  并配置
import logging    #先引入模块logging
log_format='%(asctime)s %(levelname)s %(message)s '  # 指定日志格式字符串,
DATE_FORMAT = "%m/%d/%Y %H:%M:%S:%p"    #指定时间的输出
logging.basicConfig(level=logging.DEBUG , filename='my.log' , format=log_format , datefmt=DATE_FORMAT)
logging.log(logging.DEBUG,'this is a debug')
logging.log(logging.INFO,'this is a info')
logging.log(logging.WARNING,'this is a warning')
logging.log(logging.ERROR,'this is a error')
logging.log(logging.CRITICAL,'this is a critical')

Random (随机数)

random()是不能直接访问的,需要导入 random 模块

    语法:   import random

1.random.random()

    random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0

import random   #注   需要引入模块
print(random.random())  
#打印为:  0.6538968726581385    每次打印都不相同

2. random.uniform()

   random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限, 一个是下限. 如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

import random   #注  需要引入模块
print( random.uniform(1,9))   #打印为: 1.59368996297742
print( random.uniform(10,20))   #打印为 : 17.90086045138722
#注 每次打印的结果都各不相同

3.random.randint()

    random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

import random   #注需要引入模块
print( random.randint(1,9))   #打印为:   2
print(random.randint(20,20))   #结果永远是20  
#print(random.randint(20, 10)) #该语句是错误的。下限必须小于上限

4.random.randrange()

         random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。

import random
print(random.randrange(10,100,2))  #打印为 :26
print(random.randrange(1,9,6))  #打印为 :1或者7
#每次打印都不相同
5.random.choice()

  random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。

import random
print(random.choice("人生苦短,我学python"))  #打印为: 我     字符串
print(random.choice(["JGood","is","a","handsome","boy"]))  #打印为:  is     列表
print(random.choice(("Tuple","List","Dict")))  #打印为: Dict     元组
#每次打印都各不相同

6.random.choices()  扩展  

   其函数原型为:random.choice(sequence,k=n)   输出结果为列表  n  为

import random
print(random.choices("人生苦短,我学python",k=3))  #打印为:   ['p', ',', '苦']
print(random.choices(["JGood","is","a","handsome","boy"],k=2))  #打印为: ['is', 'handsome']
print(random.choices(("Tuple","List","Dict"),k=2))  #打印为: ['List', 'Dict']
#每次打印都会组成列表形式

7.random.shuffle()

  random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。

import random
lis=["JGood","is","a","handsome","boy"]
print(random.shuffle(lis))  #如果这样则返回None
#正确的使用方法:
random.shuffle(lis)
print(lis)   #打印为: ['a', 'handsome', 'JGood', 'boy', 'is']

8.random.sample

  random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。

import random
print(random.sample(range(20),6))  #打印为: [19, 11, 18, 17, 10, 9]
print(random.sample(["JGood","is","a","handsome","boy"],3))   #打印为['boy', 'handsome', 'is']   


模块:

import sys
print(sys.path)路径。打印后是一个列表,可以向其中追加路径

reload()重新加载路径

from   需要引入的文件路径    import    * (   *号表示全部    也可以指定)       

模块互相调用不可以,会产生死锁



推  导  : 

推导式是Python中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点。推导式包括:

1.列表推导式

2.字典推导式

3.集合推导式

           不多说 , 上干货

1.列表推导式

#例1:整除3的数字列表
number=[]
for i in range(20):
    if i%3==0:
       number.append(i)
print(number)
#打印为: [0, 3, 6, 9, 12, 15, 18]
#   使用    列表推导式
nums=[x for x in range(20) if x%3==0]   #使用中括号
print(nums)   #打印为: [0, 3, 6, 9, 12, 15, 18]
#也可以这样
nums=[x+x for x in range(20) if x%3==0]   #使用中括号
print(nums)   #打印为:[0, 6, 12, 18, 24, 30, 36]

#列表-->可以调方法
def squared(x):
    return  x*x
numb=[squared(x) for x in range(20) if x%3==0]
print(numb)   #打印为: [0, 9, 36, 81, 144, 225, 324]

      使用()生成 generator 将列表推导式的 [ ] 改成 ( ) 即可得

到生器。--yeild

num=(x for x in range(20) if x%3==0)
print(type(num))  #打印为:<class 'generator'>
#如果想打印出来有两种办法:
#办法一:
print(num.__next__())  #使用__next__()   一个个打印 得到 0   想要得到别的数字 可以在继续打印
#方法二:
print([y for y in num])  #使用推导的方法  [3, 6, 9, 12, 15, 18] 

2.字典推导式

          典推导和列表推导的使用方法是类似的,只不过中括号该改成大括号。

直接举例说明:  快速更换key和value

# #字典推导式
#使用推导的方法
dic={'name':'jock','age':16,'class':'七班'}
new_dic={v:k for k,v in dic.items()}
print(new_dic)   #打印为: {'jock': 'name', 16: 'age', '七班': 'class'}
#使用for循环的方法
new_dict={}
for k,v in dic.items():
    new_dict[v]=k
print(new_dict)   #打印为{'jock': 'name', 16: 'age', '七班': 'class'}

3.集合推导式

          它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

# #集合推导式
#求平方:
sets={x**2 for x in range(10)}
print(type(sets))   #打印为:<class 'set'>
print(sets)  #打印为:{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

让我们用一些例子,证明推导的简单快捷:

例1: 用集合推导 字符串长度的集合

strings = ['a','is','with','if','file','exception']
len=[len(s) for s in strings]
print(len)  #打印为: [1, 2, 4, 2, 4, 9]  有长度相同的会只留一个 ,这在实际上也非常有用

例2: 将单词长度大于3的转为大写输出

#将单词长度大于3的转为大写输出
names = ['bob','tom','alice','jerry','wendy','smith']
name=[name.upper() for name in names if  len(name)>3 ]
print(name)   #打印为: ['ALICE', 'JERRY', 'WENDY', 'SMITH']

例3:求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表:

# #求(x,y)其中x是0-5之间的偶数   y是0-5之间的奇数组成的元组列表
tup=[(x,y) for x in range(6) if x%2==0 for y in range(6) if y%2==1]
print(tup)  #输出为: [(0, 1), (0, 3), (0, 5), (2, 1), (2, 3), (2, 5), (4, 1), (4, 3), (4, 5)]


          勤苦修行得自在,道力有边边亦无边!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值