Python
文章平均质量分 68
小王的进阶之路
这个作者很懒,什么都没留下…
展开
-
Python 实例属性和类属性
由于 Python 是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过 self 变量:class Student(object): def __init__(self, name): self.name = names = Student('Bob')s.score = 90但是,如果 Student 类本身需要绑定一个属性呢?可以直接在 class 中定义属性,这种属性是类属性,归 Student 类所有:class Stu原创 2021-06-28 17:47:11 · 209 阅读 · 0 评论 -
Python 获取对象信息
Python 获取对象信息1. 使用type()2. 使用isinstance()3. 使用dir()当我们拿到一个对象的引用时,如何知道这个对象是什么类型,有下述几种方法:1. 使用type()首先,我们来判断对象类型,使用 type() 函数:基本类型都可以用 type() 判断:>>> type(123)<class 'int'>>>> type('str')<class 'str'>>>> type(No原创 2021-06-28 17:40:45 · 1172 阅读 · 2 评论 -
Python 继承和多态
在 OOP 程序设计中,当我们定义一个 class 的时候,可以从某个现有的 class 继承,新的 class 称为子类(Subclass),而被继承的 class 称为基类、父类或超类(Base class、Super class)。比如,我们已经编写了一个名为 Animal 的 class,有一个 run() 方法可以直接打印:class Animal(object): def run(self): print('Animal is running...')当我们需要编原创 2021-06-28 11:03:27 · 140 阅读 · 1 评论 -
Python 访问限制
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面 Student 类的定义来看,外部代码还是可以自由地修改一个实例的 name、score 属性:>>> bart = Student('Bart Simpson', 59)>>> bart.score59>>> bart.score = 99>>> bart.score99如果要让内部属性原创 2021-06-27 16:49:05 · 151 阅读 · 0 评论 -
Python 类和实例
Python 类和实例1. 类和实例简介2. 数据封装1. 类和实例简介面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。仍以Student类为例,在Python中,定义类是通过 class 关键字:class Student(object): passclass 后面紧接着是类名,即 Student,类名通常是大写开头的单词,紧接原创 2021-06-27 16:10:24 · 909 阅读 · 3 评论 -
Python 面向对象编程
面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想。OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递原创 2021-06-27 11:40:37 · 61 阅读 · 0 评论 -
Python 模块
Python 模块1. 模块简介1. 模块简介在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个 .py 文件就称之为一个模块(Module)。使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要原创 2021-06-27 11:17:16 · 80 阅读 · 0 评论 -
Python 偏函数
Python的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:int() 函数可以把字符串转换为整数,当仅传入字符串时,int() 函数默认按十进制转换:>>> int('12345')12345但 int() 函数还提供额外的 base 参数,默认值为 10。如原创 2021-06-25 17:25:27 · 70 阅读 · 0 评论 -
Python 装饰器
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-25函数对象有一个 __name__ 属性,可以拿到函数的名字:>>> now.__name__'now'>>> f.__name__'now'...原创 2021-06-25 16:16:47 · 55 阅读 · 1 评论 -
Python 匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。还是以 map() 函数为例,计算 f(x)=x^2 时,除了定义一个 f(x) 的函数外,还可以直接传入匿名函数:>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))[1, 4, 9, 16, 25, 36, 49, 64, 81]通过对比可以看出,匿名函数 lambda x: x * x 实际原创 2021-06-24 21:12:09 · 66 阅读 · 0 评论 -
python sorted
Python内置的 sorted() 函数可以对 list 进行排序:>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]此外,sorted() 函数也是一个高阶函数,它还可以接收一个 key 函数来实现自定义的排序,例如按绝对值大小排序:>>> sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]key 指定的函数将作用于 list 的每一个原创 2021-06-15 20:18:09 · 72 阅读 · 0 评论 -
python filter
Python内建的 filter() 函数用于过滤序列。和 map() 类似,filter() 也接收一个函数和一个序列。和 map() 不同的是,filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素。例如,在一个 list 中,删掉偶数,只保留奇数,可以这么写:def is_odd(n): return n % 2 == 1list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))#原创 2021-06-15 20:11:21 · 196 阅读 · 0 评论 -
python map/reduce
python map/reduce1. map2. reduce1. mapmap() 函数接收两个参数,一个是函数,一个是 Iterable,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的 Iterator 返回。举例说明,比如我们有一个函数 f(x)=x2,要把这个函数作用在一个 list [1, 2, 3, 4, 5, 6, 7, 8, 9] 上,就可以用 map() 实现如下:现在,我们用Python代码实现:>>> def f(x):...原创 2021-06-15 19:31:34 · 323 阅读 · 5 评论 -
python 高阶函数
python 高阶函数1. 变量可以指向函数2. 函数名也是变量3. 传入函数1. 变量可以指向函数以Python内置的求绝对值的函数 abs() 为例,调用该函数用以下代码:>>> abs(-10)10如果只写 abs :>>> abs<built-in function abs>可见,abs(-10) 是函数调用,而 abs 是函数本身。要获得函数调用结果,我们可以把结果赋值给变量:>>> x = abs(-10)原创 2021-06-15 19:10:45 · 210 阅读 · 4 评论 -
python 迭代器
可以直接作用于 for 循环的数据类型有以下几种:一类是集合数据类型,如 list、tuple、dict、set、str 等;一类是 generator,包括生成器和带 yield 的 generator function。这些可以直接作用于 for 循环的对象统称为可迭代对象:Iterable。可以使用 isinstance() 判断一个对象是否是 Iterable 对象:>>> from collections.abc import Iterable>>>原创 2021-06-15 16:40:55 · 231 阅读 · 4 评论 -
python 生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。要创建一个 generator,有很多种方法。第一种方法很简原创 2021-06-15 16:25:50 · 92 阅读 · 0 评论 -
python 列表生成式
列表生成式即 List Comprehensions,是Python内置的非常简单却强大的可以用来创建 list 的生成式。举个例子,要生成 list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 可以用 list(range(1, 11)):>>> list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]但如果要生成 [1x1, 2x2, 3x3, ..., 10x10] 怎么做?方法一是循环:>>>原创 2021-06-15 15:36:41 · 951 阅读 · 0 评论 -
python 迭代
如果给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如C代码:for (i=0; i<length; i++) { n = list[i];}可以看出,Python的 for 循环抽象程度要高于C的 for 循环,因为Python的 for 循环不仅可以用在 list 或 t原创 2021-06-15 14:54:04 · 765 阅读 · 0 评论 -
python 切片
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']>>>> L[0:3]['Michael', 'Sarah', 'Tracy']L[0:3] 表示,从索引 0 开始取,直到索引 3 为止,但不包括索引 3。即索引 0,1,2,正好是3个元素。如果第一个索引是 0,还可以省略:>>> L[:3]['Michael', 'Sarah', 'Tracy']倒数切片,倒数第一个元素的原创 2021-06-11 11:24:29 · 176 阅读 · 1 评论 -
python 递归函数
python 递归函数1. 定义1. 定义def fact(n): if n==1: return 1 return n * fact(n - 1)>>> fact(1)1>>> fact(5)120使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢转载 2021-06-08 17:32:15 · 157 阅读 · 0 评论 -
python 函数的参数
python 函数的参数1. 默认参数2. 可变参数3. 关键字参数4. 命名关键字参数5. 参数组合1. 默认参数def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return sprint(power(5)) # 25当我们调用 power(5) 时,相当于调用 power(5, 2)。注意:必选参数在前,默认参数在后,否则Python的解释器会报错。def原创 2021-06-07 19:59:05 · 277 阅读 · 0 评论 -
python 定义函数
python 定义函数1. 定义2. 空函数3. 返回多个值1. 定义在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号 :,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。def my_abs(x): if x >= 0: return x else: return -x print(my_abs(-99))请注意,函数体内部的语句在执行时,一旦执行到 retu原创 2021-06-07 11:35:54 · 521 阅读 · 0 评论 -
python 内置函数
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:>>> a = abs # 变量a指向abs函数>>> a(-1) # 所以也可以通过a调用abs函数1python 内置函数:菜鸟教程链接...原创 2021-06-07 11:07:50 · 33 阅读 · 0 评论 -
Python3 List sort()方法
Python3 List sort 方法1. 描述2. 语法3. 参数4. 返回值5. 实例1. 描述sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。2. 语法list.sort( key=None, reverse=False)3. 参数key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse – 排序规则,reverse = True 降序, reverse =原创 2021-06-07 10:36:10 · 261 阅读 · 0 评论 -
python 使用dict和set
python 使用dict和set1. dict2. set1. dictPython内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。>>> d = {'a':90,'b':80,'c':70}>>> d['a']90把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:>>> d['d'] = 60>>>原创 2021-06-07 10:28:08 · 567 阅读 · 0 评论 -
python 循环
python 循环1. for...in2. while3. break4. continue1. for…innames = ['Michael', 'Bob', 'Tracy']for name in names: print(name)运行结果:MichaelBobTracyrange() 函数,可以生成一个整数序列,再通过 list() 函数可以转换为 list。比如 range(5) 生成的序列是从0开始小于5的整数:>>> list(range(5原创 2021-06-07 10:03:39 · 392 阅读 · 0 评论 -
python 条件判断
这里写目录标题1. if else2. 结合 input 使用1. if else age = 3>>> if age >= 18:... print('adult')... elif age >= 6:... print('teenager')... else:... print('kid')注意不要少写了冒号 : 。if 语句执行有个特点,它是从上往下判断,如果在某个判断上是 True,把该判断对应的语句执行后,就忽略掉剩下的原创 2021-06-06 19:58:54 · 123 阅读 · 0 评论 -
python list和tuple
python list和tuple1. list2. tuple3. 学习地址1. listlist:列表,是一种有序的集合,可以随时添加和删除其中的元素。>>> classmate = ['a','b','c']>>> classmate['a', 'b', 'c']>>> len(classmate)3>>> classmate[0]'a'>>> classmate[1]'b'>>原创 2021-06-06 18:14:16 · 742 阅读 · 0 评论 -
python 字符串和编码
字符串和编码1. len 函数2. python 的字符串3. 格式化4. format()5. f-string6. 学习地址1. len 函数要计算 str 包含多少个字符,可以用 len() 函数:>>> len("abcd")4>>> len('函数')22. python 的字符串由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为原创 2021-06-06 16:17:31 · 242 阅读 · 0 评论 -
python 数据类型和变量
1. 整数对于很大的数,例如 10000000000,很难数清楚0的个数。Python允许在数字中间以 _ 分隔,因此,写成 10_000_000_000 和 10000000000 是完全一样的。2. 浮点数对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10^9就是 1.23e9,或者12.3e8,0.000012可以写成 1.2e-5,等等。整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的误差。3.原创 2021-05-25 21:18:02 · 163 阅读 · 2 评论