Python 编程
文章平均质量分 78
记录Python 语言知识。
凯子要面包
这个作者很懒,什么都没留下…
展开
-
conda 与 pip 工具笔记
conda与pip是Python开发中常用的两种工具,conda本质是管理工具,pip是管理工具,两者的功能有一定的重叠。本文主要记录开发工作中与两者相关的使用说明与注意事项。conda info。原创 2024-04-23 17:30:25 · 1242 阅读 · 1 评论 -
文本处理:字符串替换
该方法逻辑大致如下所示,存在多个old与new映射对时,需要串联使用多个replace方法, 效率较低。原创 2023-02-17 16:48:39 · 1161 阅读 · 1 评论 -
Python 多进程编程《一》: 创建进程的三种模式
进程是操作系统分配资源的最小单位,进程之间是相互隔离的,一般一个应用程序就对应一个进程。进程中可以包含多个线程,同一进程内的多线程可以共享进程内的部分资源。由于进程之间有隔离机制,因此在并发编程中,进程之间更加注重通信(或者说资源共享),而多线程编程更加注重线程同步(协同执行)。Python中有 spawn、fork、forkserver 三种创建子进程的模式,创建子进程的模式与操作系统密切相关,不同模式下创建的子进程,所具有的共享资源有所差异。...原创 2022-08-17 14:28:25 · 1936 阅读 · 0 评论 -
Python 格式化字符串
格式化字符串的方法格式化字符串主要有三种方式,这里只介绍第一种方式,也是推荐的使用方式:以花括号为占位符的字符串格式化以百分号为占位符的字符串格式化内置的format函数格式声明语法格式声明语法(Format Specification Mini-Language)是格式化字符串的核心,其语法格式为:[[fill]align] [sign] [#] [0] [width] [grouping_option] [.precision] [type]最重要的参数为type,表示以什么类型来原创 2020-06-10 17:49:56 · 1124 阅读 · 0 评论 -
Python GIL 学习笔记
什么是GIL在CPython中,线程执行之前,必须先获取全局解释锁。在某一特定时刻,由于全局解锁锁是唯一的——每一进程有自己独立的GIL,因此仅有一个线程对象持有全局解释锁,这种机制保证了数据修改操作的安全性。注意GIL保护的是Python 解释器的状态,比如对象的引用计数信息,如果确保用户数据对象的原子性操作,需要对用户对象进行加锁操作;GIL是一种字节码级别的互斥锁。 操作系统、cpu、进程、线程及其关系【转载参考资料2】基础概念操作系统: 从操作系统与CPU之间的关系上,操作系原创 2022-04-26 10:48:55 · 363 阅读 · 1 评论 -
Python 迭代协议
Python 迭代协议由__iter__方法与__next__方法构成,若对象具有__iter__方法,称该对象为“可迭代对象(iterable object)”。若对象具有__next__方法,称该对象为“迭代器(iterator)”。__iter__方法必须返回一个迭代器对象,__next__方法不断的返回下一元素,或者抛出StopIteration。__next__方法是 Python 迭代协议的核心,__iter__方法是迭代协议的辅助——将可迭代对象转换成迭代器。在大多数情况下,可迭代对象会自动原创 2022-04-21 14:00:59 · 936 阅读 · 0 评论 -
打包&发布Python项目
概述打包与发布python项目主要包含三个过程,第一配置打包信息,主要通过setuptools工具实现;第二步打包生成wheel或者sdist(source distribution)文件,主要使用build工具;第三步将打包好的wheel、或者sdist文件发布到PYPI,使用twine工具。pip install setuptools>=42 build twine 配置打包信息配置打包信息涉及的知识很多,这里仅记录以下几部分,更多信息请看参考资料。 modul原创 2021-10-28 17:36:14 · 1468 阅读 · 0 评论 -
【python】global与nonlocal语句
前言了解global与nonlocal语句的区别需要预先了解:变量的作用域:全局变量、局部变量、自由变量(也称绑定变量)闭包:本质是延伸了作用域的函数,作用域延伸至自由变量。在函数体内的赋值语句var = value,默认“var”为局部变量类型;对于拓展运算符“+=”等,如果“value”为不可变数据类型,变量“var”为局部变量类型,如果“var”为可变数据类型,变量“var”为原数据类型。gloablpassnonlocalpass区别参考资料《流畅的python》pyt原创 2021-06-10 20:22:36 · 597 阅读 · 2 评论 -
【python】逻辑运算符
not是一元运算符not arg假如参数arg表示True,则返回False;表示Fasle,则返回True。注意:not运算符返回的值一定的True或者False,即类型肯定为bool型。False、None、数值0、空容器(字符串、列表、元组、集合、字典)都表示False,其它值表示True。用户自定义的对象,可以通过__bool__方法明确对象代表True或者False。 or与and是二元运算符x and y首先计算参数x,若x表示False值,直接返回参数x。若原创 2021-04-09 09:18:13 · 522 阅读 · 1 评论 -
Python 运算符优先级
运算符是构成python表达式的基础,了解python有哪些运算符及运算符之间的优先级,对于构建合适的python表达式很有帮助,本文主要记录python运算符及优先级关系。 运算符及优先级如下表所示,优先级按照从低到高排序,“lambda”优先级最低,“括号、列表推导、元组推导、字典推导、集合推导”优先级最高,位于同一方框中的运算符具有相同的优先级。下表中运算符中带“x”的表示一元运算符。运算符描述lambdalambda表达式if-else条件表达式翻译 2021-02-02 11:11:20 · 2355 阅读 · 1 评论 -
argparse命令行参数解析模块
前言看过许多大神用argparse封装模型训练的参数,非常好用。但需要debug训练的主脚本的时候,不带参数直接调用parse_args方法就会存在问题,因为无法为脚本提供有效的参数值。解决方案:调用parse_args时传入参数列表。argparse模块主要包含一个类及两个方法:ArgumentParser类、add_argument方法与parse_args方法,下面按顺序记录其主要用法。ArgumentParser ClassArgumentParser实例会封装传入脚本命令行参数的所有信息,翻译 2021-01-22 14:47:29 · 359 阅读 · 0 评论 -
pip包管理工具
pip 命令学习笔记翻译 2021-01-14 17:48:11 · 1468 阅读 · 0 评论 -
python脚本配置shebang行
在计算机科学中,shebang行是由“#”号、“!”号、可执行文件路径组成的字符串行,一般作为文本文件的第一行出现,表示执行该脚本文件的默认解释器。shebang行通常在以下场景中使用:指定脚本在特定的虚拟环境中运行,比如虚拟环境中安装的jupyter,在虚拟环境的bin目录下,众多jupyter可执行文件都设置了shebang行,限定jupyter只在该虚拟环境中使用。在main脚本中指定默认解释器,比如#!/usr/bin/python3。使用shebang行时,也要注意以下:脚本导入时,原创 2021-01-05 16:06:07 · 1021 阅读 · 0 评论 -
【Linux】conda|pip|jupyter: command not found
背景服务器升级后,用户主目录发生了变化,但之前安装及配置的conda并没有随之变化,当运行conda -V时抛出command not found,查看PATH环境变量,果然检索路径还是之前的用户主目录,因此需要修改conda的配置。修改conda配置文件~/anaconda3/etc/profile.d/conda.sh~/anaconda3/bin/conda~/.bashrc 如果安装的是miniconda,把上面的anaconda3换成miniconda。上面的是默认安装原创 2020-12-25 09:16:29 · 672 阅读 · 0 评论 -
python函数【二】:自定义函数
自定义函数定义函数的语法格式为def function_name(arg1, arg2, *, **): function_body return [expression]不带表达式的return相当于返回 None。执行return语句后,自定义函数代码块中return语句后面的语句将不会被执行。可利用*、**收集任意个 位置形参与 关键值形参 的值指定默认参数值,在函数定义中,以“形参名=值”的形式指定某个形参的默认值;函数调用中,可以混合使用位置参数和关键值参数,但混用时,必须先指定原创 2020-12-17 16:21:51 · 1585 阅读 · 0 评论 -
Python Exception:【一】基础
前言python中所有的异常必须是异常类的实例,所有的异常类都直接或间接继承BaseException。的异常由内置的异常类表示,每一个异常类表示某种类型的错误,一般带一个参数,用于显示错误信息,也可以带多个或不带参数。异常的常用操作包括抛出异常、捕获异常。异常对象python内置的异常类之间的继承关系如下所示:“”“BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception原创 2020-12-16 11:30:00 · 619 阅读 · 0 评论 -
python 【 no encoding declared】错误
python默认的编码是ASCII,当脚本中包含中文时候,经常会遇到编码错误的信息,可以根据提示资料,在脚本的第一行或者第二行添加以下值的任意一种:# coding=utf-8# -*- coding: utf-8 -*-在网上查找资料时,会看到很多写法,但只要第一行或者第二行匹配^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)正则表达式,就可以了。注意coding之后没有空格。 参考资料PEP-0263...翻译 2020-12-14 19:40:30 · 491 阅读 · 0 评论 -
python IO模块【一】:IO类
前言python中的IO操作主要包括textIO、bytesIO、与rawIO,bytesIO主要操作对象是buffered raw bytes, rawIO操作对象是raw bytes, textIO是将bufferd raw bytes转换成文本字符串流。三种类型中文本与字节是highlevel,而rawIO是支持textIO与bytesIO的底层,一般不会直接使用。 整个模块中抽象基类IOBase是最基础地,IOBase定义了对流(stream)的基本操作,RawIOBase是IOBa翻译 2020-12-15 16:42:24 · 1303 阅读 · 0 评论 -
python IO模块【二】:open函数详解
使用open函数可以非常方便的探究IO模块中的具体类的属性与方法,以及对字符串及字节数据的读写处理。其函数签名及注解如下所示: open(name, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None )功能:打开文件,根据不同模式,返回不同的文件对象,如果打开文件失败,会抛出OSError,注意IOError已经是OSError的别名了。当以文本模式打开时,翻译 2020-12-12 17:34:41 · 1322 阅读 · 0 评论 -
Python描述符【二】:Property
前言property后续称为特性,是python中内置的标准数据型描述符,是描述符用于管理实例属性的典型代表,本文按照property的使用、语法糖的等价含义及property的实现顺序进行记录。实例使用property管理私有属性x的实例:class Test(object): __x = 'abc' # __x表示x为私有属性 @property def x(self): """ i am property of x """ retur原创 2020-12-05 14:59:28 · 294 阅读 · 0 评论 -
python描述符【三】:函数与绑定方法
前言python函数是最典型的非数据型描述符,首先注意python中,函数与方法的唯一区别在于:方法的第一个参数是保留的,不是实例就是类,一般用self表示实例,cls表示类,而函数是没有保留的参数滴。因此本部分先从描述符的角度记录函数,然后再记录类方法、实例方法、静态方法。函数使用def或者lambda关键字即可定义函数,前者是命名函数,后者是匿名函数,本部分是指命名函数。从下面可以看出python中的函数默认是包含__get__特殊方法的,传入多少个参数就输出多少个参数。 def print原创 2020-12-04 21:09:12 · 357 阅读 · 0 评论 -
Python描述符【一】:定义、功能与调用
前言描述符主要用于管理属性,python内置的property、function等都使用了描述符,这里分两部分记录描述符,第一部分介绍描述符,第二部分介绍python中内置对象是怎样使用描述符。为了便于描述,作以下统一规定,Obj表达一个自定义类、obj表达Obj的实例、Desc表示描述符类、desc是描述符实例、x是属性名称,values是属性x对应的值, “attribute access 包括属性检索、属性赋值、属性删除三种操作”什么是描述符如果一个对象具有__get__, __set__, _原创 2020-12-04 16:37:35 · 198 阅读 · 0 评论 -
【Python装饰器】functools.wraps函数保留被装饰函数的元信息
前言除注册装饰器外,大多数装饰器会返回与被装饰函数不同的函数,为与后文保持一致,假设返回的函数叫做wrapper,也可以是其他可调用对象,被装饰的函数叫做func。通过语法糖的形式装饰func会产生一个明显的副作用,就是此时的func本质是wrapper,显示func的属性展示的也是wrapper的属性信息,可以通过wraps装饰器解决此问题。但要想深入理解wraps装饰器,需要先了解functools中的update_wrapper与partial。update_wrapper函数update_wr原创 2020-11-18 17:15:57 · 755 阅读 · 0 评论 -
读取带缩进的json文件
在输出试验结果时,用json.dumps打印每个样本结果到保存文件时加了indent=4参数, 样本数据如下所示:当需要导入上序文件时,直接用json.load 或者json.loads都是会报错的,因为不是标准的json格式标准、每一行也不是对应的python对象,所以会报错。最后找到一个解决方法,把'}'符号作为分界符,代码如下:import jsonf = open(filename, 'r', encoding='utf-8')tem = f.read().split('}') # 以原创 2020-09-09 18:19:20 · 1171 阅读 · 0 评论 -
cpca库使用简明教程
cpca库使用简明教程cpca是chinese_province_city_area_mapper的全称,在处理中文地址比较好用,这里记录下库的主要功能与使用方法。安装pip install cpcacpca.transformcpca.transform 是 cpca库的核心功能,其输入是任意可迭代对象,输出为pandas的DataFrame对象,参数及含义如下:location_strs :包含地址信息的字符串,是一个可迭代对象,可迭代对象的元素数量将等于输出结果中DataFrame的行数原创 2020-08-10 15:47:06 · 6601 阅读 · 0 评论 -
Python函数【一】:内置函数
内置函数enumerate(iterable, start=0)返回一个enumerate 对象,该对象本质是个迭代器迭代器中的元素为“ idx与可迭代对象元素” 组成的元组,idx默认从0开始zip(*iterables)输入为一个或者多个可迭代对象,输出为迭代器,迭代器中的元素是一个元组,元组由输入的可迭代对象中的元素组成当多个可迭代对象的长度不同时,以最短的可迭代对象的长度为标准,最短那个可迭代对象中的元素用完后,就不在生成新的元组元素zipper迭代器与"*" 操作符连用原创 2020-05-29 17:51:17 · 681 阅读 · 0 评论 -
Python正则表达式
知识点小结模式中的字母或者数字表示本身,标点符号只有在转义时才表示本身"反斜杠"表示转义,可以将普通的字符或者数字转义为特殊字符,也可以将特殊的标点符号转义为其本身需注意转义问题,因为在“Python字符串、正则表达式”中,反斜杠均表示转义,所以如果需要正则表达式模式中使用反斜杠本身时,需要使用"\\“形式,这里包含两层转换,逻辑上首先进行Python字符串转换,即”\\“实际表达两个反斜杠,这两个反斜杠再进行“正则表达式”逻辑转换,即最终正则表达式引擎会认为”\\"是一个反斜杠。可以用“re.s原创 2020-05-20 10:39:01 · 340 阅读 · 0 评论 -
Python中的浅拷贝与深拷贝
1. deep copy 与 shallow copy的定义copy.copy(x)Return a shallow copy of x.A shallow copy constructs a new compound object and then inserts references into it to the objects found in the original....原创 2020-03-04 15:05:11 · 255 阅读 · 0 评论