自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Python热爱者的博客

人生苦短,我用Python

  • 博客(2830)
  • 收藏
  • 关注

转载 100道Python面试题总结

面试题第1题:1行代码实现1到100的和?第2题:如何使用Python输出一个[斐波那契数列]Fibonacci第3题:列出几个python标准库第4题:下面Python代码的运行结果是?第5题:python实现列表去重的方法?第6题:在Python中读取大文件第7题:如何避免转义,给字符串加哪个字母表示原始字符串?第8题:python中断言方法举例?第9题:列出python中可变数据类型和不可变数据类型,并简述原理第10题:你如何管理不同版本的代码?第11题:python中生成随机整数、随机小数、0~1之

2021-04-12 16:53:36 6824 1

原创 Python中常用的几个内置方法(max()/min()、filter()、map()、sorted、reduce())

如果第一参数是一个函数, 可迭代对象中元素传入该函数, 结果为True, 则filter方法返回的迭代器就会。如果第一个参数时None, 则返回的迭代器中只包含可迭代对象中为True的元素。第一个参数(形参), 要么是func, 要么是None, 不传会报错。需要传入两个参数, 第一个是函数或者None, 第二个是可迭代对象。哪个元素经过转换函数得到的值最大, 就返回该元素。max函数会将lis里面的元素依次传入转换函数。返回的是一个filter obj(迭代器)key参数接收的是一个函数对象。

2024-02-28 16:10:02 68

原创 Python实现:查找文本文件中重复的汉字

查找文本文件中重复的汉字,找到在所在行号。

2024-02-27 14:43:28 320

原创 Python简单实现:读取文件夹并数字排序

python中 os.listdir()方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。使用sort()对返回的文件名列表进行排序。返回的文件名不是顺序的。

2024-02-27 14:42:03 348

原创 python操作docx文档的方法

需要使用python-docx。

2024-02-26 16:53:37 245

原创 Python中 sys.argv[]的用法解释

sys.argv就是一个从程序外部获取参数的桥梁,这个“外部”很关键, 因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[]提取其中的元素。Sys.argv[ ]其实就是一个列表,里边的项为用户输入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方, 要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。下面我们通过一个极简单的test.py程序的运行结果来说明它的用法。在Linux上是文件名。

2024-02-26 16:28:31 289

原创 python内置函数——sorted

方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变。方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本。列表按照其中每一个值的绝对值排序。对给定的List L进行排序,列表按照每一个元素的len排序。

2024-02-23 15:26:20 318

原创 Python中os.walk()模块

topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

2024-02-23 15:03:59 316

原创 python用于类型注解的库- typing

动态语言的灵活性使其在做一些工具,脚本时非常方便,但是同时也给大型项目的开发带来了一些麻烦。自python3.5开始,PEP484为python引入了类型注解(type hints),虽然在pep3107定义了函数注释(function annotation)的语法,但仍然故意留下了一些未定义的行为.现在已经拥有许多对于静态类型的分析的第三方工具,而pep484引入了一个模块来提供这些工具,同时还规定一些不能使用注释(annoation)的情况#一个典型的函数注释例子,为参数加上了类型。

2024-02-22 14:47:28 817

原创 七种方法让 Python 代码更容易维护

随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准)。然而,在代码库中保持一致的代码风格和测试标准能够显著减轻维护的压力,也能确保新的开发者能够快速了解项目的情况,同时能更好地全程保持应用程序的质量。使用外部库来检查代码的质量不失为保护项目未来可维护性的一个好方法。以下会推荐一些我们最喜爱的检查代码(包括检查 PEP 8 和其它代码风格错误)的库,用它们来强制保持代码风格一致,并确保在项目成熟时有一个可接受的测试覆盖率。

2024-02-22 14:33:12 959

原创 Python中类创建和实例化过程

type也是由type创建。(想想也是,不可能是self,对象还没创建,哪来的self),其必须要有返回值,返回实例化出来的实例,需要注意的是,可以return父类。通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class。type()函数可以查看一个类型或变量的类型,MyClass是一个class,它的类型就是type,而myc是一个实例,它的类型就是class MyClass。

2024-02-18 19:04:01 872

原创 python实现获取成员所在的多个位置

注:本代码主要是为了实现多个集合之间求并集时的辅助代码,简单的举个例子来说明代码的功能。约定:例如{11: [2, 3]}表示数据11在集合2和集合3中都存在。

2024-01-27 15:26:08 397

原创 Python实现求多个集合之间并集的方法

