努力自我成长的网工 - python
type: channel
link: https://www.lovejoan.com/tag/python/
items: 正则表达式基础
items: pandas初识
items: netmiko简介与使用
items: easygui的简单使用
items: python循环与分支
items: os模块下常用函数和方法
items: python操作文件
items: python字典
items: python元组
items: python函数一

正则表达式基础
type: item
date: 2023-05-23T14:02:00+08:00
description: 正则表达式学习概述正则表达式，又称规则表达式,（Regular Expression，在代码中常简写为regex、regexp或RE），是一种文本模式，包括普通字符（例如，a 到 z 之间的字母）和特殊字符（称为"元字符"），是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串，通常被用来检索、替换那些符合某个模式（规则）的文本。功能：查找验证字符替换字符表达式使用正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合，组成一个“规则字符串”，这个“规则字符串”用来表达对字符串的一种过滤逻辑。给定一个正则表达式和另一个字符串，可以通过正则表达式从字符串中获取我们想要的特定部分。普通字符常见的如0,1,2,3,4,5，6,7,8,9，A,B,C,D,E,a,b,c,d,e,f一个数字或字母表示一个字符，占一个位置。# abc只匹配abc # 123匹配123元字符元字符作用示例^匹配行开始位置^abc$匹配行结束位置abc$\b匹配单词的开始或结束abc\b.匹配除换行符之外的任意字符.abc\w(小写)匹配单词字符（不仅仅是字母，还有下划线、数字和汉字）,除了特殊符号\w\W(大写)和\w相反，匹配特殊字符\W\s(小写)匹配的是任意的空白字符（如空格、制表符、换行符、中文全角空格等）；\s\S(大写)匹配的是任意的非空白字符，和\s相反，匹配任意字符\S\d(小写)匹配任意的数字\d\D(大写)匹配任意的非数字字符\D[]表示在中括号里面任意字符[01234]表示匹配0,1,2,3,也可以使用[0-9][^a]表示匹配除了a字符的任意字符表示反向匹配\转义字符，用于需要匹配^<>等字符\*，匹配{}限定符，表示匹配次数，{3}表示匹配3个字符,{1,3}表示匹配至少一次，至多3个字符\d{3}*表示匹配任意字符一次*+表示匹配至少重复一次\S+?表示至少重复0次或1次?{n}?懒惰匹配。表示尽可能少的匹配重复{n}?\表示或关系joan\Joan分组使用()将匹配表达式包含。使用(\d{1,3}.){3}\d{1,3}匹配IPV4地址。将括号内作为一个整体看待。匹配顺序转义字符()和[]限定符*、+、？、{n}、{n,}，{n,m}位置和顺序：^,$,\|或运算符常用正则表达式一、校验数字的表达式 数字：^[0-9]*$ n位的数字：^\d{n}$ 至少n位的数字：^\d{n,}$ m-n位的数字：^\d{m,n}$ 零和非零开头的数字：^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字：^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数：^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数：^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数：^[0-9]+(\.[0-9]{2})?$ 有1~3位小数的正实数：^[0-9]+(\.[0-9]{1,3})?$ 非零的正整数：^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 非零的负整数：^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 非负整数：^\d+$ 或 ^[1-9]\d*|0$ 非正整数：^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数：^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 非正浮点数：^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 正浮点数：^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 负浮点数：^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数：^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 校验字符的表达式 汉字：^[\u4e00-\u9fa5]{0,}$ 英文和数字：^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$ 长度为3-20的所有字符：^.{3,20}$ 由26个英文字母组成的字符串：^[A-Z…

