Python基础_常用模块

发布时间:2026/5/21 14:06:15

Python基础_常用模块 1. random模块random模块是Python的标准库之一提供了生成伪随机数的功能。它包含了各种生成随机数的函数以及随机选择和操作的工具函数。下面是random模块的一些常用函数和方法random()生成一个0到1之间的随机浮点数。randint(a, b)生成一个指定范围内的随机整数包括a和b。choice(seq)从给定的序列中随机选择一个元素。sample(seq, k)从给定序列中随机选择k个元素返回一个新的列表。shuffle(seq)随机打乱给定序列的顺序。importrandomprint(random.random())# 0.5251041245189677print(random.randint(1,100))# 64print(random.choice([1,2,3,4,5,6]))# 4print(random.sample([1,2,3,4,5,6],3))# [4, 5, 3]tmp[1,2,3,4,5,6]random.shuffle(tmp)print(tmp)# [4, 2, 6, 3, 5, 1]案例importrandom# (1) 模拟硬币投掷defflip_coin():ifrandom.random()0.5:returnHeadselse:returnTailsresultflip_coin()print(Coin landed on:,result)# Coin landed on: Heads# (2) 掷骰子defroll_dice():returnrandom.randint(1,6)dice_rollroll_dice()print(You rolled:,dice_roll)# You rolled: 5# (3) 抽奖名单participants[Alice,Bob,Charlie,David,Eve]winnerrandom.choice(participants)print(The winner is:,winner)# The winner is: Alice# (4) 双色球案例 双色球是中国国家彩票中心发行的一种彩票游戏其规则如下 双色球号码池 红色球号码池由1到33的红色球号码构成。 蓝色球号码池由1到16的蓝色球号码构成。 玩法 玩家需要选择6个红色球号码和1个蓝色球号码来进行投注。 红色球号码可以是任意6个1到33之间的号码顺序不限。 蓝色球号码是从1到16中选择一个号码。 注意 6个红色球号码是不能相同的 deflotto():lotto_list[]forred_tempinrandom.sample(range(1,34),6):# 因为红色球不能相同所以不能使用choice否则可能会导致相同。random.sample() 是‌无放回抽样‌保证从序列中抽取的元素‌不会重复‌即每个元素最多被抽取一次‌lotto_list.append(str(red_temp))bluestr(random.randint(1,17))lotto_list.append(blue)returnlotto_list retlotto()print(f红球{ .join(ret[:-1])}\n蓝球{ret[-1]})# 红球27 30 23 22 2 8 蓝球12# (5) 洗牌defget_pokes():poke_list[]poke_types[♥️,♦️,♠️,♣️]poke_nums[2,3,4,5,6,7,8,9,10,J,Q,K,A]forp_typeinpoke_types:forp_numinpoke_nums:poke_list.append(f{p_type}{p_num})returnpoke_list poke_listget_pokes()random.shuffle(poke_list)print(poke_list)# [♦️K, ♣️9, ♣️3, ♦️6, ♦️2, ♠️4, ♠️K, ♣️J, ♣️K, ♦️J, ♣️6, ♠️7, ♥️J, ♥️6, ♠️Q, ♣️8, ♣️A, ♦️4, ♣️5, ♦️7, ♠️6, ♣️2, ♠️10, ♦️10, ♥️K, ♥️10, ♦️Q, ♥️9, ♥️A, ♥️5, ♠️A, ♣️4, ♦️9, ♥️3, ♠️2, ♥️4, ♥️8, ♣️7, ♥️7, ♠️9, ♦️8, ♠️3, ♠️J, ♣️Q, ♠️5, ♥️Q, ♣️10, ♦️5, ♦️3, ♦️A, ♠️8, ♥️2]2. time模块time模块是Python标准库中的一个模块提供了与时间相关的功能和操作。它允许您获取当前时间、进行时间的格式化、进行时间的延迟等操作。下面是time模块的一些主要功能和函数获取当前时间time()返回从1970年1月1日午夜开始经过的秒数Unix时间戳。时间延迟和暂停sleep(secs)暂停指定的秒数。时间戳和时间元组互换localtime([secs])将秒数转换为当前时区的struct_time对象。mktime(t)将struct_time对象转换为秒数。gmtime([secs])将秒数转换为UTC时间的struct_time对象。时间格式化strftime(format, t)将时间元组对象t按照指定的格式format进行格式化输出。importtimeprint(time.time())# 1774450877.8686228time.sleep(1)print(time.localtime())# time.struct_time(tm_year2026, tm_mon3, tm_mday25, tm_hour23, tm_min1, tm_sec19, tm_wday2, tm_yday84, tm_isdst0)print(time.mktime(time.localtime()))# 1774450879.0print(time.gmtime())# time.struct_time(tm_year2026, tm_mon3, tm_mday25, tm_hour15, tm_min1, tm_sec19, tm_wday2, tm_yday84, tm_isdst0)print(time.strftime(%Y-%m-%d %H:%M:%S,time.localtime()))# 2026-03-25 23:01:19time模块中的函数返回的时间格式通常是以秒为单位的数值或struct_time对象。如果需要更高级的时间操作可以考虑使用datetime模块它提供了更多的时间处理功能。3. datetime模块datetime模块是Python标准库中的一个模块提供了处理日期和时间的功能。它建立在time模块的基础之上提供了更高级的日期和时间操作。它提供了多个类和函数用于创建、操作和格式化日期时间对象以及执行日期时间的计算和比较。下面是一些datetime模块中常用的功能1datetime类datetime类是Python标准库中datetime模块中的一个重要类用于表示日期和时间。它是一个组合了日期和时间的对象提供了各种属性和方法来进行日期和时间的处理。下面是datetime类的一些主要属性和方法importdatetime# (1) 获取datetime对象datetime.datetime.now()#返回当前的本地日期和时间。datetime.datetime.today()#返回当前日期的datetime对象时间部分为0时0分0秒# 创建特定日期和时间的对象datetime.datetime(year,month,day,hour0,minute0,second0,microsecond0)#创建一个代表特定日期和时间的 datetime 对象。# (2) datetime对象属性datetime_obj.year年份。 datetime_obj.month月份。 datetime_obj.day日期。 datetime_obj.hour小时。 datetime_obj.minute分钟。 datetime_obj.second秒数。# (3) datetime对象和格式化字符串转换# datetime对象转为格式化字符串current_datetimedatetime.datetime.now()format%Y-%m-%d %H:%M:%Sformatted_datetimecurrent_datetime.strftime(format)print(formatted_datetime)# 输出2022-01-01 12:30:45print(type(formatted_datetime))# 输出class str# 时间字符串转为datetime对象date_string2022-01-01 12:30:45format%Y-%m-%d %H:%M:%Sparsed_datetimedatetime.datetime.strptime(date_string,format)print(parsed_datetime)# 输出2022-01-01 12:30:452date类date类是Python标准库中datetime模块中的一个类用于表示日期。它提供了各种属性和方法来进行日期的处理。下面是date类的一些主要属性和方法importdatetime# (1) 获取当前日期对象todaydatetime.date.today()print(today)# (2) 日期对象属性date_obj.year年份。 date_obj.month月份。 date_obj.day日期。# (3) date对象转为格式化字符串todaydatetime.date.today()formatted_datetoday.strftime(%Y-%m-%d)print(formatted_date)# 输出2024-02-133timedelta类用于表示时间间隔的对象可以进行日期时间的加减运算。常用的方法包括timedelta(days0,seconds0,microseconds0,milliseconds0,minutes0,hours0,weeks0)创建一个 timedelta 对象。 timedelta.total_seconds()返回时间间隔的总秒数。importdatetime# 案例1fromdatetimeimportdate todaydate.today()birthdaydate(1998,5,15)agetoday-birthdayprint(Age:,age.days)# 案例2nowdatetime.datetime.now()retnowdatetime.timedelta(days3)print(ret)4. sys模块sys模块是 Python 标准库中的一个模块提供了与 Python 解释器和系统交互的功能。它提供了许多与系统相关的函数和变量可以访问和操作解释器的运行时环境、命令行参数、标准输入输出等。下面是sys模块中一些常用的函数和变量sys.argv命令行参数的列表包括脚本名称和传递给脚本的参数。 sys.exit([arg])退出当前程序的执行并返回可选的错误代码 arg。 sys.path一个列表包含用于查找模块的搜索路径。 sys.version当前 Python 解释器的版本信息。5. os模块os模块是 Python 标准库中的一个模块提供了与操作系统交互的功能。它允许你访问操作系统的文件系统、执行系统命令等。下面是os模块一些常用功能的介绍文件和目录操作os.getcwd(): 获取当前工作目录的路径。os.chdir(path): 修改当前工作目录为指定路径。os.listdir(path): 返回指定目录中的文件和目录列表。os.mkdir(path): 创建一个新的目录。os.makedirs(path): 递归创建目录包括中间目录。os.remove(path): 删除指定的文件。os.rmdir(path): 删除指定的空目录。os.removedirs(path): 递归删除目录包括所有子目录。os.rename(src, dst): 将文件或目录从src重命名为dst。操作系统命令os.system(command): 执行操作系统命令。os.popen(command): 执行操作系统命令并返回一个文件对象。路径操作os.path.join(path1, path2, ...): 将多个路径组合成一个路径。os.path.split(path): 将路径分割成目录和文件名。os.path.dirname(path): 返回路径的目录部分。os.path.basename(path): 返回路径的文件名部分。os.path.exists(path): 检查路径是否存在。6. json模块【1】基本概念与语法序列化是将数据结构或对象转换为字节流二进制数据以便存储或传输反序列化是将字节流还原为原始数据结构或对象的过程。json模块是Python标准库中的一个模块用于处理JSONJavaScript Object Notation数据。它提供了一组函数来解析和生成JSON数据使得在Python中处理JSON变得非常方便。importjson# 序列化 将本语言支持的高级数据对象转为json格式字符串的过程num3.14nameyuanl[1,2,3]t(4,5,6)d{name:yuan,age:18,is_married:False,gf:None}print(repr(json.dumps(num)))# 3.14print(repr(json.dumps(name)))# yuanprint(repr(json.dumps(l)))# [1, 2, 3]print(repr(json.dumps(t)))# [4,5,6]print(repr(json.dumps(d)))# {name:yuan,age:18,is_married:false,gf:null}# 存储和传输# 反序列化将json格式字符串转为本语言支持的数据对象格式# 案例1d{name:yuan,age:18,is_married:False,gf:None}json_djson.dumps(d)print(json_d,type(json_d))datajson.loads(json_d)print(data,type(data))namedata.get(name)print(name)# 案例2:s{name:yuan,age:18,isMarried:False}# 重点反序列化前提数据得是json格式的字符串datajson.loads(s)print(data,type(data))s2[{name:yuan,age:18,isMarried:false},{name:rain,age:28,isMarried:true}]data2json.loads(s2)print(data2,type(data2))print(data2[1].get(name))# 思考json.loads({name: yuan, age: 23, is_married: 0}) 可以吗importjsonprint(json.loads({name: yuan, age: 23, is_married: 0}))# {name: yuan, age: 23, is_married: 0}【2】应用之持久化存储importjson dic{name:yuan,age:23,is_married:False}datajson.dumps(dic)# 序列化将python的字典转换为json格式的字符串print(type,type(data))# class strwithopen(json.txt,w)asf:f.write(data)# 等价于json.dump(dic,f)withopen(json.txt)asf:# 反序列化成为python的字典等价于dicjson.load(f)dataf.read()dicjson.loads(data)print(type(dic))【3】应用之网络传输前端//序列化 data{user:yuan,pwd:123}console.log(JSON.stringify(data))//{user:yuan,pwd:123}//反序列化 res_json{name: yuan, age: 23, is_married: 0}let resJSON.parse(res_json)console.log(res)后端importjson# 反序列化data{user:yuan,pwd:123}data_dictjson.loads(data)print(type(data_dict))# 序列化res{name:yuan,age:23,is_married:0}res_jsonjson.dumps(res)# 序列化将python的字典转换为json格式的字符串print(repr(res_json))# {name: yuan, age: 23, is_married: 0}7. 日志模块python中的日志库logging配置通常比较复杂构建日志服务器时也不是方便。标准库logging的替代品是loguru使用起来就简单的多。开箱即用使用方便得多另外日志输出内置了彩色功能颜色和非颜色控制很方便更加友好。loguru的基本使用fromloguruimportlogger# 写入到文件# logger.remove(handler_idNone)# rotation 配置日志滚动记录的机制:rotation200 MBlogger.add(mylog.log,levelERROR,rotation200 MB)# 基本使用可以打印到console也可以打印到文件中去。logger.debug(这是一条测试日志)logger.info(这是一条信息日志)logger.success(这是一条成功日志)logger.warning(这是一条警告日志)logger.error(这是一条错误日志)logger.critical(这是一条严重错误日志)默认的输出格式是时间、级别、模块、行号以及日志内容。loguru的基本配置importsysfromloguruimportlogger logger.configure(handlers[{sink:sys.stderr,# 表示输出到终端# 表示日志格式化format:gb{time:YYYY-MM-DD HH:mm:ss.SSS}/b/g |lvl{level:8}/| {name} : {module}:{line:4} | cmymodule/ | - lvl{message}/,colorize:True,# 表示显示颜色。level:WARNING# 日志级别},{sink:first.log,format:{time:YYYY-MM-DD HH:mm:ss.SSS} |{level:8}| {name} : {module}:{line:4} | mymodule | - {message},colorize:True},])logger.debug(this is debug)logger.info(this is info)logger.warning(this is warning)logger.error(this is error)logger.critical(this is critical)常见的key及其描述KeyDescriptiontime发出日志调用时的可感知的本地时间level用于记录消息的严重程度name进行日志记录调用的__name__module进行日志记录调用的模块line源代码中的行号message记录的消息(尚未格式化)function进行日志记录调用的函数thread进行日志记录调用的线程名process进行日志记录调用的进程名file进行日志记录调用的文件extra用户绑定的属性字典(参见bind())exception格式化异常(如果有)否则为’ None ’elapsed从程序开始经过的时间差** 常用的颜色和样式标签**颜色简称样式简称黑色k粗体b蓝色e暗淡d青色c正常n绿色g斜体i洋红色m下划线u红色r删除线s白色w反转v黄色y闪烁l

相关新闻