这种实现方法其实效率不高,需要比较集合的次数为:1 + 4 + 6 = 11次,另外代码也很冗余,并不是一种好的实现方式。(5)再在除C4以外剩下的集合中,找出成员数最多的集合,重复上诉操作。(3)每个集合减去包含自己的任意三个集合的共有成员,最后求其中任意两个集合共有的成员。(2)将集合C4中的每个成员依次和其它集合进行比较,看其它集合中是否包含此成员;(3)若其它集合中包括这个成员,就将这个成员从集合中去除,依次这样比较每个集合;(2)每个集合减去所有集合的共有成员,在求其中任意3个集合共有的成员;

2024-01-25 15:53:32 405

原创 Python小技巧:一种字符串的排序方式

假设有一个序列,数据为:[‘n1’, ‘n2’, ‘n10’, ‘n11’, ‘n21’, ‘n3’, ‘n13’, ‘n20’, ‘n23’],排序后需要达到这个效果:[‘n1’, ‘n2’, ‘n3’, ‘n10’, ‘n11’, ‘n13’, ‘n20’, ‘n21’, ‘n23’]。实现代码如下,在代码中,我给前缀的数字乘上了255,后缀的数字没有大于255的,所以能够实现上述的排序结果。,那么我们可以给前缀数字赋一个很大的权重,再加上后缀,组成的数字就是排序的依据。

2024-01-23 16:04:33 413

原创 Python教程:拆分多级目录的方法

实现多级目录差分,举例说明如下:假设现有的目录结构如下:1、2、2.1、2.2、2.3、2.4、3、4、5、6、6.1、6.1.1、6.1.2、6.1.3、6.1.4、6.2、6.3、6.4、7、8、9、10。经过差分后,得到的各级目录为:一级目录:1、2、3、4、5、6、7、8、9、10二级目录:2.1、2.2、2.3、2.4和6.1、6.2、6.3、6.4三级目录:6.1.1、6.1.2、6.1.3、6.1.4各级目录的名字假设以字符串的方式存放,且最后拆分出的各级目录单独存放。

2024-01-18 16:37:17 381

原创 python中那些双下划线开头得函数和变量

如果要创建自己的类,且对象之间的比较有意义,可以使用下面的特殊方法来实现比较。因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始。要重建序列化对象,Python 需要创建一个和被序列化的对象看起来一样的新对象,然后设置新对象的所有属性。方法将总是被调用,哪怕是在 with 语块中引发了例外。“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用。

2024-01-18 16:15:45 924

原创 Python教程: 反射及常用的几种方法

getattr(obj,name_str) 根据字符串name_str获取Obj对象中对应方法的内存地址。hasattr(obj,name_str) 判断一个obj对象是否有对应name_str的方法。delattr(obj,name_str) 删除对象obj中名为name_str的属性或者方法。setattr(obj,key,value) 为对象Obj新增或修改属性或者方法。反射就是通过字符串映射或修改程序运行时的状态、属性、方法。

2024-01-17 16:39:38 356

原创 Python动态导入模块的两种方式

动态导入模块就是只知道str类型的模块名字符串,通过这个字符串导入模块。

2024-01-17 16:37:10 360

原创 python教程:属性查询顺序,数据描述符

说了一堆有的没的,其实描述符就是一个特殊的实现,当你的一个对象的属性是描述符时,设置/赋值/读取 这个属性,都会触发这个描述符内部相应实现的方法。描述符的用处就是,当一个对象的某个属性是一个描述符时,你访问这个描述符类型的属性,就会调用这个描述符的方法。所以,结合上面的 docstring,我们可以看出,数据描述符应该是给实例使用的,类使用它用处不大,至少没法调用它的。方法时,此时数据描述符优先级高,所以实例属性 self.a 其实就是对类属性 a 的赋值,会调用数据描述符的。此时调用 b.a ,会如何?

2024-01-15 16:51:29 363

原创 python列表中切片的正负数

先说结论:列表切片的格式为[start: end: step]其中 step 代表步长,即每从 start 位置开始每隔几个元素取一个值step 为正数时表示切片取值方向为:从左往右;为负数时:从右往左start, end 代表切片取值的起始和结束位置,请注意这个词:位置,我们假设可以取值的范围是数学中 x 坐标轴上的所有值,不管 start, end 它们是正数还是负数,都没有关系,它们只代表切片的区间位置而已!

2024-01-15 16:44:36 345

原创 Python如何访问闭包中的变量

你想要扩展函数中的某个闭包,允许它能访问和修改函数的内部变量。

2024-01-12 16:16:55 367

原创 Python中如何避免字典和元组的多重嵌套的方法