pandas初识
type: item
date: 2023-05-22T11:46:00+08:00
description: pandas介绍pandas 是 Python 的核心数据分析支持库，提供了快速、灵活、明确的数据结构，旨在简单、直观地处理关系型、标记型数据。基本数据结构Series 和 DataFrame是pandas的两个核心数据结构，分别代表着一维的序列和二维的表结构。基于这两种数据结构，Pandas 可以对数据进行导入、清洗、处理、统计和输出。Series类似于字典结构，由索引和值构成index:values,默认索引是int类型，从0开始。# 导入模块 import pandas as pd # 使用Series构造方法 data = pd.Series([1,2,3,4,5]) print(data)Series类型数据创建一个类似字典和列表的数据对象。s = pd.Series(data,index=index,name=None) 参数： data:数据 index,索引，默认是int，从0开始 name,别名创建1.通过列表创建list1 = ['apple','pear','banana','peach'] data = pd.Series(list1) print(data) # 输出 0 apple 1 pear 2 banana 3 peach dtype: object # 也可以手动指定索引,可以是列表等迭代对象，需要注意与值对应，否则会报错 list1 = ['apple','pear','banana','peach'] data = pd.Series(list1,index=['First','Second','Third','Fourth']) print(data)2.通过字典创建字典是key-value形式，会自动将索引录入index作为索引。info = {'name':'chuck','age':25,'sex':'男','height':'165cm'} data = pd.Series(info) print(data) # 输出 name chuck age 25 sex 男 height 165cm dtype: object3.通过numpy的数组创建还没学，以后再补上。查看索引或者值# 直接输出Series对象 print(data) # 输出 name chuck age 25 sex 男 height 165cm weight 55kg Name: test, dtype: object # 查看所有索引 print(data.index) # 输出 Index(['name', 'age', 'sex', 'height', 'weight'], dtype='object') # 查看所有的值 print(data.values) # 输出 ['chuck' 25 '男' '165cm' '55kg'] # 通过指定的索引查看对应的值，可以通过下标或者索引名称 print(data['weight']) print(data[0]) print(data[1:3]) # 输出 55kg chuck添加和修改# 直接通过键值对赋值添加 data['wage'] = '9500' print(data['wage']) # 输出 9500常用属性和方法values属性返回一个数组，可以进行切片截取操作。info = {'name':'chuck','age':25,'sex':'男','height':'165cm'} data = pd.Series(info,name='test') val = data.values for i in val: print(i) # 输出 chuck 25 男 165cm # 切片 print(val[0:2])index属性获取索引，返回一个数组系列。info = {'name':'chuck','age':25,'sex':'男','height':'165cm'} data = pd.Series(info,name='test') indexs = data.index for i in indexs: print(i) # 输出 name age sex heightdtype属性，返回基础数据的类型。print(data.dtype)size属性，返回基础数据元素的数量。print(data.size)hasnans属性，如果数据有Nan,则返回True,否则返回Falseprint(data.hasnans)name属性，给Series索引命名。data = pd.Series(info,name='test') print(data.name)loc/iloc属性访问指定的值print(data.loc['height']…

netmiko简介与使用
type: item
date: 2023-05-15T12:28:00+08:00
description: neimikoPython基于CLI模式与网络设备进行交互的工具包有很多，而netmiko与paramiko无疑是这类工具包中的两颗璀璨明珠。它是工程师Kirk Byers 于2015年发布的一个用于简化众多厂商网络设备CLI连接（ssh、telnet、serial）的工具类。实际2015年的版本只支持ssh，所以它最早是为了简化ssh通用工具类paramiko的连接和操作（后续netmiko已经支持了telnet和serial），所以它的名字从中取了"miko"，又因其垂直于网络自动化领域，所以又添加了“net”，组成了netmiko的名称。neimiko基本满足了对主流网络设备的支持，可以辅以paramiko和telnlib的功能实现复杂的需求。安装pip install netmiko支持的平台huawei(华为)hp_comware(华三)fortinet(飞塔)cisco_asa(思科ASA)cisco_ios(思科交换机)Ruijie Networks(锐捷)Arubajuniper创建连接网络运维对设备管理的第一步就是登录设备，可以使用netmiko的函数ConnectHandlerfrom netmiko import ConnectHandlerConnectHandler实例化参数包括设备类型，设备地址，账号密码等信息。返回一个长连接字典对象。示例：conn = ConnectHandler(device_type='hp_comware', host='192.168.128.208', username='admin', password='WZS134125', port=22) print(conn) '''以上输出一个实际的连接对象 <netmiko.cisco.cisco_ios.CiscoIosSSH object at 0x000002DBC9F23F10> ''' conn.disconnect()常用的参数：说明参数名ip设备IP地址host设备host名称，需要可以解析出IP地址username用户名password密码secretenable密码，提权时需要输入的密码port端口，会根据device_type自动判断（如有“ssh”字符串是22，如有“telnet”是23）可以用户指定device_type设备的驱动名称conn_timeout连接超时时间，默认为5秒，如果网络条件不好，建议适当增加，尤其是广域网或者国际网络timeout执行命令的超时时间，根据情况适当延长，默认为100秒session_log记录log的路径，如填写则会将与设备的所有操作记录session_log_file_mode记录log的模式，覆盖"write" ，追加 "append"，默认覆盖global_delay_factor默认的全局的延迟因子，值为1，但是一般不修改。fast_cli快速模式，默认False，不开启，netmiko内部提供一种优化性能的方式，设置为True后，在与设备交互过程中读取隧道中信息的频率会加快（全局延迟因子与单个方法中的延迟因子取较小值）。命令执行netmiko的很多入门也以show命令演示为主，主要用到了netmiko的send_command方法与send_commnad_timing方法,都用于发送单条display/show命令。send_command方法# 官方文档 # https://ktbyers.github.io/netmiko/docs/netmiko/index.html#netmiko.BaseConnection.send_command def send_command (self, command_string: str, expect_string: Optional[str] = None, read_timeout: float = 10.0, delay_factor: Optional[float] = None, max_loops: Optional[int] = None, auto_find_prompt: bool = True, strip_prompt: bool = True, strip_command: bool = True, normalize: bool = True, use_textfsm: bool = False, textfsm_template: Optional[str] = None, use_ttp: bool = False, ttp_template: Optional[str] = None, use_genie: bool = False, cmd_verify: bool = …

