#usr/bin/python #-*-coding:utf-8-* # 自定义异常 与 日志 import logging log_format = "%(asctime)s - %(filename)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) class MyException(Exception): pass try: sex = input("Please enter your gender:") if sex != "male" and sex != "female": raise MyException("only male or female !") except MyException as e: # print(e) logging.debug("第19行有错误:{}".format(e)) except Exception as e: print(e) finally: print("Over!") import logging log_format = "%(asctime)s - %(filename)s - %(message)s" # log_format = "{}-{}-{}".format(asctime,filename,message) date_format = "%m %d %Y %H:%M: %S %p" logging.basicConfig(level=logging.DEBUG,filename="my.log",format=log_format,datefmt=date_format) logging.debug("this is a debug log !") logging.info("this is a info log !") logging.warning("this is a warning log !") logging.error("this is a error log !") logging.critical("this is a critical log !") # random模块重要函数 # 1 )、random() 返回0<=n<1之间的随机实数n; # 2 )、choice(seq) 从序列seq中返回随机的元素; # 3 )、getrandbits(n) 以长整型形式返回n个随机位; # 4 )、shuffle(seq[, random]) 原地指定seq序列; # 5 )、sample(seq, n) 从序列seq中选择n个随机且独立的元素; # 三、random模块方法说明 # random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。 # random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。 # random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python random.randint。 # random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。 # random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。 # random.sample()可以从指定的序列中,随机的截取指定长度的片断,不作原地修改。 # python的各种推导式(列表推导式、字典推导式、集合推导式) # 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 # 共有三种推导,在Python2和3中都有支持: # 列表(list)推导式 # 字典(dict)推导式 # 集合(set)推导式 # 一、列表推导式 # 1、使用[]生成list # 例一: multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27] # 例二: def squared(x): return x * x multiples = [squared(i) for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729] # 2、使用()生成generator将俩表推导式的[]改成()即可得到生成器。 multiples = (i for i in range(30) if i % 3 is 0) print(type(multiples)) # Output: <type 'generator'> # 二、字典推导式 # 字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号。直接举例说明: # 例子一:大小写key合并 mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3} mcase_frequency = { k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys() if k.lower() in ['a', 'b']} print(mcase_frequency) # Output: {'a': 17, 'b': 34} # 例子二:快速更换key和value mcase = {'a': 10, 'b': 34} mcase_frequency = {v: k for k, v in mcase.items()} print(mcase_frequency) # Output: {10: 'a', 34: 'b'} # 三、集合推导式 # 它们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。 # 例一: squared = {x ** 2 for x in [1, 1, 2]} print(squared) # Output: set([1, 4])
python 异常 日志 和 推导式
最新推荐文章于 2020-11-26 10:19:25 发布