该代码出现字典、元组的多层嵌套,应拆解为类。多层嵌套的代码,很难维护。虽然代码量是原来的两倍,但更清晰,更易扩展,理解起来比原来容易。分析:定义一个 BySubjectGradebook类,字典。从最底层开始重构,即考试成绩。这么简单的信息,没必要写成类。分析:定义一个 SimpleGradebook类,字典可能因为功能过多导致结果多重嵌套。Gradebook()类,学生名是字典。namedtuple()命名元组。Student()类,科目是字典。Subject()类,成绩是列表。将下面的字典重构为类。

2024-01-12 16:14:05 383

原创 Python实现简易版选课系统

创建随机产生3个[0:5]不重复的数字#学习中遇到问题没人解答?小编创建了一个Python学习交流群:153708845lst=[]s=set(lst)return lst。

2024-01-05 16:49:59 412

原创 python中小数据池和编码

之前的这个值. 所以在你给出的例⼦中, ⽂件执⾏时(同⼀个代码块) 会把a, b两个变量指向同⼀个对象.如果是不同的代码块, 他就会看这个两个变量是否是满⾜⼩数据池的数据,在代码块内的缓存机制是不⼀样的. 在执⾏同⼀个代码块的初始化对象的命令时, 会检查是否其值是否已经存在, 如果存在, 会将其重⽤. 换句话说: 执⾏同⼀个代码块时,遇到初始化对象的命令时, 他会将初始化的这个变量与值存储在⼀个字典中, 在遇到新的变量时, 会先在字典中查询记录, 如果有同样的记录那么它会重复使⽤这个字典中的。

2024-01-05 16:46:05 893

原创 python中7种方法实现字符串的拼接

Template的实现方式是首先通过Template初始化一个字符串。使用这种方式进行字符串连接的操作效率低下,因为python中使用 + 拼接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当拼接字符串较多时自然会影响效率。这种方式一般常使用在将集合转化为字符串,‘’.join()其中’'可以是空字符,也可以是任意其他字符,当是任意其他字符时,集合中字符串会被该字符隔开。通过这种方式拼接字符串需要注意的是字符串中{}的数量要和format方法参数数量一致,否则会报错。

2023-12-19 16:37:26 514

原创 python中传参是传值还是传引用

在执行test函数前,列表list和参数c都指向同一个对象,执行test时并没有重新赋值,也没有新的指向过程,append方法只是对列表对象插入一个元素,对象还是原来的对象,只是对象里面的内容变了,因为参数c和列表list都是绑定同一个对象上,执行c.append和list.append方法本质都是对一个对象进行操作,因此list列表在调用函数后发生了变化,但id没变,还是原来那个对象。在此之前先来看看变量和对象的关系:Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。

2023-12-19 15:42:47 384

原创 Python中私有变量和私有方法

python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道】在python中定义私有变量和私有方法只需要在变量名或函数名前加上 "__"两个下划线。】,但为了保持私有性,不建议直接使用这种方法访问。在类内部的方法中使用时。

2023-12-16 15:25:53 437

原创 使用python中kivy库生成安卓APP

基于python也可以开发安卓APP,这需要使用到kivy库来进行开发,再通过buildozer来编译构建。这两个库的安装和使用方式都相对比较简单,我们推荐直接在本地的系统环境下直接部署使用,最大的困难其实在于部署的过程以及配置文件的修改,这也都是比较基础的操作了。最后我们演示了使用文本框和按钮事件,加上python的eval()函数和math数学仓库,实现了一个可以在移动端调用math库中的函数执行数学计算的简单APP,并提供了apk下载网盘地址。

2023-12-15 16:35:19 808

原创 Python中lambda表达式的用法

本文主要展示了一些lambda表达式的使用示例,通过这些示例,我们可以了解到lambda表达式的常用语法以及使用的场景。在一般情况下,其最大的意义还是简化了python中函数的定义方式,在可读性上远不如def所定义的函数。

2023-12-15 16:25:37 377

原创 python使用迭代生成器yield减少内存占用的方法

本文介绍了python的迭代器yield,其实关于yield,我们可以简单的将其理解为单个元素的return。这样不仅就初步理解了yield的使用语法,也能够大概了解到yield的优势,也就是在计算过程中每次只占用一个元素的内存,而不需要一直存储大量的元素在内存中。

2023-12-14 16:20:21 344

原创 python读取文件指定行的三种方法

本文通过4个测试案例分析了在python中读取文件指定行内容的方案,并得到了一些运行耗时的数据。从需求上来说,如果是对于小规模的数据,比如几百行规模的数据,建议使用readline循环遍历来操作,速度也相当不错,或者是linecache中的函数实现也是可以的,甚至可以直接用readlines将整个文本内容加载到内存中。但是对于数据规模比较大的场景,比如超过了千万行的级别,那么使用sed指令的方式对指定行内容进行读取的方式,应该是所有方式中最快速的。