easygui的简单使用
type: item
date: 2023-04-20T14:00:00+08:00
description: Easygui模块的使用安装pip3 install easygui常用函数easygui是一个Python模块，用于创建图形用户界面(GUI)。它提供了多种对话框、输入框、选择框等界面元素，使得Python编程更加友好和直观。下面是一些常用的easygui函数和模块：查看示例：easygui.egdemo()msgboxeasygui.msgbox(msg, title=' ', ok_button='OK', image=None, root=None)：创建一个消息框，显示消息msg，并带有一个“OK”按钮。可选的参数包括对话框的标题title、按钮的文本ok_button、图像image和root窗口对象。一种用于显示简单信息的对话框，通常用于显示提示信息、警告信息或错误信息等。它的常用参数如下：msg：要显示的信息内容，可以是字符串、数字等。 title：对话框的标题。 ok_button：指定显示的按钮文本，默认为“OK”。 image：指定显示的图标，默认为None。可以使用easygui提供的图标（如"tiger.gif"）或者指定自定义的图标路径。 msgbox对话框只有一个确定按钮，用于用户确认所显示的信息。它的返回值是一个字符串，表示用户按下的按钮文本。 示例： import easygui as e e.msgbox(msg="打开一个消息窗口",title="游戏开始",image="C:\\Users\\Administrator\\Pictures\\Camera Roll\\33.gif")buttonboxeasygui.buttonbox(msg, title=' ', choices=('Button1', 'Button2', 'Button3'), image=None, root=None)： # 示例 import easygui as e user_choice = e.buttonbox(msg="请选择对应选项",title="游戏初始化",choices=("开始游戏","退出游戏"))创建一个按钮框，显示消息msg，并带有一组按钮，返回被点击的按钮的文本。可选的参数包括对话框的标题title、按钮的文本choices、图像image和root窗口对象。choiceboxeasygui.choicebox(msg, title=' ', choices=('Choice1', 'Choice2', 'Choice3'), preselect=0, image=None, root=None)：创建一个选择框，显示消息msg，并带有一组选项，返回被选中的选项的文本。可选的参数包括对话框的标题title、选项的文本choices、默认选中的选项preselect、图像image和root窗口对象。enterboxeasygui.enterbox(msg, title=' ', default='', strip=True, image=None, root=None)：创建一个文本输入框，显示消息msg，并返回用户输入的字符串。可选的参数包括对话框的标题title、默认字符串default、是否去掉字符串两端的空格strip、图像image和root窗口对象。ynboxeasygui.ynbox(msg, title=' ', choices=('Yes', 'No'), image=None, default_choice='Yes', cancel_choice='No', root=None)：创建一个包含“是”和“否”两个按钮的确认框，显示消息msg，并返回True或False。可选的参数包括对话框的标题title、按钮的文本choices、默认选中的按钮default_choice、取消按钮的文本cancel_choice、图像image和root窗口对象。multenterboxeasygui.multenterbox(msg, title=' ', fields=[], values=[], text_color='black', background_color='white', show=True, image=None, root=None)：创建一个多行文本输入框，显示消息msg，并返回用户输入的字符串列表。可选的参数包括对话框的标题title、输入框的名称列表fields、默认值列表values、文本颜色text_color、背景颜色background_color、是否显示输入框名称show、图像image和root窗口对象。fileopenboxeasygui.fileopenbox(msg=None, title=None, default='*'…

