![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
Code范特西
这个作者很懒,什么都没留下…
展开
-
Python核心魔法方法(一)__init__ , __new__ 和__del__
当使用"类名([实参])"创建实例对象时,Python解释器的主要处理过程包括2大步:1.调用特殊方法__new__()创建实例对象首先会查找该类对象是否实现了特殊方法__new__(),如果没有实现,则根据MRO顺序在父类中依次查找,知道类对象object2.调用特殊方法__init__()会返回创建的实例对象new()返回的实例对象会作为实参被自动传递给__init__()的第一个形参self。下面我们通过一个示例来展示这两大步在这里插入代码片class Parent(object):原创 2020-09-17 11:48:36 · 244 阅读 · 0 评论 -
Python新式类工具之property
简介Property,属性访问器,又称特性,是一种让新式类定义自动调用方法来访问或复制实例属性的方式。这种功能与Java和C#语言中的属性(‘getter’和‘setter’)很相似,能动态地计算属性的值而不需要在访问时调用方法。经典句法可以通过把一个内置函数的结果赋值给一个类属性来创建一个property,如下所示:attribute = property(fget,fset,fdel,doc)使用时给fget传入一个函数用于拦截属性访问,给fset传入一个函数用于属性赋值,给fdel传入一个函原创 2020-09-13 16:42:18 · 290 阅读 · 0 评论 -
Python从放弃到入门——命名元组namedtuple
最近在维护python代码时看到了一种叫namedtuple的数据结构,对这种定义形式有点陌生,因此花时间找资料看了一下。简介对于序列类型(如列表,元组),我们是通过位置(即索引,下标)来访问的。但有时候会使代码变得有些难以阅读。collections中有一个namedtuple,它是一个工厂函数,用来构建一个带字段名的元组和一个有名字的类。定义>>> from collections import namedtuple#创建时需要2个参数,1个是类名,一个是类的各个字段名原创 2020-08-01 17:06:42 · 228 阅读 · 0 评论 -
Python从放弃到入门——装饰器decorator
简介前面我们看到,在不改变原始函数定义的情况下,可以通过偏函数给函数传入指定的参数,从而简化调用。能否不改变原函数体内容对函数的功能进行扩充呢?答案是yes,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。先看一下简单的add函数例子def add(x,y): print(x,y) return x+yprint(add(1,2))1 2...原创 2019-11-22 10:39:44 · 157 阅读 · 0 评论 -
Python从放弃到入门——闭包closure 匿名函数lambda 偏函数partial
函数做返回值通过上一节的例子中,我们可以看到一个函数可以作为另一个函数的实参。此外一个函数还可以作为另一个函数的返回值。def add(x,y): return x+ydef fun1(): return addprint(fun1()(1,2))3注意函数做返回值时的参数传入。嵌套与闭包一个函数还可以嵌套定义另一个函数,在作用域的例子中,我们对嵌套作用域做过简...原创 2019-11-21 13:39:00 · 505 阅读 · 0 评论 -
Python从放弃到入门——函数式编程Functional Programming
Python支持多种编程范式:过程式(使用基础的语句),面向对象式(使用类)和函数式。对于函数式编程,Python提供了一整套进行函数式编程的内置工具,如map,filter,reduce。此外,还支持嵌套作用域闭包、匿名函数lambda、生成器,函数装饰器和类装饰器。map程序对列表和其他序列常常要做的一件事,就是对每个元素进行一个操作并把其结果收集起来。如下面的例子所示,可以使用fo...原创 2019-11-21 11:11:59 · 284 阅读 · 0 评论 -
Python从放弃到入门——作用域scope
变量的作用域指的是变量起作用的范围。变量的作用域是由定义变量的位置决定的。Python 中变量的作用域有4种。局部作用域局部作用域(函数)中定义的变量称为局部变量,其作用域为从定义变量处开始到函数结束。def myfunc(a): print(a) b=3 print(b)myfunc(2)23print(a) NameError: name 'a' i...原创 2019-11-20 14:44:42 · 126 阅读 · 0 评论 -
Python从放弃到入门——递归函数recur
在一个函数体内,可以调用其他函数。如果一个函数的函数体内调用了该函数本身,该函数就是递归函数递归函数必须要有明确的递归结束条件,也称为递归出口。用递归解决的问题必须满足两个条件:1.可以通过递归调用来缩小问题的规模,且新问题和原问题有着相同的形式。2.递归可以在满足一定的条件后退出。def fact(n): if n==1: return 1 retur...原创 2019-11-20 10:17:22 · 1458 阅读 · 0 评论 -
Python从放弃到入门——函数参数argument
参数传递Python中参数的传递是通过自动将对象(实参)赋值给局部变量名(形参)来实现的调用函数时把实参传递给形参从而初始化形参,本质是执行了赋值语句:形参=实参对象。因此,如果实参对象可变,在函数体内对形参对象的任何修改其实是修改实参def f(arg1,arg2): print('after initiate:arg1=',arg1,'arg2=',arg2) arg...原创 2019-11-19 14:15:41 · 2030 阅读 · 2 评论 -
Python从放弃到入门——函数基础function
函数简介什么是函数为什么需要函数1.复用代码如果多个地方使用不需重复编写,可以直接调用定义好的函数。2.隐藏实现细节只关系接收的输入(参数)以及产生的输出(返回值)。3.提高可维护性如果将来需要对代码进行修改,直接在定义函数的地方修改一次,而不需要每个地方都修改。4.提高可读性,便于调试每个函数对应特定功能,提高可读性。函数的定义和调用定义的语法格式:def name( ...原创 2019-11-18 21:07:46 · 156 阅读 · 0 评论 -
Python从放弃到入门——迭代器iterator
可迭代对象通过for循环来遍历一个list或tuple,这种遍历我们称为迭代(Iteration)。因此,可用于for-in循环的对象被称为可迭代(Iterable)对象。例如:前面介绍的python内置的数据结构列表、元组、字典、集合,还有字符串、range、生成器都是可迭代对象,而整数类型不是可迭代对象。如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable...原创 2019-11-17 16:08:51 · 268 阅读 · 0 评论 -
Python从放弃到入门——生成器generator
生成器表达式上一节我们讲到了列表生成式、字典生成式、集合生成式、那有没有元组生成式呢?我们用其他生成式的方式将其包在()中构造一个试试看。t=(i*i for i in range(1,6))print(t)<generator object <genexpr> at 0x00000000020D7E58>我们得到是一个叫做生成器(generator)的对象。...原创 2019-11-17 11:27:11 · 317 阅读 · 0 评论 -
Python从放弃到入门——生成式Comprehensions
前面介绍了Python核心的内置数据结构列表,元组,字典,集合。除了前面介绍的方法与操作外,还有一种方式用于生成指定的列表,字典,集合等。这种操作叫做生成式,也叫推导(Comprehensions)。列表生成式列表生成式的格式如下:L=[ x*x for x in range(5)]列表推导看上去就像是一个反着写的for循环。把要生成的元素x * x放到前面,后面跟for循环,就可以把l...原创 2019-11-16 21:27:45 · 129 阅读 · 0 评论 -
Python从放弃到入门——集合set
集合简介集合也是Python提供的内置数据结构之一。可以把集合看作是咩有存储value的字典,集合的特点如下:1.集合不可以存储重复的数据2.集合的数据是无序的3.集合的数据必须是不可变类型4.集合可以动态伸缩5.集合会浪费较大内存创建创建集合的方式有两种:1.花括号{}注意:{ }代表空字典,不代表空集合2.调用内置函数set集合关系1.相等2.子集3.超集4....原创 2019-11-16 17:55:07 · 145 阅读 · 0 评论 -
Python从放弃到入门——字典dict
字典简介字典也是Python内置数据结构之一。主要特点有:1.通过键查找值,而不是索引2.字典的元素是无序的3.字典的键必须是不可变对象,且不可重复。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。4.字典可以动态伸缩5.与列表相比,具有极快的查找速度,但...原创 2019-11-15 13:40:24 · 270 阅读 · 0 评论 -
Python从放弃到入门——元组tuple
元组简介元组(tuple)也是Python内置对象之一,与列表最大的区别就是列表是可变的,而元组是不可变的,因此元组定义后无法增加,修改,删除。因此元组没有append、remove等方法。其他获取元素的方法和list是一样的,比如正数和负数索引,切片等。主要特点有:元组也是序列类型常用的元组操作如下:创建列表用 [ ] 表示,而元组用()表示空元组一个元素的元组元组中至少要...原创 2019-11-13 21:37:13 · 206 阅读 · 0 评论 -
Python从放弃到入门——列表list
Python学习笔记–列表1.列表简介列表(list)是Python内置对象之一,是Python中最具灵活性的有序集合对象类型。主要特点有:1.列表是任意对象的有序集合列表是有序对象,类似其他语言的数组,与数组不同的是,列表中的元素可以是任意对象,如数字、字符串、甚至嵌套的列表如L=[18,‘abc’,[1,2,3]]2.列表通过偏移访问由于列表是有序的,你总是可以通过偏移量访问...原创 2019-11-07 16:28:40 · 412 阅读 · 0 评论