自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 什么是描述符,Python描述符详解

Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。描述符是 Python 中复杂属性访问的基础,它在内部被用于实现 property、方法、类方法、静态方法和 super 类型。描述符类基于以下 3 个特殊方法,换句话说,这 3 个...

2020-01-12 23:56:29 570

原创 Python类命名空间

前面章节中,已经不只一次提到,所有位于 class 语句中的代码,其实都位于特殊的命名空间中,通常称之为类命名空间。Python中,编写的整个程序默认处于全局命名空间内,而类体则处于类命名空间内。Python 允许在全局范围内放置可执行代码,当 Python 执行该程序时,这些代码就会获得执行的机会。类似地,Python 同样允许在类范围内放置可执行代码,当 Python 执行该类定义肘,这些...

2020-01-12 23:56:22 652 1

原创 Python类调用实例方法

前面讲过,在 Python的类体中定义的方法默认都是实例方法,也示范了通过对象来调用实例方法。但要提醒大家的是,Python 的类在很大程度上可看做是一个独立的空间(称为类命名空间),当程序在类体中定义变量、方法时,与前面介绍的定义变量、定义函数其实并没有太大的不同。对比如下代码:# 定义全局空间的foo函数def foo (): print("全局空间的foo方法")# 全...

2020-01-12 23:56:09 1579

原创 Python实例方法、静态方法和类方法

和类属性可细分为类属性和实例属性一样,类中的方法也可以有更细致的划分,具体可分为类方法、实例方法和静态方法,本节将详细介绍这 3 种类方法的特点和用法。Python类实例方法通常情况下,在类中定义的方法默认都是实例方法。前面章节中,我们已经定义了不只一个实例方法。不仅如此,类的构造方法理论上也属于实例方法,只不过它比较特殊。例如:class Person : #类构造方法,...

2020-01-12 23:55:54 286

原创 Python类变量和实例变量

我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的类命名空间中的函数)。根据定义属性的位置不同,类属性又可细分为类属性(后续用类变量表示)和实例属性(后续用实例变量表示)。类变量(类属性)类变量指的是定义在类中,但在各个类方法外的变量。类变...

2020-01-12 23:55:40 390 1

原创 Python self用法详解

在学习如何定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。例如,定义如下 Dog 类:class Dog: def __init__(self): print("正在执行构造方法") # 定义一个jump()实例方法 def jump(self): print("正在执行...

2020-01-12 23:53:42 409

原创 Python类对象的创建和使用

使用 class 语句只能创建一个类,而无法创建类的对象,因此要想使用已创建好的类,还需要手动创建类的对象,创建类对象的过程又称为类的实例化。对已创建的类进行实例化,其语法格式如下:类名(参数)当创建类时,若没有显式创建 __init()__ 构造方法或者该构造方法中只有一个 self 参数,则创建类对象时的参数可以省略不写。例如,如下代码创建了名为 Python的类,并对其进行了...

2020-01-12 23:53:33 939

原创 Python __init__()类构造方法

在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python解释器都会自动调用它。Python 类中,手动添加构造方法的语法格式如下:def __init__(self,...): 代码块注意,此方法的方法名中,开头和结尾各有 2 个下划线,且...

2020-01-12 23:53:24 1238

原创 Python class:定义类

前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python中使用类的顺序是:先创建(定义)类,然后再创建类的实例对象,通过实例对象实现特定的功能。本节来先学习如何创建一个类。Python 中,创建一个类使用class 关键字实现,其基本语法格式如下:class 类名: 零个到多个类属性... 零个...

2020-01-12 23:53:02 368

原创 什么是面向对象,Python面向对象(一切皆对象)