python循环与分支
type: item
date: 2023-04-19T14:35:00+08:00
description: 循环Python中的循环语句包括for循环和while循环，它们都可以用来遍历序列或执行重复操作。下面是一些循环的基本用法：for循环for循环用于遍历序列（字符串、列表、元组等）中的每个元素，也可以使用range函数来生成一个整数序列进行遍历。# for循环格式： for 变量 in 序列: 循环体语句 # 遍历序列 fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit) # 遍历整数序列 for i in range(1, 5): print(i) while循环while循环用于在条件满足的情况下重复执行一段代码块，需要注意可能导致死循环，需要设置跳出循环的条件。# while循环格式，条件表达式为True时执行循环体 while 条件: 循环体语句 # while循环 count = 0 while count < 5: print(count) count += 1在循环中，还可以使用break和continue语句进行控制：break语句可以立即跳出循环；continue语句可以跳过当前循环，继续执行下一次循环。# break语句 fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: if fruit == 'banana': break print(fruit) continue语句fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: if fruit == 'banana': continue print(fruit)循环语句还可以和else语句一起使用，当循环正常执行完毕时，else语句会被执行。for循环中的else语句fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit) else: print('No more fruits') while循环中的else语句count = 0 while count < 5: print(count) count += 1 else: print('count >= 5')以上就是Python中循环语句的基本用法，可以根据实际需要灵活使用。分支语句if-else语句if语句是Python中的一种分支语句，用于在满足某个条件时执行一段代码块，否则执行另一段代码块。if语句的基本语法格式如下：if 条件: 代码块1 else: 代码块2条件是一个表达式，如果表达式的值为True，则执行代码块1；否则执行代码块2。代码块1和代码块2可以是任意数量的语句块，缩进的语句块是属于相应代码块的。if-elif-else语句if-elif-else语句是Python中的一种分支语句，用于在多个条件中选择一个分支执行代码块。if-elif-else语句的基本语法格式如下：if 条件1: 代码块1 elif 条件2: 代码块2 elif 条件3: 代码块3 ... else: 代码块nif-elif-else语句判断输入的整数num是正数、负数还是零。如果num大于0，则执行代码块1，打印输出num是正数；否则，判断elif后面的条件2，如果num小于0，则执行代码块2，打印输出num是负数；否则，执行else后面的代码块3，打印输出num是零。在使用if-elif-else语句时，需要注意各个条件的设置和代码块的缩进。

