随笔分类 - Python
摘要:十种排序算法 1. 常见算法分类 十种常见排序算法一般分为以下几种: (1)非线性时间比较类排序: a. 交换类排序(快速排序、冒泡排序) b. 插入类排序(简单插入排序、希尔排序) c. 选择类排序(简单选择排序、堆排序) d. 归并排序(二路归并排序、多路归并排序) (2)线性时
阅读全文
摘要:一、推导式套路 除了我们之前所学习的列表推导式和生成器表达式之外,还有字典推导式、集合推导式等等。 下面就是一个以列表推导式为例的推导式详细格式,同样适用于其他推导式。 二、列表推导式 例一:30以内所有能被3整除的数 例二:30以内所有能被3整除的数的平方 例三:找到嵌套列表中名字含有两个“e“的
阅读全文
摘要:一、迭代器 1.1 什么是可迭代对象? 字符串、列表、元组、字典、集合都可以被for循环,说明它们都是可迭代的。 我们怎么来证明这一点呢? 1.2 可迭代协议 我们现在是从结果分析原因,能被for循环的就是“可迭代的”,但是如果正着想,for怎么知道可迭代的呢?假如我们自己写了一个数据类型,希望这个
阅读全文
摘要:一、什么是装饰器? 装饰器本质上就是一个Python函数,它可以让其它函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。 装饰器的应用场景:比如插入日志,性能测试,事物处理,缓存等等场景。 二、装饰器的形成过程 现在我有一个需求,我想让你在不改变函数代码的情况下,测
阅读全文
摘要:1. 构建有默认参数的函数 当我们在构建一个函数或者方法时,如果想使函数中的一个或者多个参数使可选的,并且有一个默认值,那么可以在函数定义中给参数指定一个默认值,并且放到参数列表的最后就行了。比如: 如果默认参数使一个可以修改的容器,比如一个列表,集合或者字典,可以使用None作为默认值。比如: #
阅读全文
摘要:1. 参数注解 当写好一个函数以后,想为这个函数的参数添加一些额外的信息,这样的话,其他的使用者就可以清楚的知道这个函数应该怎么使用,这个时候可以使用函数参数注解。 函数参数注解能提示程序员应该怎样正确使用这个函数。 比如,下面这个函数就是一个被注解了的函数: Python解释器不会对这些注解添加任
阅读全文
摘要:当我们希望函数的某些参数强制使用关键字参数时,可以将强制关键字参数放到某个*后面就能得到这种效果。比如: 使用这种方法,我们还能在接受任意多个位置参数的函数中指定关键字参数。比如: 在很多情况下,使用强制关键字参数会比使用位置参数表意更加清晰,程序也更加具有可读性。例如,考虑一下下面这个函数调用:
阅读全文
摘要:1. 可接受任意数量位置参数的函数 为了能让一个函数接受任意数量的位置参数,可以在参数部分使用“*”。 在上面这个函数中,rest是由所有其他位置参数组成的元组。 然后我们在代码中把它当成了一个序列来进行后续的计算。 2. 可接受任意数量关键字参数的函数 为了接受任意数量的关键字参数,使用一个以**
阅读全文
摘要:1. 为什么要使用函数 假如说,现在python发生了一个bug,结果就是len方法不能使用了。 然后,现在有一个需求就是让计算“Hello world”的长度,那么怎么办呢? 这个问题很简单,那么来用代码实现一下: 这个时候,功能就已经实现了,但是现在又有了一个新的需求,就是要计算另外一个字符串的
阅读全文
摘要:官方文档对socket模式下的socket.send() 和 socket.sendall()解释如下: sock.sendall(string[, flags]) Send data to the socket. The socket must be connected to a remote s
阅读全文
摘要:和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块。 1. 表示时间的三种方式 在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串: (1) 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:
阅读全文
摘要:1.hashilib模块的功能 python的hashlib提供了常见的摘要算法,如MD5, SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换成一个长度固定的数据串(通常用16进制的字符串表示)。 摘要算法就是通过摘要函数对任意长度的data计算
阅读全文
摘要:1. 文件操作基本流程 计算机系统分为:计算机硬件,操作系统,应用程序三部分。 我们用Python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序,要操作硬件。 而应用程序是无法操作硬件的,这就用到了操作系统。 操作系统把复杂的硬件操作封装成简单的接口给用户/
阅读全文
摘要:1. 赋值 对于赋值运算来说,lst1和lst2指向的是同一个内存地址,所以它们是一样的。 2. 浅copy 2.1 示例1 执行结果为: 2.2 示例二 执行结果为: 2.3 示例三 执行结果为: 2.4 总结 对于浅copy来所,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地
阅读全文
摘要:集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型), 但是集合本身是不可哈希的(所以集合做不了字典的键)的。 以下是集合最重要的两点: (1)去重,把一个列表变成集合,就自动去重了。 (2)关系测试,测试两组数据之间的交集,差集,并集等关系。 1. 集合的创建 执行结果为: 2.
阅读全文
摘要:range:指定范围,生成指定数字。 1. range() 执行结果为: 2. range()步长 执行结果为: 3. range()反向步长 执行结果为:
阅读全文
摘要:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表,字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。 1. 第一种类型 执行结果为: 2. 改变enumerate索引起始 执行结果为: 3. 改变enumerate索引起始(二) 执行结果为:
阅读全文
摘要:for循环:用户按照顺序循环可迭代对象的内容 1. for循环字符串 执行结果为: 2. for循环列表 执行结果为: 3. for循环字典 执行结果为:
阅读全文

浙公网安备 33010602011771号