读者肯定听过 Python中“一切皆对象”的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。面向对象编程(Object-orien...

2020-01-12 23:52:42 381

原创 Python函数递归

在一个函数体内调用它自身,被称为函数递归。函数递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。例如有如下数学题。己知有一个数列:f(0) = 1,f(1) = 4,f(n + 2) = 2*f(n+ 1) +f(n),其中 n 是大于 0 的整数,求 f(10) 的值。这道题可以使用递归来求得。下面程序将定义一个 fn() 函数,用于计算 f(10) 的值。de...

2019-08-19 20:20:13 791

原创 Python函数返回多个值的方法

如果程序需要有多个返回值,则既可将多个值包装成列表之后返回,也可直接返回多个值。如果 Python函数直接返回多个值,Python 会自动将多个返回值封装成元组。如下程序示范了函数直接返回多个值的情形:def sun_adn_avg(list): sum = 0 count = 0 for e in list: if isinstance(e, i...

2019-08-19 20:20:05 35649 1

原创 Python return函数

到目前为止,我们创建的函数都只是对传入的数据进行了处理,处理完了就结束。但实际上,在某些场景中,我们还需函数将处理的结果反馈回来,就好像主管向下级员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。Python 中,用 def 语句创建函数时,可以用return语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出现多...

2019-08-19 20:19:58 7340

原创 Python可变参数

很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数。Python也不例外,在定义函数时也可以使用可变参数。可变参数,又称不定长参数,即传入函数中的实际参数可以是任意多个。Python 定义可变参数,主要有以下 2 种形式。1) 可变参数:形参前添加一个 '*'此种形式的语法格式如下所示:*parameter其中,parameter 表示形参名。这种形式...

2019-08-19 20:19:50 1403 2

原创 Python函数默认参数设置

我们知道,在调用函数时,如果不指定某个参数,解释器会抛出异常。为了解决这个问题,Python允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值,这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。定义带有默认值参数的函数,其语法格式如下:def 函数名(...,形参名=默认值): 代码块注意,在使用此格式定义函数时...

2019-08-19 20:19:43 24242 3

原创 Python函数关键字参数及用法

目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。关键字参数是指使用形式参数的名字来确定输入的参数值。通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可。因此,Python函数的参数名应该具有更好的语义,这样程序可以立刻明...

2019-08-19 20:19:33 797

原创 Python位置参数

位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致。实参和形参数量必须一致在调用函数,指定的实际参数的数量,必须和形式参数的数量一致(传多传少都不行),否则 Python 解释器会抛出 TypeError 异常,并提示缺少必要的位置参数。例如:def girth(width , heigh...

2019-08-19 20:19:27 866

原创 Python函数参数传递机制

Python 中,函数参数由实参传递给形参的过程,是由参数传递机制来控制的。通过学习《Python函数值传递和引用传递》一节我们知道,根据实际参数的类型不同,函数参数的传递方式分为值传递和引用传递(又称为地址传递),本节将对这两种传递机制做深度剖析。Python函数参数的值传递机制所谓值传递,实际上就是将实际参数值的副本(复制品)传入函数,而参数本身不会受到任何影响。值传递的方式,类似...

2019-08-19 20:19:21 184

原创 Python函数值传递和引用传递

通常情况下,定义函数时都会选择有参数的函数形式,函数参数的作用是传递数据给函数,令其对接收的数据做具体的操作处理。在使用函数时,经常会用到形式参数(简称“形参”)和实际参数(简称“实参”),二者都叫参数,之间的区别是:形式参数:在定义函数时,函数名后面括号中的参数就是形式参数,例如:#定义函数时,这里的函数参数 obj 就是形式参数def demo(obj) print(obj...

2019-08-19 20:19:09 3494

原创 Python函数(函数定义、函数调用)用法详解

Python 中,函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() 、print()、range()、len() 函数等等,这些都是 Python 的内置函数,可以直接使用。除了可以直接使用的内置函数外,Python 还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。比如,在程序中定义了一段代码,这段代码用于实现一个特定...

2019-08-19 20:18:42 4068

原创 Python continue的用法

和 break 语句相比,continue 语句的作用则没有那么强大,它只能终止本次循环而继续执行下一次循环。仍然以在操作跑步为例,原计划跑 10 圈,但是当跑到第 2 圈一半的时候,突然接到一个电话,停止了跑步。等挂断电话后,回到起点直接从第 3 圈继续跑。continue 语句的用法和 break 语句一样,只要 while 或 for 语句中的相应位置加入即可。例如:# 一个简单...

2019-08-17 16:50:36 754

原创 Python break用法详解

我们知道,在执行 while 循环或者 for 循环时,只要循环条件满足,程序将会一直执行循环体,不停地转圈。但在某些场景,我们可能希望在循环结束前就手动离开循环,Pyhton提供了 2 种强制离开当前循环体的办法:使用 continue 语句,可以跳过执行本次循环体中剩余的代码,转而执行下一次的循环。 只用 break 语句,可以完全终止当前循环。本节先讲解 break 的用法,con...

2019-08-17 16:50:25 54788 3

原创 Python sorted函数及用法

sorted() 函数与 reversed() 函数类似,该函数接收一个可迭代对象作为参数,返回一个对元素排序的列表。在交互式解释器中测试该函数,可以看到如下运行过程:>>> a = [20, 30, -1.2, 3.5, 90, 3.6]>>> sorted(a)[-1.2, 3.5, 3.6, 20, 30, 90]>>> a...

2019-08-17 16:50:12 1766

原创 Python reversed函数及用法

有些时候,程序需要进行反向遍历,此时可通过 reversed() 函数,该函数可接收各种序列(元组、列表、区间等)参数,然后返回一个“反序排列”的法代器,该函数对参数本身不会产生任何影响。在交互式解释器中,测试该函数的过程如下:>>> a = range(10)>>> [x for x in reversed(a)][9, 8, 7, 6, 5, 4...

2019-08-17 16:50:00 730

原创 Python zip函数及用法

zip() 函数可以把两个列表“压缩”成一个 zip 对象(可迭代对象),这样就可以使用一个循环并行遍历两个列表。为了测试 zip() 函数的功能,我们可以先在交互式解释器中“试验”一下该函数的功能。>>> a = ['a','b','c']>>> b = [1, 2, 3]>>> [x for x in zip(a,b)][('a...

2019-08-17 16:49:50 523

原创 Python集合推导式

Python 中,使用集合推导式可以借助列表、元组、字典、集合以及 range 区间,快速生成符合需求的集合。集合推导式的语法格式和字典推导式完全相同,如下所示:{ 表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] }其中,用 [] 括起来的部分,可以使用,也可以省略。有读者可能会问,集合推导式和字典推导式的格式完全相同,那么给定一个类似的推导式,如何判断是哪种推导式呢...

2019-08-17 16:49:13 2852

原创 Python字典推导式

Python 中,使用字典推导式可以借助列表、元组、字典、集合以及 range 区间,快速生成符合需求的字典。字典推导式的语法格式如下:{表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]}其中,用 [] 括起来的部分,可以使用,也可以省略。可以看到,和其它推导式的语法格式相比,唯一不同在于,字典推导式用的是大括号{}。【例 1】listdemo = ['C语言...

2019-08-17 16:49:00 383

原创 Python元组推导式

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。元组推导式的语法格式如下:(表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] )其中,用 [] 括起来的部分,可以使用,也可以省略。通过和列表推导式做对比,你会发现,除了元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是 [],其它完全相同。不仅如此,元...

2019-08-17 16:14:22 833

原创 Python列表推导式(for表达式)及用法

列表推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。列表推导式的语法格式如下:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]此格式中,[if 条件表达式] 不是必须的,可以使用,也可以省略。通过列表推导式的语法格式,明显会感觉到它和 for 循环存在某些关联。其实,除去 [if 条件表达式] 部分,其余各部分...

2019-08-17 16:14:06 5300 1

原创 Python(for和while)循环嵌套及用法

Python 程序中,如果把一个循环放在另一个循环体内,那么就可以形成循环嵌套。循环嵌套既可以是 for 循环嵌套 while 循环,也可以是 while 循环嵌套 for 循环,即各种类型的循环都可以作为外层循环,各种类型的循环也都可以作为内层循环。当程序遇到循环嵌套时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行(只是内层循环需要反复执行自己的...

2019-08-17 16:13:46 3100

原创 Python循环结构中else用法(入门必读)

Python 中,无论是 while 循环还是 for 循环,其后都可以紧跟着一个 else 代码块,它的作用是,当循环条件为 False 跳出循环时,程序会最先执行 else 代码块中的代码。如下代码示范了为 while 循环定义 else 代码块:count_i = 0while count_i < 5: print('count_i小于5: ', count_i) ...

2019-08-14 18:42:59 536

原创 Python for循环及用法详解

Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串、列表、元组、字典、集合等序列类型,逐个获取序列中的各个元素。for 循环的语法格式如下:for 迭代变量 in 字符串|列表|元组|字典|集合: 代码块格式中,迭代变量用于存放从序列类型变量中读取出来的元素...

2019-08-14 18:42:48 2134

原创 Python while循环语句详解

Python 中,while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。while 语句的语法格式如下:while 条件表达式: 代码块这里的代码块,还是指的缩进格式相同的多行代码,不过在循环结构中,它又称为循环体。while 语句执行的具体流程为:首先判断条件表达式...

2019-08-14 18:42:38 1871

原创 Python assert断言函数及用法

assert 断言语句和 if 分支有点类似,它用于对一个 bool 表达式进行断言,如果该 bool 表达式为 True,该程序可以继续向下执行;否则程序会引发 AssertionError 错误。有读者可能会问,明明 assert 会令程序崩溃,为什么还要使用它呢?这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃。通常,assert 语句用在检查函数参数的属性(是参...

2019-08-14 18:42:25 299

原创 Python pass语句及其作用

很多程序都提供了“空语句”支持,Python也不例外,Python 的pass 语句就是空语句。有时候程序需要占一个位、放一条语句,但又不希望这条语句做任何事情,此时就可通过 pass 语句来实现。通过使用 pass 语句,可以让程序更完整。如下程序示范了 pass 作为空语句的用法:s = input("请输入一个整数: ")s = int(s)if s > 5: ...

2019-08-14 18:42:13 180

原创 Python if语句嵌套(入门必读)

前面章节中,详细介绍了 3 种形式的条件语句,即 if、if else 和 if elif else,这 3 种条件语句之间可以相互嵌套。例如,在最简单的 if 语句中嵌套 if else 语句,形式如下:if 表达式 1: if 表示式 2: 代码块 1 else: 代码块 2再比如,在 if else 语句中嵌套 if else 语句...

2019-08-14 18:42:01 1308

原创 Python if else语句用法规范(注意事项)

在使用 if elif else 条件语句时,需要初学者根据实际应用场景,自行设计表达式和代码块,而在这两部分中,有些细节需要初学者注意。1) 代码块不要忘记缩进代码块一定要缩进,否则就不是代码块。例如如下程序:s_age = input("请输入您的年龄:")age = int(s_age)if age > 20 :print("年龄已经大于20岁了")上面程序的 ...

2019-08-14 18:41:49 35267 2

原创 Python if else条件语句详解

在前面章节的学习,我们所接触到的程序,都只是从第一行代码开始逐条执行,但这远远不能满足开发的需求,因为在很多场景中,我们需要选择性地执行一部分语句。比如说,编程实现“只有当用户输入用户名和密码正确时,才能成功登陆系统;反之则登陆失败,无法进入系统”,要实现这样地功能,只凭借前面所学的知识是做不到的,需要使用本节所讲的选择(条件)语句才能实现。Python 中,选择(条件)语句可细分为 3 种...

2019-08-14 18:41:38 419

原创 Python frozenset集合(set集合的不可变版本)

frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。在交互式解释器中输入 dir(frozenset) 命令来查看 frozenset 集合的全部方法,可以看到如下输出结果:>&g...

2019-08-14 18:40:53 267

原创 Python set集合方法详解(全)

前面学习了 set 集合,本节来一一学习 set 类型提供的方法。首先,通过 dir(set) 命令可以查看它有哪些方法:>>> dir(set)['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isd...

2019-08-14 18:40:43 856

空空如也

空空如也

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

TA关注的人

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