os模块下常用函数和方法
type: item
date: 2023-04-19T14:05:00+08:00
description: 模块模块是一个包含 Python 代码的文件，可以在其他 Python 程序中被引用和调用。模块使得代码可以更好地组织和复用，避免了重复编写相同的代码。一个 Python 模块通常包含变量、函数和类等各种代码块，这些代码块可以在其他 Python 程序中被引用和使用。使用 import 语句可以将一个模块引入到当前程序中，并使用其中的代码。Python 模块可以是标准库模块、第三方库模块或自定义模块等，它们可以用于完成各种任务，如数学计算、网络编程、文件处理、数据可视化等。常用的标准库模块有 os、sys、re、math 等，常用的第三方库模块有 numpy、pandas、matplotlib 等，用户也可以根据自己的需要编写自定义模块。在 Python 中，模块可以是一个单独的 .py 文件，也可以是一个包含多个 .py 文件的目录。如果一个目录中包含一个名为 __init__.py 的文件，那么该目录就可以作为一个 Python 包来使用。通过将模块组织成包的方式，可以更好地组织代码，并且可以避免模块命名冲突的问题。os模块os 模块是 Python 标准库中的一个模块，提供了一系列与操作系统交互的函数和方法，可以用来管理文件和目录、处理进程和环境变量等。下面介绍一些 os 模块的常用函数和方法：os.name：返回当前操作系统的名称，Windows 下为 'nt'，Linux/Unix 下为 'posix'。os.getcwd()：返回当前工作目录的绝对路径。os.chdir(path)：将当前工作目录改变为指定路径。os.listdir(path)：返回指定目录下的所有文件和目录名。os.mkdir(path)：创建一个新目录。os.makedirs(path)：递归地创建多级目录。os.rmdir(path)：删除指定目录，只能删除空目录。os.removedirs(path)：递归地删除多级目录，如果中间某个目录非空则无法删除。os.path.abspath(path)：返回指定路径的绝对路径。os.path.exists(path)：判断指定路径是否存在。os.path.isdir(path)：判断指定路径是否为目录。os.path.isfile(path)：判断指定路径是否为文件。以上函数和方法只是 os 模块中的一部分，还有许多其他函数和方法可以用来处理文件、进程、环境变量等。在使用 os 模块时需要注意，一些操作需要具有相应的权限才能执行，否则会出现权限错误。getcwd()获取当前工作目录的绝对路径import os # 输出当前工作目录的路径 print(os.getcwd())chdir(path)改变工作目录import os # 输出当前工作目录的路径 print(os.getcwd()) # 切换工作路径 os.chdir("./python基础") # 再输出当前工作路径 print(os.getcwd())listdir(path='.')列出指定目录下的文件结构import os # 输出当前目录下的文件和文件夹，不能递归列出子目录下文件 print(os.listdir())mkdir(path)创建目录import os # 查看当前目录 print(os.getcwd()) # 创建目录 os.mkdir("测试目录") # 列出当前文件夹下的文件和目录 print(os.listdir("."))makedirs(path)创建多层目录import os # 查看当前目录 print(os.getcwd()) # 创建目录 os.makedirs("测试目录\\a\\b")remove(path)删除文件import os # 使用相对路径 os.remove("abc.txt") # 使用绝对路径 os.remove("E:\\Files\\python\\sw.log")rmdir(path)删除单层目录import os # 只能删除一层目录，多层目录会报错 os.rmdir("E:\Files\python\测试目录\\a\\b")removedirs(path)递归删除多层目录import os # 删除多层目录 os.removedirs("测试目录/a")rename(old,new)重命名文件或目录import os # 就目录为测试目录，重命名为C os.rename("测试目录","C") # 重命名文件，需要注意路径是否正确，否则可能报错文件不存在 with open("C\\abc.txt","wt",encoding="utf-8") as f: f.write("这是一个测试文件") os.rename("C\\abc.txt","C\\A.txt")s…

python操作文件
type: item
date: 2023-04-18T16:43:00+08:00
description: 打开文件使用open()函数打开文件，具体参数为：open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)参数解析：1、file：必须指定，表示要打开的文件名或文件路径。文件名可以是一个字符串类型的文件名，也可以是一个文件描述符（例如在 Unix/Linux 中，可以使用类似 os.open() 的函数获取文件描述符）。2、mode：用于指定打开文件的模式，有如下几种：模式用法'r'只读模式。打开文件后只能读取文件内容，不能进行写入操作。如果文件不存在，则抛出异常。'w'写入模式。打开文件后只能进行写入操作，如果文件不存在则创建文件。如果文件已经存在，则覆盖文件内容。'a'追加模式。打开文件后只能进行写入操作，如果文件不存在则创建文件。如果文件已经存在，则在文件末尾追加新的内容。'x'独占写入模式。打开文件后只能进行写入操作，如果文件已经存在则抛出异常。'b'二进制模式。打开文件后读写的是二进制数据而不是文本数据。这种模式常用于处理非文本文件，例如图像、音频、视频等。't'文本模式。打开文件后读写的是文本数据。这种模式是默认模式。'+'读写模式。打开文件后既可以进行读取操作也可以进行写入操作。如果文件不存在则创建文件。这些模式可以组合使用，例如 'rb' 表示以二进制模式打开文件，并进行读取操作。另外需要注意的是，mode 参数还可以在模式后面加上 t 或者 b 来指定文件的文本模式或者二进制模式。例如，'rt' 表示以文本模式打开文件进行读取操作，'wb' 表示以二进制模式打开文件进行写入操作。如果不指定 t 或 b，则默认为文本模式3、buffering：表示缓冲区大小，用于控制读写操作时数据的缓存策略。有如下几种取值：0：表示不进行缓存，所有数据都直接写入或读取。1：表示使用行缓存，数据会先缓存到内存中，直到读取到一行完整的数据后再一次性写入或读取。大于1的整数：表示使用指定大小的缓存区，缓存区的大小就是这个整数。负数：表示使用默认缓存大小，具体大小与系统有关。4、encoding：表示文件的编码方式，例如 'utf-8'、'gbk' 等。如果不指定该参数，则使用系统默认编码。encoding 参数是 Python 中 open() 函数的可选参数之一，它用于指定文件的编码格式。在文本模式下打开文件时，如果不指定 encoding 参数，则默认使用操作系统的默认编码格式。如果要读写的文本文件使用的编码格式与操作系统的默认编码格式不同，那么就需要通过 encoding 参数指定正确的编码格式。例如，如果要读写一个使用 UTF-8 编码的文本文件，就需要在打开文件时指定 encoding='utf-8'。常用的编码格式有：utf-8：一种常用的 Unicode 编码格式，适用于多种语言。gbk：一种中文编码格式，适用于简体中文操作系统。gb2312：一种早期的中文编码格式，适用于简体中文操作系统。big5：一种繁体中文编码格式，适用于繁体中文操作系统。在打开文件时指定正确的编码格式可以确保程序正确地读取和写入文件内容。如果没有正确地指定编码格式，则可能会导致文件内容乱码或者读取失败的问题。5、errors：用于控制在编码或解码时出现错误的处理方式。有如下几种取值：'strict'：默认值，表示遇到错误时抛出异常。'ignore'：表示遇到错误时忽略错误。'replace'：表示用 '?' 来替代无法编码或解码的字符。'backslashreplace'：表示用 Python 的反斜杠转义序列代替编码错误的字符。'namereplace'：用 Unicode 编码的字符名代替编码错误的字符。open()函数具有返回值，为一个文件对象。示例：f = open("abc.txt") # f就是这个返回值，针对文件对象可以进行相应的操作。文件对象的方法：read(size=-1)：从文件中读取数据，并返回一个字符串。如果指定了 size 参数，则读取指定大小的数据，否则读取整个文件。readline(size=-1)：从文件中读取一行数据，并返回一个字符串。如果指定了 size 参数，则读取指定大小的数据，否则读取一行数据。readlines(hint=-1)：从文件中读取所有行，并返回一个字符串列表。如果指定了 hint 参数，则读取指定大小的数据，否则读取所有行。write(string)：向文件中写入一个字符串。writelines(sequence)：向文件中写入一个字符串序列，序列中的每个字符串都会被写入文件。close()：关闭文件，释放文件资源。seek(offset[…