2023-12-14 16:16:39 682

原创 Python中通过字符串访问与修改局部变量

Python本身是一门比较灵活便捷的编程语言,但是便捷往往有可能伴随着一些风险,比如exec和eval等内置函数的实现,有可能导致sandbox escaping的问题。而有时候我们又需要一些批量化的操作,比如批量化的创建或者修改局部、全局或者是成员变量,这样就需要我们首先要把所有的变量名存成字符串,在需要的时候再作为变量名去调用。在这篇文章中,我们介绍了一系列非exec和eval的操作(并不是说没有风险,也引用了ctype和sys定义的数据帧),来查看和定义、修改所需的各种变量。

2023-12-13 15:34:30 754

原创 在Python中将字典转为成员变量的方法

在python中直接支持了...:Out[6]: 1Out[7]: 3在这个案例中,我们在类的外部定义了两个字典dict_a和dict_b,字典的key值都是字符串的格式。而我们知道字符串格式在python中如果不使用eval,是不能直接作为变量名来使用的。而通过的方法将字典导入后,会自动识别其中所有的key和value值,转而赋值给当前类作为成员变量。

2023-12-13 15:30:51 392

原创 用Python程序如何捕获Ctrl+C终止信号?

当我们准备去杀死一个进程时,从程序设计的本身来考虑,我们应当要设计一定的保护方案来确保程序被非正常终止时,相应的计算结果也能够被很好的保存下来。在Python中可以使用signal.signal函数来实现这样的功能,但是如果要实现数据的保存功能,需要结合一个实际的类来实现。

2023-12-12 15:55:32 415

原创 Python内置函数中的“加和”函数

如果我们遇到[[1],[2,3],[4,5,6]]这样的一个python列表,想把他展平为一个一维的列表,这个时候你会使用什么样的方法呢?for循环?while循环?其实python的内置函数sum中简单的支持了一下这样的功能,使得我们可以更加简便的把一个高维且长度不固定的列表展平为一个规则的一维列表。

2023-12-12 15:52:57 377

原创 Python中列表和字符串的反转

以上就是关于Python中列表和字符串的反转操作(这才是冰山一角,还有更多的实现方式),实际应用中还是使用列表自带的函数和切片操作进行反转即可,手写的仅供参考使用,写代码嘛,怎么简单易懂怎么来。以上对列表和字符串的反转,都是现成的,使用起来很方便;但是我们也可以自己为列表和字符串手写一个反转函数(仅供参考)关于字符串的反转,并没有确切的函数对字符串进行反转,但是字符串也可以使用切片进行反转。在Python中有专门进行列表反转的函数–reverse()还可以使用切片操作进行列表反转。

2023-12-09 16:20:07 403

原创 Python中的私有属性与私有方法

print("这是私有方法")print("调用共有属性:", self.uname)print("调用私有属性:", self.__uage)print("调用私有类属性:", self.__price)print("这是公有方法")print("调用共有属性:", self.uname)print("调用私有属性:", self.__uage)print("调用私有类属性:", self.__price)

2023-12-09 15:25:50 363

原创 Python 函数和变量作用域

简单介绍:可以理解为一个封闭的包裹,这个包裹就是一个函数和函数内部对应的逻辑,包裹里面的东西就是自由变量,自由变量可以随着包裹到处游荡,比如:装饰器是一个闭包,随着装饰器进行传递的函数名就是自由变量(函数),装饰器和内部逻辑结构就是闭包中的函数和内部逻辑。闭包概念:在计算机科学中,闭包(Closure)是词法闭包的简称,是引用了自由变量的函数,这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。b(),这一步调用的其实是a返回的同一名的b函数,并且开始执行b函数中的操作。

2023-12-08 16:08:57 377

原创 Python中容易被忽略的内置类型

Python中的内置类型是我们开发中最常见的,很多人都能熟练的使用它们。然而有一些内置类型确实不那么常见的,或者说往往会被我们忽略,所以这次的主题就是带领大家重新认识这些“不同寻常”的内置类型。

2023-12-08 16:01:11 838

原创 Python中pathlib 模块的用法

本文给大家介绍了 Python 的 pathlib 模块,为 Python 工程师对该模块的使用提供了支撑,让大家了解如何使用 pathlib 模块读写文件、操纵文件路径和基础文件系统,统计目录下的文件类型以及查找匹配目录下某一类型文件等。

2023-12-07 16:23:25 841

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除