
Python
文章平均质量分 81
python开发知识点
尤达c
一行代码一个兵
展开
-
python工作中遇到的坑
但是,第2次调用就不会再去计算默认参数,直接在[1]的基础上附加一个值。这是因为,在Python中,True相当于1、False相当于0,因此,在dict_a[True] = "mango"这行代码里,它把原来键值为1给替换了。按照我们常规的认识,这2次调用是分开的,第1次调用输出[1],第二次应该输出[2],为什么第2次调用时列表里竟然还保留着第1次调用时的值?你会发现,给dict_b添加了一个age:26键值对,dict_a也更新了,这样,我们留一个副本就没有任何意义了。字符串驻留就是这样一种情况。原创 2024-07-11 19:52:17 · 500 阅读 · 0 评论 -
python笔记
defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值,这个factory_function可以是list、set、str等等,作用是当key不存在时,返回的是工厂函数的默认值,比如list对应[ ],str对应的是空字符串。样例:判断key是否存在,如果不存在,则新建一个list并赋值给key,如果已经存在,则调用list的append方法,将值添加进去。any() #只要有一个True,则返回True,全False才返回False。原创 2024-01-03 17:29:43 · 861 阅读 · 0 评论 -
python的内置optparse模块-命令行参数处理
optparse是python非常常用的一个内建模块,用于处理命令参数.#!/usr/bin/python3# -*- coding: UTF-8-*-from optparse import OptionParserimport mytestparser = OptionParser()parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE")原创 2021-05-27 20:17:20 · 206 阅读 · 0 评论 -
涨知识——用 PyPy 让你的 Python 代码运行得更快
前言Python是开发人员中最常用的编程语言之一,但它有一定的局限性。例如,对于某些应用程序而言,它的运行速度可能比其它语言低100倍。这就是为什么当Python的运行速度成为用户瓶颈后,许多公司会用另一种语言重写他们的应用程序。但是有没有一种方法既可以保持Python的特性又能提高速度呢?它就是PyPy。本文内容包括以下:如何使用PyPy安装和运行代码PyPy与CPython在速度方面的比较PyPy的功能及其如何使Python代码更快地运行文中的示例使用 Python 3.6 ,因为它是.原创 2021-03-28 14:14:08 · 2634 阅读 · 0 评论 -
涨知识——Python中比open更方便的读文件方法
前言使用 open 函数去读取文件,似乎是所有 Python 工程师的共识。今天要给大家推荐一个比 open 更好用、更优雅的读取文件方法 – 使用 fileinputfileinput是 Python 的内置模块,包括我在内,很多人对它都是陌生的。今天把 fileinput 的所有的用法、功能进行详细的展示,并列举了一些非常实用的案例,对于理解和使用它可以说完全没有问题。1. 从标准输入中读取当你的 Python 脚本没有传入任何参数时,fileinput 默认会以 stdin 作为输入源.原创 2021-03-04 21:29:12 · 471 阅读 · 2 评论 -
python 异常处理
异常广义上的错误分为错误和异常错误指的是可以人为避免异常是指在语法逻辑正确的而前提下,出现的问题在python中,异常是一个类,可以处理和使用异常的分类BaseException 所有异常的基类Exception 常见错误的基类ArithmeticError 所有数值计算错误的基类Warning 警告的基类AssertError 断言语句(assert)失败AttributeError 尝试访问未知的对象属性DeprecattionWarning 关于被弃用的特征的警告EOF原创 2021-02-20 20:57:04 · 84 阅读 · 0 评论 -
涨知识——Python 的 f-string用法
毫无疑问,Python 是一门强类型语言。强类型语言。强类型语言!这就意味着,不同类型的对象通常需要先做显式地类型转化, 然后才能进行某些操作。下面以字符串和数字为例,看看强行操作会产生什么结果:>>> "Python猫" + 666Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can only concatenate str (not.原创 2021-02-20 20:28:35 · 935 阅读 · 0 评论 -
涨知识——pyhton中__pycache__的产生与用途
__pycache__是什么__pycache__是出现在Python3.2版本之后的特性,专门存放python编译文件和源文件Python2.X版本是没有__pycache__文件夹的,编译文件和源文件存放同目录如果当前目录只有运行的脚本main一个文件,则不会生成__pycache__文件夹用python编写了一个工程,但在第一次运行后,发现工程根目录下生成了一个__pycache__文件夹,里面是和py文件同名的各种以.cpython-35.pyc结尾的文件。cpython-35各项意义,原创 2021-02-16 22:19:35 · 2224 阅读 · 0 评论 -
python多线程编程(线程安全和避免死锁)
1. 多线程编程与线程安全相关重要概念开始之前,我们熟悉了几个特别重要的概念:GIL,线程,进程, 线程安全,原子操作。GIL: Global Interpreter Lock,全局解释器锁。Cpython解释器上的一把互斥锁,不能利用多线程实现多核任务即并行,因为解释器的C语言实现部分在完全并行执行时不是线程安全的,GIL确保任何时候只能一个python线程执行为了解决多线程之间数据完整性和状态同步的问题,设计为在任意时刻只有一个线程在解释器中运行。线程: 程序执行的最小单位。进原创 2021-02-08 20:50:57 · 2442 阅读 · 1 评论 -
python线程锁和进程锁
在python的多线程和多进程中,当我们需要对多线程或多进程的共享资源或对象进行修改操作时,往往会出现因cpu随机调度而导致结果和我们预期不一致的问题,这时就需要对线程或者进程加锁,以保证一个线程或进程在对共享对象进行修改时,其他的线程或进程无法访问这个对象,直至获取锁的线程的操作执行完毕后释放锁。所以,锁在多线程和多进程中起到一个同步的作用,以保护每个线程和进程必要操作的完整执行。python中,多线程和多进程的异同点主要在两大处:由于GIL机制,多线程只能实现并发,但多进程可以实现并行;同一个进转载 2021-02-07 21:11:00 · 1499 阅读 · 3 评论 -
一文秒懂,python实现单例模式
一、什么是“单例模式”——一个实例单例模式(Singleton Pattern) 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。注意:1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。原创 2021-02-07 21:03:34 · 3307 阅读 · 1 评论 -
Pipenv创建python虚拟环境和包管理
pipenv 是Kenneth Reitz大神的作品,能够有效管理Python多个环境,各种包。过去我们一般用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题;过去也常常用 pip进行包的管理,pip已经足够好,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。pipenv开源之后,在GitHub上有很高人气(截止于现在有9600多星)。pipenv主要有以下特性:(1)pipenv集成了pip,virt原创 2021-02-03 20:35:30 · 3648 阅读 · 1 评论 -
Python 第三方库安装
Python 是一门优雅的语言,简洁的语法,强大的功能。当然丰富的第三方库,更能加速开发。那么问题来了,如何安装这些第三方库(包)呢?安装第三方库的方式其实不多。下面就介绍一些技巧。一、源码安装很多第三方库都是开源的,几乎都可以在github 或者 pypi上找到源码。找到源码格式大概都是 zip 、 tar.zip、 tar.bz2格式的压缩包。解压这些包,进入解压好的文件夹,通常会看见一个 setup.py 的文件。打开命令行,进入该文件夹。运行python setup.py install.原创 2021-01-29 21:58:52 · 618 阅读 · 0 评论 -
一文搞懂Python2与Python3的编码问题(Linux和Windows编码转换)
前言搞Python不把编码彻底搞明白,总有一天它会猝不及防坑你一把。python中编码问题一直让人头大,这里好好的记录一下。一. 什么是编码用于人类看的文本叫做明文,编码文本通常用于计算机的解释文本。将明文转换为计算机可以识别的的编码文本称为“编码”, 反之从计算机可识别的编码文本转回明文为“解码”1、编码的种类情况ASCII 占1个字节,只支持英文GB2312 占2个字节,支持6700+汉字GBK GB2312的升级版,支持21000+汉字Shift-JIS 日本字符ks_c_.原创 2021-01-20 21:03:13 · 633 阅读 · 1 评论 -
python自动化操作Excel(xlwt、xlrd、xlutils)
简介python中通过xlwt、xlrd和xlutils三个模块操作xls文件。这三个模块的区别如下:xlwt: xlwt用于在内存中生成一个xlsx/xls对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件。xlrd:xlrd用于把本地xls文件加载到内存中,可以读取xls文件的表格数据,查询xls文件的相关信息。xlutils:xlutils模块是xlrd和xlwt之间的桥梁,读取xls文件可以使用xlrd,新建创建文件可以使用xlwt,而修改文件则使用xlutils;可以使用x原创 2021-01-19 21:29:00 · 815 阅读 · 1 评论 -
python消息队列Queue
实例1:消息队列Queue,不要将文件命名为“queue.py”,否则会报异常“ImportError: cannot import name ‘Queue’”#coding=utf-8from multiprocessing import Queue q = Queue(3)#初始化一个Queue对象,最多可接收三条put消息q.put('message-1')q.put('message-2')print(q.full())#False,是否满了q.put('message-3')p原创 2021-01-17 14:12:08 · 648 阅读 · 0 评论 -
Python正则表达式命名捕获组和非捕获组
命名捕获组命令组的语法是 Python 专用扩展之一,格式是 (?p…),其中 name 是组的名称,…是要匹配的表达式,除了该组有个名字之外,命名组也同捕获组是相同的。它们的行为与正常组完全相同,除了可以通过索引访问还可以通过 group(name) 方式访问它们。非捕获组的格式是 (?:…)。MatchObject` 的方法处理捕获组时接受的要么是表示组号的整数,要么是包含组名的字符串。命名组也可以是数字,所以你可以通过两种方式来得到一个组的信息:import repattern = r"(?原创 2021-01-13 18:51:16 · 3614 阅读 · 0 评论 -
Python进程间通信的2种实现方法(Queue和Pipe)
Python 也提供了多种实现进程间通信的机制,主要有以下 2 种:1、Python multiprocessing 模块下的 Queue 类,提供了多个进程之间实现通信的诸多方法;2、Pipe,又被称为“管道”,常用于实现 2 个进程之间的通信,这 2 个进程分别位于管道的两端。接下来将对以上 2 种方式的具体实现做详细的讲解。Queue实现进程间通信使用 Queue 模块中的 Queue 类实现线程间通信使用 multiprocessing 模块中的 Queue 类。简单的理解 Q原创 2021-01-11 21:41:13 · 2017 阅读 · 0 评论 -
浅谈python中的多线程和多进程
前言在开始谈python多线程和多进程之前,先介绍一下并行、并发等日常开发中常见的的执行方式并发:是指同一个时间段内,,=有多个程序在同一个CPU上运行,但是在任意时刻只有一个程序在CPU上运行并行:指任意时刻点上,有多个程序同时运行在多个CPU上同步:指代码调用IO操作时,必须等待IO操作完成才能返回的调用方式异步:指代码调用IO操作时,不必等待IO操作完成就返回的调用方式,多线程就是典型的异步操作阻塞:指调用函数时,当前线程被挂起非阻塞:指调用函数时,当前线程不会被挂起,而是立即返回原创 2020-12-27 20:05:55 · 302 阅读 · 0 评论 -
python装饰器,一文秒懂
装饰器装饰器(Decorators) 是 Python 的一个重要部分。简单地说:它们是修改其他函数的功能的函数。有助于让我们的代码更简短,也更Pythonic(Python范儿)。很多Pythoner不知道在哪儿使用它们,哪些区域里装饰器可以让代码更简洁。通过本文的学习让你理解并学会装饰器,让你更Pythonic!来一起学习吧。在开始之前先写一个小demo来感受一下装饰器的魅力吧def decorator(func): def inner(name): # 在内部函数里面对原创 2020-12-26 17:24:14 · 5371 阅读 · 3 评论 -
python读写json、格式化写入json文件
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。JSON在python中分别由list和dict组成。这是用于序列化的两个模块:json: 用于字符串和p原创 2020-12-25 20:40:29 · 92449 阅读 · 6 评论 -
python--关于requests库的详细使用(二)
Requests是一常用的http请求库,它使用python语言编写,可以方便地发送http请求,以及方便地处理响应结果。一、安装1.1 使用pip进行安装要安装requests,最方便快捷的方法是使用pip进行安装。pip install requests如果还没有安装pip,这个链接 Properly Installing Python 详细介绍了在各种平台下如何安装python以及setuptools,pip,virtualenv等常用的python工具,可以参考其中的步骤来进行安装。如果原创 2020-12-24 22:33:40 · 388 阅读 · 0 评论 -
Python—正则表达式re库的高级使用
正则表达式是一个以简单直观的方式匹配指定文本信息从而达到查找、替换等操作的目的。正则表达式以其简单而高效的特点使得其在数据分析和数据验证方面应用广泛。对于简单的正则表达式可以直接百度之,这里重点引荐下‘特殊’操作。1.非贪婪模式 - {x,y}?非贪婪模式是指在使用正则匹配时,尽可能少的匹配(默认是贪婪模式,即:尽可能多的匹配)。例:>>> re.search(r'[\d]{2,5}?','091234568')>>> <_sre.SRE_Match .原创 2020-12-15 21:30:17 · 259 阅读 · 0 评论 -
python--关于requests库的使用(一)
requests库在python的日常开发工作中较为常见了,无论是爬虫反向、还是处理web接口都用到了requests库,它的方法很丰富强大,以下记录的是平日里经常用到的方法:1、HTTPHTTP,Hypertext Transfer Protocol,超文本传输协议。HTTP是一个基于“请求与响应”模式的、无状态的应用层协议,采用URL作为定位网络资源的标识。URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。URL格式: http://host[:port][pa.原创 2020-12-13 13:54:02 · 1098 阅读 · 0 评论 -
python--如何使用 Pylint 来检查分析Python 代码
Pylint 是什么Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅参考资料)和有潜在问题的代码。Pylint 是一个 Python工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。Pylint 的一个很大的好处是它的高可配置性,高可定制性,并且可以很容易写小插件来添加功能。如果运行原创 2020-12-11 22:42:27 · 2898 阅读 · 0 评论 -
Python—那些不为人知的坑
Python语言似乎在大家印象中,简单易上手、语法简单、对于初学者比较友好。的确,它的表达方式已经非常接近自然语言。不用像C++那样去考虑指针、内存,也不用像Java那样深入理解JVM;但是简单并不是无能,可以用python写出高级的上层应用比如web、GUI、结合数据库开发、应用程序、爬虫方向、人工智能、机器学习等等高级的东西认知上python很简单,慢慢的,开发者开始确切的认为”我们写的代码是完全正确的“。但是,在忽视Python的细节的过程中,会发现,会出现奇奇怪怪的错误。回头定位时,迟迟定位不出.原创 2020-12-06 21:08:59 · 128 阅读 · 0 评论 -
Python--提高运行效率的技巧
python是一种脚本语言,相比C++/C这样的编译语言,在效率和性能方面存在一些不足。但是,有很多时候,Python额运行效率并没有想象的那么夸装,本文对一些python代码加速运行的技巧进行整理。写在前边代码优化原则本文会介绍不少的 Python 代码加速运行的技巧。在深入代码优化细节之前,需要了解一些代码优化基本原则。第一个基本原则是不要过早优化。很多人一开始写代码就奔着性能优化的目标,“让正确的程序更快要比让快速的程序正确容易得多”。因此,优化的前提是代码能正常工作。过早地进行优化可能会忽视对.原创 2020-11-16 22:37:41 · 235 阅读 · 0 评论 -
python的一些技巧操作,提高编码效率
今天给大家分享几个Python里面的骚操作,大家会更加感受到Python编码的强大。1.用字典映射代替switch case语句大家首先看下面这段用C#编写的switch case代码,代码很好理解,switch函数传入一个参数day,参数的不同对应不同的case语句,那怎么将这段代码用Python里面的字典代替呢?switch(day) { case 0: dayName = "Sunday"; break; case 1: dayNam.原创 2020-11-14 22:55:43 · 150 阅读 · 0 评论 -
python中迭代器、生成器、可迭代对象详解,别傻傻分不清了
本文章主要介绍python的一些高级用法,这些用法在工作中和面试中都是极其重要的。能够让我们深入的去理解python和提高我们的编码效率。- 迭代器- 生成器- 装饰器在迭代器这里,有一额重要的区分点在于,可迭代器对象和迭代器的区别1、什么是可迭代对象2、什么是迭代器2、迭代器和可迭代对象有什么关系下面直接一张图来介绍一下他们的关系结论:1)可迭代对象包含迭代器2)如果一个对象拥有__iter__方法,其是可迭代对象;如果一个对象拥有__next__方法,其就是迭代器3)定义可迭.原创 2020-11-13 22:22:04 · 236 阅读 · 0 评论