python字典
type: item
date: 2023-04-17T16:31:00+08:00
description: python字典Python字典是一种无序、可变、键-值对的集合。每个键值对都由一个键和一个值组成，键值对之间用逗号分隔，整个字典用大括号包围。字典的键必须是唯一的，而值可以是任何数据类型，包括数字、字符串、列表、元组、甚至是字典。以下是一个简单的Python字典的例子：# 创建一个字典 my_dict = {"apple": 2, "banana": 3, "orange": 4} # 输出字典 print(my_dict) # 输出结果： {'apple': 2, 'banana': 3, 'orange': 4}在上面的例子中，我们创建了一个包含3个键值对的字典，并将其存储在变量my_dict中。我们可以通过调用print()函数来输出这个字典。Python字典支持许多常用的操作，包括添加、更新、删除、查询等等字典的创建1、使用大括号 {} 和冒号 : 创建字典，每个键值对之间用逗号 , 分隔。例如：person = {'name': 'Tom', 'age': 25, 'city': 'Beijing'}2、使用 dict() 函数创建字典，每个键值对之间用逗号 , 分隔。例如：person = dict(name='Tom', age=25, city='Beijing')3、使用键列表和值列表来创建字典，可以使用 zip() 函数将键列表和值列表打包成一个元组的列表，然后再使用 dict() 函数将其转换成字典。例如：Copy code keys = ['name', 'age', 'city'] values = ['Tom', 25, 'Beijing'] person = dict(zip(keys, values))其中，keys 列表中的元素为字典的键，values 列表中的元素为字典的值。zip() 函数将两个列表中的元素一一对应打包成元组，返回一个元组的列表，然后再使用 dict() 函数将其转换成字典。4、使用 fromkeys() 方法创建字典，fromkeys() 方法使用指定的键列表作为字典的键，将它们的值设置为默认值。例如：keys = ['name', 'age', 'city'] person = dict.fromkeys(keys, 'unknown')上面代码中，将 keys 列表作为字典的键，将它们的值都设置为 'unknown'。注意：字典中的键必须是可哈希的，即不可变类型，如字符串、整数、浮点数、元组等。常用方法fromkeys()方法fromkeys()是字典类的一个方法，用于创建一个新字典，其中给定的键（或迭代器）具有一个默认值。它的语法如下：dict.fromkeys(keys[, value])其中，keys是一个包含要用作字典键的值的序列或可迭代对象，value是可选参数，指定要用作默认值的值。如果不提供value参数，则默认为None。以下是一些示例：# 从列表创建字典 keys = ['a', 'b', 'c'] new_dict = dict.fromkeys(keys) print(new_dict) # {'a': None, 'b': None, 'c': None} # 从元组创建字典 keys = ('x', 'y', 'z') new_dict = dict.fromkeys(keys, 0) print(new_dict) # {'x': 0, 'y': 0, 'z': 0} # 从集合创建字典 keys = {'mango', 'banana', 'apple'} new_dict = dict.fromkeys(keys, 1) print(new_dict) # {'apple': 1, 'banana': 1, 'mango': 1}在第一个示例中，keys是一个包含字典键的列表。由于未提供value参数，因此将使用默认值None。调用dict.fromkeys()方法将返回一个新字典，其中所有键都将设置为None。在第二个示例中，keys是一个包含字典键的元组，并且为value参数提供了默认值0。在这种情况下，调用dict.fromkeys()方法将返回一个新字典，其中所有键都将设置为0。在第三个示例中，keys是一个包含字典键的集合，并且为value参数提供了默认值1。在这种情况下，调用dict.fromkeys()方法将返回一个新字典，其中所有键都将设置为1。keys()方法keys() 方法返回一个字典视图对象，该对象包含字典中所有的键。字典视图对象是一个动态对象，它会随着字典内容的更改而更新。例如：my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'} keys = …

