![](https://img-blog.csdnimg.cn/c7a72e5233af46faa13a2ce3d1e410b6.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 88
Python
Dontla
调包侠
展开
-
【Effective Python教程】(90个有效方法)笔记——第3章:函数——23:用关键字参数来传参(位置参数和关键字参数混合使用、默认参数值、万能形参**kwargs)强制关键字参数、可选参数
*kwargs**kwargs在大多数情况下,调用者只需要沿用这个值就好,但有时也可以明确指定自己想要传的值。这样能够减少重复代码,让程序看上去干净一些。例如,我们要计算液体流入容器的速率。如果这个容器带刻度,那么可以取前后两个时间点的刻度差(weight_diff),并把它跟这两个时间点的时间差(time_diff)相除,就可以算出流速了。一般来说,我们会用每秒的千克数表示流速。但有的时候,我们还想估算更长的时间段(例如几小时或几天)内的流速结果。原创 2024-06-20 17:53:27 · 891 阅读 · 0 评论 -
Python默认参数陷阱(Dangerous default value [] as argument.)引用传递(建议列表、字典等使用None作为默认参数,不要使用空列表、空字典)
在Python中,对象通过引用传递,这意味着当将列表作为默认参数时,实际上是传递了对同一个列表的引用,而不是每次调用都创建一个新列表。Python中的函数默认值是在函数定义时评估并创建的,而不是在函数调用时。虽然默认参数非常有用,但在使用可变类型(如列表、字典等)作为默认参数时,可能会遇到一些问题。在Python中正确地使用默认参数,尤其是对于可变类型,需要理解其背后的工作原理。作为默认参数,并在函数内部检查其值,确保每次调用函数时都会创建一个新的列表。是在函数定义时创建的同一个列表,每次调用。原创 2024-06-20 14:11:50 · 847 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第3章:函数——22:用数量可变的位置参数给函数设计清晰的参数列表(可变参数*args)(这作者也太抓不住重点了)
让函数接受数量可变的位置参数(positional argument),可以把函数设计得更加清晰(这些位置参数通常简称 varargs,或者叫作star args,因为我们习惯用`*args`指代)。例如,假设我们要记录调试信息。如果采用参数数量固定的方案来设计,那么函数应该接受一个表示信息的message参数和一个values列表(这个列表用于存放需要填充到信息里的那些值)。原创 2024-06-19 17:54:53 · 654 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第3章:函数——21:了解如何在闭包里面使用外围作用域中的变量(nonlocal关键字)作用域bug(scoping bug)尽量少用
found = False # 初始化found变量为Falsedef helper(x): # 定义一个内部函数helper,用于sort方法的key参数found = True # 如果元素在组中,设置found为Truereturn (0, x) # 对组内的元素赋予高优先级return (1, x) # 对组外的元素赋予普通优先级numbers.sort(key=helper) # 使用helper函数作为key来排序numbers列表。原创 2024-06-18 15:13:00 · 786 阅读 · 0 评论 -
python __call__(实例化对象的时候返回一个函数,调用这个函数的时候会执行__call__)(将类实例用作回调函数)(类装饰器)
在Python中,__call__是一个特殊方法(也称为魔术方法),它可以定义在任何类中。当实例被当作函数调用时,__call__方法就会被触发。这使得实例的行为模仿函数,从而可以接收参数并返回值。self.n = nresult = add_five(3) # 调用__call__方法,输出8在上面的示例中,创建了一个名为Adder的类,它接受一个初始化参数n。__call__方法使得Adder类的实例能够直接被调用,并向其中传递一个参数x,返回n + x的结果。原创 2024-06-18 15:05:59 · 784 阅读 · 0 评论 -
Python类的优势及应用场景深度分析(代码封装与组织、继承与代码复用、多态与接口、状态管理与行为封装)(python class)
使用 Python 类相较于其他解决方案在多个方面展示出显著优势,尤其在代码的组织、可维护性、扩展性及多态性方面。本文将深入探讨使用类的优势,并通过具体的代码示例阐明其在特定应用场景下的应用价值。在深入探讨 Python 类的这些优势后,可以清楚地看到,尽管其他编程技巧如函数或模块也可用于解决类似问题,但在需要结构化和可维护的大规模应用程序中,类提供了无可比拟的优势。这种封装性不仅帮助保护数据的完整性,还提高了代码的可读性和易维护性。这不仅减少了代码的重复,还增强了代码的可维护性。原创 2024-06-18 15:00:47 · 1400 阅读 · 0 评论 -
Python **运算符、*运算符(python*args、python**kwargs:参数解包、参数拆包、容器解包容器、序列解包、元组解包)强制关键字参数*、多个位置参数*args
*在函数定义中使用**运算符可以让函数接受任意数量的关键字参数。这些参数在函数内部被存储在一个字典中。适用于多级函数调用通过深入了解**运算符在Python中的这种用法,可以更加高效地利用Python的动态特性和强大的函数调用机制。这不仅增强了代码的灵活性,也提升了其可扩展性和可维护性。原创 2024-06-14 16:55:31 · 956 阅读 · 0 评论 -
Python模块级变量(python模块变量)(实际开发中建议将变量封装在类或函数集合中,不建议直接定义模块级变量)
Python作为一门高级编程语言,其模块化特性极大地增强了代码的可重用性和可维护性。模块级变量,作为模块结构中的一个关键概念,允许数据在模块内部各个部分之间共享。本文将深入探讨模块级变量的概念、用途、优点以及潜在的问题,并通过示例展示如何有效地使用模块级变量。模块级变量是在模块的最顶层定义的变量,这意味着它们不属于任何类或函数。这些变量在模块内的任何地方都可见,可被模块内的函数、类和其他结构访问。建议将相关的模块级变量封装在一个类或一个封装的函数集合中,提供接口进行访问和修改。原创 2024-06-14 16:34:31 · 871 阅读 · 0 评论 -
Python 中的 Global 和 Nonlocal 关键字(python global声明全局变量、python nonlocal声明外层非全局作用域变量,主要用在嵌套函数中)模块作用域
在 Python 编程中,global和nonlocal关键字是用来在函数或其他块中修改外部作用域变量的。这两个关键字在管理变量作用域时非常有用,尤其是在嵌套函数和大型项目中。本文将详细介绍这两个关键字的用法、区别以及实际应用场景。global关键字用于在函数内部声明变量为全局变量。当需要在一个函数内修改全局作用域中的变量时,就需要使用global关键字。nonlocal关键字用来在函数或其他作用域中使用外层(非全局)变量。它主要用在嵌套函数中,当需要修改嵌套作用域内的变量时。原创 2024-06-14 14:21:19 · 1062 阅读 · 0 评论 -
Python对象引用(传对象引用)(python值传递、python引用传递、python传值、python传引用、python引用)不可变数据类型、python传参、深拷贝、浅拷贝、id()函数
值传递指的是在调用函数时,实际传递的是变量的副本(拷贝),而不是变量本身。这意味着在函数内部对参数的修改不会影响到原始数据。引用传递则相反,传递的是变量的引用,而不是副本。这样,函数内部对参数的任何修改都会直接影响到原始数据。通过以上的探讨和示例,可以看出 Python 中的参数传递虽然表面上简单,实则包含了丰富的细节和深层次的理解。掌握了这些知识,可以帮助开发者更有效地管理内存使用,设计更安全和高效的函数。原创 2024-06-14 13:38:40 · 706 阅读 · 0 评论 -
Python编码规范:Final newline missing警告(最后一行需要增加空行、文件末尾需要空行、末行换行、代码文件以空行结束、以空行结尾)(Git钩子pre-commit)检查空行脚本
根据POSIX定义,一个文本文件应该由一系列行组成,每一行都以换行符(\n)结束。因此,如果最后一行没有以换行符结束,某些Unix工具可能不会将这最后一行视为有效的文本行。虽然Python解释器通常可以正确处理这种情况,但这可能会在使用其他工具或库时导致问题。原创 2024-06-13 18:00:16 · 824 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第3章:函数——20:遇到意外状况时应该抛出异常,不要返回None(gradual类型系统)python函数模板 python函数示范
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-11 17:06:54 · 945 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第3章:函数——19:不要把函数返回的多个数值拆分到三个以上的变量中(将函数返回值定义一个轻便类,或使用nametuple,见37条)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-07 17:58:55 · 946 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——10:用赋值表达式减少重复代码(海象操作符:=)(避免让人误以为只在局部使用的变量是一个重要变量)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-05 18:16:26 · 877 阅读 · 0 评论 -
python loop-and-a-half模式(循环半)(while condition --> while True break)(可用海象操作符:=替代)(沃尔拉斯运算符)
Loop-and-a-half模式主要用于处理那些需要在循环中途进行条件判断以决定是否继续循环的场景。传统的while循环可能需要在循环体的开始和结束分别进行条件判断,而Loop-and-a-half模式通过在循环体中间进行一次判断,减少了代码重复和可能的错误。原创 2024-06-05 17:23:14 · 894 阅读 · 0 评论 -
python lambda函数与延迟执行(python匿名函数)(lambda arguments: expression)(动态数据处理、事件驱动系统、条件执行与策略模式)
print(result) # 输出:7延迟执行,顾名思义,指的是代码并非在其定义处立即执行,而是等到某个特定时刻或条件满足时才触发执行。这一机制在处理大量数据流、响应式编程、事件驱动编程等领域尤为重要,能够有效提升程序的响应速度和资源利用率。原创 2024-06-05 13:56:41 · 1005 阅读 · 0 评论 -
python 内置map()函数(高效处理序列数据方法,将函数应用于一个序列的每个元素)(懒加载)
map()function: 是一个函数,map()将这个函数应用于后面参数中的每个元素。iterable: 一个或多个序列,map()将从中取元素应用前面的函数。map()函数返回一个迭代器,即一个map对象。这个对象懒加载其元素,只有在迭代至某元素时,才会计算并返回该元素。这种处理方式使得map()在处理大量数据时更为内存高效。原创 2024-06-05 13:27:53 · 582 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——9:不要在for与while循环后面写else块(for else语法、while else语法)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-03 15:12:15 · 842 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——8:用zip函数同时遍历两个迭代器(zip-longest)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-03 13:43:07 · 772 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——7:尽量用enumerate取代range
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-06-03 11:32:40 · 573 阅读 · 0 评论 -
python移位操作符(左移位操作符<<、右移位操作符>>)(允许开发者对整数进行位操作,乘2或除2)(左移操作、右移操作)(位掩码操作|=)(位运算、位操作、位移操作)
左移位操作符 (这些操作符用于对二进制数的位进行左或右移动,通常用于快速的乘法或除法运算,以及进行位级的数据操作和调整。原创 2024-05-31 17:12:22 · 973 阅读 · 0 评论 -
python zip()函数(将多个可迭代对象的元素配对,创建一个元组的迭代器)zip_longest()
zip()原创 2024-05-31 11:01:51 · 890 阅读 · 1 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——6:把数据结构直接拆分到多个变量里,不要专门通过下标访问:unpacking机制、python解包
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-05-30 17:43:54 · 929 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——5:用辅助函数取代复杂的表达式(parse_qs()函数)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-05-30 13:27:47 · 1024 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——4:学会使用f-string(取代C类型fstring和str.format)repr()函数
字符串。原创 2024-05-28 17:22:50 · 759 阅读 · 0 评论 -
Python隐式字符串拼接(两个或多个字符串字面量紧邻在一起(仅用空白字符分隔,通常是空格或换行符),Python解释器会自动将它们合并为一个字符串)(隐式拼接)(相邻字符串拼接)
隐式字符串拼接是Python中的一个特性,当两个或多个字符串字面量紧邻在一起(仅用空白字符分隔,通常是空格或换行符),Python解释器会自动将它们合并为一个字符串。这种方式无需使用任何额外的操作符如加号 (原创 2024-05-28 17:10:37 · 601 阅读 · 0 评论 -
python fstring教程(f-string教程)(python3.6+格式化字符串方法)
F-string,全名为Formatted String Literals,通过在字符串前添加f或F,使得字符串能够包含Python表达式的值。这些表达式被大括号{}包围,并在运行时计算,其结果直接插入到字符串中。name = "世界"message = f"你好,name = "世界" message = f"你好, {name }!" print(message) # 输出: 你好,世界!!print(message) # 输出: 你好,世界!原创 2024-05-28 16:39:24 · 734 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——3:了解bytes与str的区别(字节串、Unicode转义序列、Unicode三明治)
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-05-28 14:11:01 · 600 阅读 · 0 评论 -
【Effective Python教程】(90个有效方法)笔记——第1章:培养pythonic思维——1:查询自己使用的python版本 2:遵循pep8风格指南
Effective Python——编写高质量Python代码的90个有效方法。原创 2024-05-28 14:08:23 · 1020 阅读 · 0 评论 -
Python字符串和字节串转换辅助函数(工具函数)to_str()、to_bytes()(对encode()、decode()的封装)(确保数据类型在不同操作中的正确性和安全性,减少数据类型错误)
"""Args:Returns:"""else:"""Args:Returns:"""else:这两个辅助函数to_str和to_bytes提供了一个简洁的方式来确保数据类型在不同操作中的正确性和安全性。通过使用这些函数,开发者可以减少数据类型错误,并提高代码的可读性和可维护性。原创 2024-05-28 11:35:30 · 744 阅读 · 0 评论 -
python linux服务器ssh简单爆破(测试用户名密码)(连接ssh服务器)(测试登录ssh服务器)
这段代码的目的是通过SSH协议尝试连接到指定的服务器,使用提供的用户名和密码组合列表进行身份验证。它适用于需要验证多个凭据对有效性的场景,比如在你有一个用户名和密码列表,需要检查哪些能够成功登录到SSH服务器。注意,此代码实际上会对每个凭证组合尝试四次连接(每个组合两次尝试,循环两遍),这可能不是预期的行为(主要是因为手动登录的时候,错误三次将会提示重新尝试,担心这个,所以每个组合尝试登录两次)。使用列表推导式生成用户名和密码的所有可能组合,结果是一个包含元组的列表,每个元组包含一对用户名和密码。原创 2024-04-07 11:11:34 · 1181 阅读 · 0 评论 -
python asyncio库(协程Coroutine)、I/O bound(输入/输出受限)和Network bound(网络受限)、Async/Await语法、基于epoll的实现
在这种情况下,提高性能的关键是优化I/O操作,例如通过使用缓存、异步I/O操作或提高数据传输效率来减少对慢速I/O资源的依赖。在asyncio这样的异步编程库中,通过使用事件循环和协程,可以同时发起多个非阻塞的I/O请求,使得程序在等待I/O操作完成时不会被阻塞,从而能够在单个线程内并发处理多个任务。该库围绕事件循环构建,这是asyncio架构的核心,允许开发者并发运行多个任务,从而在像web服务器、I/O受限和网络受限的应用程序中有效使用I/O并提高性能。的核心,负责程序的运行,以及管理所有的异步任务。原创 2024-04-02 17:57:19 · 1089 阅读 · 0 评论 -
【python高级编程教程】笔记(python教程、python进阶)第五节:(2)python中序列类型的abc继承关系(略)(3)列表+、+=、append()、extend()方法区别
Python lists are versatile(多功能的), mutable sequences, allowing you to store an ordered(有序的) collection(集合) of items.Python列表是多功能的、可变的序列,允许你存储有序的项目集合。These items can be of any type, and lists are capable of growing and shrinking(缩减) as needed.原创 2024-03-26 23:58:12 · 1196 阅读 · 0 评论 -
【python高级编程教程】笔记(python教程、python进阶)第五节:(1) python中的序列分类(List、Tuple、Deque、String、Bytes、Bytearray)
Python的标准库中的array模块提供的数组是专为基本数值类型设计的,比如整数、浮点数等。这意味着它们不能直接用于存储自定义对象。类型的主要优点是它们在存储数值数据时比普通的列表(list)更为高效和紧凑,但这是以只能存储特定类型的数据为代价的。如果你需要存储自定义对象的集合,应该使用列表(list列表(List): Python中的列表非常灵活,可以存储任何类型的对象,包括自定义对象。列表允许你存储一个混合的对象集合,同时提供了丰富的方法来进行元素的添加、移除和访问。字典(Dictionary)原创 2024-03-25 23:50:28 · 891 阅读 · 0 评论 -
【python高级编程教程】笔记(python教程、python进阶)第四节:(12、13)python with语句(上下文管理器,封装了异常处理和资源管理代码)contextmanager装饰器
Python中的上下文管理器是一种强大的结构,它提供了一种干净、高效的资源管理方式。它们允许在需要时精确地设置和拆除资源,从而提升代码的安全性和效率。原创 2024-03-23 15:44:06 · 743 阅读 · 0 评论 -
python yield关键字(生成器Generators)(延迟计算、惰性求值、缓式求值)(生成器表达式generator expressions)(生成器表达式、链接生成器)
In the Python programming language, the concept of generators provides a powerful tool for creating iterators(迭代器) in a more concise and memory-efficient way.在Python编程语言中,生成器的概念提供了一种用更简洁、更节省内存的方式创建迭代器的强大工具。原创 2024-03-21 23:46:41 · 1119 阅读 · 1 评论 -
【python高级编程教程】笔记(python教程、python进阶)第四节:(11)mixin继承案例——django rest framework(DRF)(mixin模式)
早期的一些编程语言,如Flavors系统(在Lisp机上使用的一种编程语言),提供了类似mixin功能的机制,允许对象或类获得并组合多个行为或特性。在这些语言中,mixin被用来分享在不同类之间共有的方法,而不需要从一个共同的祖先继承,这有效地解决了多重继承可能带来的问题,如菱形继承问题。描述的是广泛的、普遍的或者整体的特征,不针对特定的细节或个例。总之,mixin的概念来源于对于更加灵活的代码重用和组织方式的需求,它允许开发者在维持类的独立性和减少耦合的同时,有效地重用代码。原创 2024-03-19 23:20:29 · 1230 阅读 · 0 评论 -
【python高级编程教程】笔记(python教程、python进阶)第四节:(10)super()函数用于调用下一个类(按照MRO解析顺序列表定义的顺序),下一个类可能并不直接是当前类的父类或超类
参考文章:python super()函数介绍(允许子类访问其超类的方法)superclass父类、超类;subclass子类super()调用的目标是MRO中定义的下一个类的方法。这个所谓的“下一个类”可能并不是当前类的直接父类或超类,尤其是在涉及多重继承的情况下。这句话指出了一个关于super()在Python中行为的重要细节,特别是在涉及多重继承时。要理解这句话,我们需要先理解Python中的MRO(Method Resolution Order,方法解析顺序)和super()是如何工作的。原创 2024-03-18 23:09:40 · 1109 阅读 · 0 评论 -
python super()函数介绍(允许子类访问其超类的方法)superclass父类、超类;subclass子类
Python中的`super()`函数在促进多态性和代码复用方面起着至关重要的作用,它允许子类访问其超类的方法。本文深入探讨了`super()`的机制、优势和实际应用,并提供了全面的示例。原创 2024-03-18 22:06:13 · 1325 阅读 · 0 评论 -
python dir()函数(列举指定对象的所有属性和方法)__hash__、__init_subclass__、__reduce__、__subclasshook__、__weakref__
dir()函数是Python中的一个内置函数,它用于列举指定对象的所有属性和方法。这个函数非常有用,因为它可以帮助你了解对象提供了哪些功能,无论是内置对象还是自定义对象。dir()函数可以接受一个参数,如果没有提供参数,它将返回当前作用域内的所有名称。对于自定义的类和对象,dir()也同样有效。它可以帮助你了解对象的方法和属性,包括那些继承自父类的。这将列出MyClass实例的所有属性和方法,包括Python的特殊方法。dir()"这是一个类的示例文档字符串。pass。原创 2024-03-17 22:39:01 · 1212 阅读 · 0 评论