python元组
type: item
date: 2023-04-17T14:57:00+08:00
description: python元组元组（tuple）是一个有序的不可变序列，可以包含任意类型的数据，包括数值、字符串、列表、元组等。元组与列表非常相似，但是元组不可变，意味着一旦创建就不能修改，而列表是可变的。元组使用小括号 () 定义，多个元素之间使用逗号 , 分隔。例如：my_tuple = (1, 2, 'a', 'b', [3, 4])元组也支持切片和索引操作，可以使用 len() 函数获取元组长度。另外，可以使用 in 关键字判断元素是否在元组中。元组的不可变特性意味着无法在原有元组中增加、删除或修改元素。不过可以通过连接两个或多个元组创建新的元组，也可以使用 tuple() 函数将其他序列（如列表）转换成元组。例如：tuple1 = (1, 2, 3) tuple2 = (4, 5, 6) new_tuple = tuple1 + tuple2 print(new_tuple) # 输出 (1, 2, 3, 4, 5, 6) my_list = [1, 2, 3] my_tuple = tuple(my_list) print(my_tuple) # 输出 (1, 2, 3)元组的创建Python中元组是一种有序、不可变的序列，可以用来存储多个数据。元组的创建有以下几种方法：1、直接使用小括号括起来的数据序列创建元组：my_tuple = (1, 2, 3, 4, 5)2、使用tuple()函数将其他序列转换为元组：my_list = [1, 2, 3, 4, 5] my_tuple = tuple(my_list)如果元组中只有一个元素，需要在元素后面加上一个逗号来区分元组和表达式中的括号：my_tuple = (1,)3、使用括号来创建空元组：my_tuple = ()无论哪种方法，都可以创建一个元组。元组中的元素可以是任何类型，包括其他元组，如：nested_tuple = ((1, 2), (3, 4), (5, 6))需要注意的是，元组是不可变的，因此不能添加、删除或修改元组中的元素。如果需要对元组中的数据进行修改，可以将元组转换为列表进行修改，然后再将列表转换回元组。更新元组通过转换成列表来更新元组元组是不可变的数据类型，所以无法直接更新元组中的元素。如果需要更新元组中的元素，需要先将元组转换成列表，然后在列表中更新元素，最后再将列表转换回元组。以下是一个更新元组中元素的例子：# 定义一个元组 t = (1, 2, 3, 4) # 将元组转换成列表 t_list = list(t) # 更新列表中的元素 t_list[2] = 5 # 将列表转换回元组 t = tuple(t_list) print(t) # 输出 (1, 2, 5, 4)在上面的例子中，我们先将元组 (1, 2, 3, 4) 转换成列表 t_list，然后更新列表中的第三个元素为 5，最后再将列表 t_list 转换回元组 t。通过多个元组来扩展更新元组的元素由于元组是不可变的，因此不能直接更新元组的元素。但是，可以通过创建一个新的元组来扩展和更新元组的元素。可以使用加号操作符来连接两个元组，从而创建一个新的元组。例如，假设有一个元组a = (1, 2, 3)，要在其末尾添加一个元素4，可以这样做：a = (1, 2, 3) b = a + (4,) print(b) # 输出 (1, 2, 3, 4)注意，添加新元素时需要使用逗号将其与原来的元组分隔开，以保持它们是元组类型而不是其他类型。删除可以使用del语句删除整个元组。

python函数一
type: item
date: 2023-04-17T11:37:00+08:00
description: python函数一函数的基础定义Python是一门函数式编程语言，函数在Python中扮演着非常重要的角色。在Python中，函数可以接收输入参数并返回输出结果，可以作为参数传递给其他函数，也可以定义在类中作为方法。Python中定义函数的语法如下：def function_name(parameters): """函数文档字符串""" # 函数体 return expression其中，function_name为函数的名称，parameters是函数的输入参数列表，可以为空。函数体内的代码是实现函数功能的语句，可以包含一些控制流语句、变量定义、其他函数调用等等。函数可以返回一个表达式的值作为输出结果，也可以没有返回值。函数的定义可以包含文档字符串，用于描述函数的功能、输入输出参数、使用方法等等。文档字符串以三个引号（'''或"""）开头和结尾，位于函数定义的第一行。下面是一个简单的函数示例，实现对两个数进行求和的功能：def add(x, y): """将两个数相加并返回结果""" result = x + y return result在调用该函数时，可以传递两个数作为输入参数，获取返回结果：a = 2 b = 3 c = add(a, b) print(c) # 输出：5除了使用def语句定义函数外，Python还提供了lambda表达式用于定义匿名函数。lambda表达式的语法如下：lambda arguments: expression其中，arguments是函数的输入参数列表，expression是一个表达式，表示函数的输出结果。例如，下面的lambda表达式实现了对两个数相加的功能：add = lambda x, y: x + y c = add(2, 3) print(c) # 输出：5函数是Python中的重要概念，掌握函数的使用方法对于编写高质量的Python代码非常重要。函数的参数在 Python 函数中，形参是在定义函数时指定的参数，而实参是在调用函数时传递给函数的参数。形参是函数定义时使用的占位符，用来表示函数接收的参数。形参在函数调用时不占用内存空间，只有在函数调用时才会创建。实参是函数调用时传递给函数的参数。实参会占用内存空间，它们的值会传递给函数内部的形参，函数可以使用这些值来完成特定的任务。Python 中的参数传递方式有两种：位置参数和关键字参数。位置参数是按照参数定义的顺序进行传递，而关键字参数是按照参数名进行传递。同时，Python 还支持使用默认参数值和可变参数列表来扩展函数的功能。位置参数Python函数的位置参数是指在函数定义中，按照顺序声明的参数，调用函数时需要按照定义的顺序传入参数。例如，下面的函数中，a和b就是位置参数：Copy code def add_numbers(a, b): return a + b在调用函数时，需要按照定义的顺序传入参数：result = add_numbers(2, 3) print(result) # 输出 5在调用函数时，可以直接传入参数的值，也可以使用变量来传入参数的值：x = 4 y = 5 result = add_numbers(x, y) print(result) # 输出 9需要注意的是，调用函数时传入的参数数量必须与函数定义中参数数量一致，否则会抛出TypeError异常。关键字参数Python函数中的关键字参数是指通过指定形参名称来传递实参值的一种方式。关键字参数可以通过形参名称将值传递给函数，因此不需要按照特定的顺序传递参数。例如，下面的函数定义中包含了两个关键字参数：Copy code def greeting(name, message): print(f"{name}, {message}")使用关键字参数时，可以按照以下方式将实参传递给该函数：greeting(name="John", message="Hello")在这个例子中，我们将实参 "John" 通过关键字参数 name 传递给了 greeting() 函数，并将实参 "Hello" 通过关键字参数 message 传递给了函数。使用关键字参数时，参数的顺序并不重要，只要指定了形参名称，函数就能正确地获取对应的实参值。默认参数Python函数的默认参数是指在定义函数时，为函数的参数设置一个默认值。在函数调用时，如果没有为该参数传入实参，则使用默认值作为该参数的值。默认参数的定义方式为在函数定义时，在形参后面添加"="和默认值。例如：def greet(name, message="Hello"): print(message, name) greet("Alice") # 输出: Hello Alice greet("Bob", "Hi") # 输出…