自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小董老师的博客

专职青少年编程

  • 博客(117)
  • 收藏
  • 关注

原创 python包中__init__.py文件的作用

Python包中__init__.py作用在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下:Pycharm下的package树结构:在Finder中的目录结构:从Finder中的目录就可以看出来,每个package实际上是一个目录(Directory),那么IDE是怎么识别它为package呢?没错,__init__.py的第一个作用就是package的标识,如果没有该文件,该目录就不会认为是package。Py

2021-07-06 22:32:16 728 11

原创 第48课 装饰器

二 装饰器1 装饰器的原型import timedef showtime(func): def wrapper(): start_time = time.time() func() end_time = time.time() print('spend is {}'.format(end_time - start_time)) return wrapperdef foo(): print('foo..')

2021-04-23 16:04:16 200 1

原创 第47课 闭包

python 闭包,装饰器一 闭包如果在一个函数的内部定义了另一个函数,外部的函数叫它外函数,内部的函数叫它内函数。1 闭包条件在一个外函数中定义了一个内函数。内函数里运用了外函数的临时变量。并且外函数的返回值是内函数的引用。一般情况下,如果一个函数结束,函数的内部所有东西都会释放掉,还给内存,局部变量都会消失。但是闭包是一种特殊情况,如果外函数在结束的时候发现有自己的临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。先来看一段代码 # 闭包函数的实例

2021-04-23 15:46:38 188

原创 Jupyter Notebook 入门

文章:点击跳转

2021-04-08 16:48:26 119

原创 logging模块

原文:点击跳转到文章

2021-04-08 16:36:31 69

原创 datetime模块

链接:https://www.cnblogs.com/awakenedy/articles/9182036.html

2021-04-08 16:16:40 61

原创 第 46课 自定义包的编写、打包、发布、和用pip安装全流程、工作原理

自定义包的编写、打包、发布、和用pip安装全流程、工作原理第一步:搭建你的模块目录结构C:User/Desktop/20210407.│ │├─DongshaobingDemo_pkg │ stack.py │ test.py │ clock.py │ __init__.py├─setup.py特别注意:setup.py文件要与自定义模块在同一级父目录stack.py文件内容:class StackException(Exception)

2021-04-07 22:56:47 289

原创 windows常用dos命令

windows常用命令1.打开命令行方法打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口…也可以通过cmd /c 命令 和 cmd /k 命令的方式来直接运行命令注:/c表示执行完命令后关闭cmd窗口;/k表示执行完命令后保留cmd窗口控制台命令窗口中一些技巧复制内容:右键弹出快捷菜单,选择“标记(K)”,然后选中所需复制的内容,然后右键即可.粘贴内容:右键弹出快捷菜单,选择“粘贴§”.在文件夹空白处按住Shift,然后右键弹出快捷菜单,可以看到“在此处打开

2021-03-06 12:50:46 468

原创 5.4 Python split()方法详解:分割字符串

Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。注意,这里所说的方法,指的是字符串类型 str 本身所提供的,由于涉及到类和对象的知识,初学者不必深究,只需要知道方法的具体用法即可。从本节开始,将给大家介绍一些常用的字符串类型方法,本节先介绍分割字符串的 split() 方法。split() 方法可以实现将一个字符串按照指定的分隔符切分成多个子串,这些子串会被保存到列表中(不包含分隔符),作为方法的返回值

2021-02-17 20:18:31 1061 2

原创 5.3 Python len()函数详解:获取字符串长度或字节数

Python 中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。len 函数的基本语法格式为:len(string)其中 string 用于指定要进行长度统计的字符串。例如,定义一个字符串,内容为“http://www.baidu.com”,然后用 len() 函数计算该字符串的长度,执行代码如下:>>> a=‘http://www.baidu.com’>>> len(a)22在实际开发中,除了常常

2021-02-17 20:08:36 872

原创 5.2 Python截取字符串(字符串切片)方法详解

从本质上讲,字符串是由多个字符构成的,字符之间是有顺序的,这个顺序号就称为索引(index)。Python 允许通过索引来操作字符串中的单个或者多个字符,比如获取指定索引处的字符,返回指定字符的索引值等。获取单个字符知道字符串名字以后,在方括号[ ]中使用索引即可访问对应的字符,具体的语法格式为:strname[index]strname 表示字符串名字,index 表示索引值。Python 允许从字符串的两端使用索引:当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串

2021-02-17 20:05:58 786

原创 5.1 Python字符串拼接(包含字符串拼接数字)

在 Python 中拼接(连接)字符串很简单,可以直接将两个字符串紧挨着写在一起,具体格式为:strname = “str1” “str2”strname 表示拼接以后的字符串变量名,str1 和 str2 是要拼接的字符串内容。使用这种写法,Python 会自动将两个字符串拼接在一起。【示例】以连续书写的形式拼接字符串:str1 = "Python教程" "http://c.biancheng.net/python/"print(str1)str2 = "Java" "Python" "C++

2021-02-17 20:03:15 2586 1

原创 4.22 Python深拷贝和浅拷贝详解

对于浅拷贝(shallow copy)和深度拷贝(deep copy),本节并不打算一上来抛出它们的概念,而是先从它们的操作方法说起,通过代码来理解两者的不同。Python浅拷贝常见的浅拷贝的方法,是使用数据类型本身的构造器,比如下面两个例子:list1 = [1, 2, 3]list2 = list(list1)print(list2)print("list1==list2 ?",list1==list2)print("list1 is list2 ?",list1 is list2)se

2021-02-13 21:14:52 245

原创 4.21 深入底层了解Python字典和集合,一眼看穿他们的本质!

字典和集合是进行过性能高度优化的数据结构,特别是对于查找、添加和删除操作。本节将结合实例介绍它们在具体场景下的性能表现,以及与列表等其他数据结构的对比。例如,有一个存储产品信息(产品 ID、名称和价格)的列表,现在的需求是,借助某件产品的ID找出其价格。则实现代码如下:def find_product_price(products, product_id): for id, price in products: if id == product_id: return price

2021-02-13 21:14:36 458 1

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

set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。我们可以在交互式编程环境中输入dir(frozenset)来查看 frozenset 集合支持的方法:>>> dir(frozenset)['copy', 'difference

2021-02-13 21:14:15 321 1

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

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

2021-02-13 21:13:58 665 1

原创 4.18 Python set集合基本操作(添加、删除、交集、并集、差集)

Python set 集合最常用的操作是向集合中添加、删除元素,以及集合之间做交集、并集、差集等运算,本节将一一讲解这些操作的具体实现。向 set 集合中添加元素set 集合中添加元素,可以使用 set 类型提供的 add() 方法实现,该方法的语法格式为:setname.add(element)其中,setname 表示要添加元素的集合,element 表示要添加的元素内容。需要注意的是,使用 add() 方法添加的元素,只能是数字、字符串、元组或者布尔类型(True 和 False)值,不能

2021-02-12 20:14:18 533 1

原创 4.17 Python set集合详解

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间用“,”分隔,如下所示:{element1,element2,...,elementn}其中,elementn 表示集合中的元素,个数没有限制。从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出

2021-02-12 20:13:59 202 1

原创 4.16 Python使用字典格式化字符串

在《Python格式化输出》一节中,我们介绍了如何使用 print() 格式化输出各种类型的数据。我们知道,如果格式化字符串的模板中包含了多个转换说明符,后面就得按照顺序给出多个对应的变量;当字符串模板中只包含少量转换说明符时,这种写法还是比较合适的,但如果字符串模板中包含大量转换说明符,这种按顺序提供变量的方式就有些麻烦了。这时,就可以使用字典对字符串进行格式化输出,具体方法是:在字符串模板中按 key 指定变量,然后通过字典为字符串模板中的 key 设置值。请看下面的代码:# 字符串模板中使用ke

2021-02-12 20:13:40 634

原创 4.15 Python dict字典方法完全攻略(全)

我们知道,Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法,例如:>>> dir(dict)['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']这些方法中,fromkeys() 和 get() 的用法已在《Python字典》中进行了介绍,这里不再赘述,本节只给大家介绍剩下的方法

2021-02-12 20:13:15 370

原创 4.14 Python dict字典基本操作(包括添加、修改、删除键值对)

由于字典属于可变序列,所以我们可以任意操作字典中的键值对(key-value)。Python 中,常见的字典操作有以下几种:向现有字典中添加新的键值对。修改现有字典中的键值对。从现有字典中删除指定的键值对。判断现有字典中是否存在指定的键值对。初学者要牢记,字典是由一个一个的 key-value 构成的,key 是找到数据的关键,Python 对字典的操作都是通过 key 来完成的。Python字典添加键值对为字典添加新的键值对很简单,直接给不存在的 key 赋值即可,具体语法格式如下:d

2021-02-12 20:12:51 382

原创 4.13 Python dict字典详解

Python 字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素。如图 1 所示。图 1 映射关系示意图字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为“键值对”。

2021-02-12 20:12:26 214 1

原创 4.12 Python列表和元组的底层实现

有关列表(list)和元组(tuple)的底层实现,本节分别从它们的源码来进行分析。首先来分析 list 列表,它的具体结构如下所示:/* List object interface *//*Another generally useful object type is a list of object pointers.This is a mutable type: the list items can be changed, and items can beadded or removed.

2021-02-12 20:12:06 455

原创 4.11 Python元组和列表的区别

元组和列表同属序列类型,且都可以按照特定顺序存放一组数据,数据类型不受限制,只要是 Python 支持的数据类型就可以。那么,元组和列表有哪些区别呢?元组和列表最大的区别就是,列表中的元素可以进行任意修改,就好比是用铅笔在纸上写的字,写错了还可以擦除重写;而元组中的元素无法修改,除非将元组整体替换掉,就好比是用圆珠笔写的字,写了就擦不掉了,除非换一张纸。可以理解为,tuple 元组是一个只读版本的 list 列表。需要注意的是,这样的差异势必会影响两者的存储方式,我们来直接看下面的例子:>

2021-02-12 20:11:17 455

原创 4.10 Python tuple元组详解

元组(tuple)是 Python 中另一个重要的序列结构,和列表类似,元组也是由一系列按特定顺序排序的元素组成。元组和列表(list)的不同之处在于:列表的元素是可以更改的,包括修改元素值,删除和插入元素,所以列表是可变序列;而元组一旦被创建,它的元素就不可更改了,所以元组是不可变序列。元组也可以看做是不可变的列表,通常情况下,元组用于保存无需修改的内容。从形式上看,元组的所有元素都放在一对小括号( )中,相邻元素之间用逗号,分隔,如下所示:(element1, element2, ...

2021-02-12 20:10:59 636 3

原创 4.9 Python list列表实现栈和队列

队列和栈是两种数据结构,其内部都是按照固定顺序来存放变量的,二者的区别在于对数据的存取顺序:队列是,先存入的数据最先取出,即“先进先出”。栈是,最后存入的数据最先取出,即“后进先出”。考虑到 list 类型数据本身的存放就是有顺序的,而且内部元素又可以是各不相同的类型,非常适合用于队列和栈的实现。本节将演示如何使用 list 类型变量来实现队列和栈。Python list实现队列使用 list 列表模拟队列功能的实现方法是,定义一个 list 变量,存入数据时使用 insert() 方法,设置

2021-02-12 20:10:41 594 2

原创 4.8 Python range()快速初始化数字列表

实际场景中,经常需要存储一组数字。例如在游戏中,需要跟踪每个角色的位置,还可能需要跟踪玩家的几个最高得分。在数据可视化中,处理的几乎都是由数字(如温度、距离、人口数量、经度和纬度等)组成的集合。列表非常适合用于存储数字集合,并且 Python 提供了 range() 函数,可帮助我们高效地处理数字列表,即便列表需要包含数百万个元素,也可以快速实现。Python range() 函数能够轻松地生成一系列的数字。例如,可以像如下这样使用 range() 来打印一系列数字:for value in rang

2021-02-12 20:10:24 1207 3

原创 4.7 Python list列表使用技巧及注意事项

前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remove()、pop() 和 del 关键字。本节将通过实例演示的方式来明确各个函数的用法,以及某些函数之间的区别和在使用时的一些注意事项。Python list添加元素的方法及区别定义两个列表(分别是 list1 和 list3),并分别使用 +、extend()、append() 对这两个

2021-02-12 20:10:07 590

原创 4.6 Python list列表查找元素

Python 列表(list)提供了 index() 和 count() 方法,它们都可以用来查找元素。index() 方法index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下。index() 的语法格式为:listname.index(obj, start, end)其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束

2021-02-12 20:09:48 4447

原创 4.5 Python list列表修改元素

Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。修改单个元素修改单个元素非常简单,直接对元素赋值即可。请看下面的例子:nums = [40, 36, 89, 2, 36, 100, 7]nums[2] = -26#使用正数索引nums[-3] = -66.2#使用负数索引print(nums)运行结果:[40, 36, -26, 2, -66.2, 100, 7]使用索引得到列表元素后,通过=赋值就改变了元素的值。修

2021-02-12 20:09:28 394

原创 4.4 Python list列表删除元素(4种方法

在 Python 列表中删除元素主要分为以下 3 种场景:根据目标元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;将列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。del:根据索引值删除元素del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素。我们已经在《Python列表》中讲解了如何删除整个列

2021-02-12 20:09:02 2420

原创 4.3 Python list列表添加元素的3种方法

实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。《Python序列》一节告诉我们,使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。请看下面的演示:language = ["Python", "C++", "Java"]birthday = [1991, 1998, 1995]info = language + birthdaypri

2021-02-12 20:08:32 200

原创 4.2 Python list列表详解

在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。说到这里,一些读者可能听说过数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。需要明确的是,Python 中没有数组,但是加入了更加强大的列表。如果把数组看做是一个集装箱,那么 Python 的列表就是一个工厂的仓库。大部分编程语言都支持数组,比如C语言、C++、Java、PHP、JavaScript 等。从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,

2021-02-12 20:08:15 346 1

原创 4.1 什么是序列,Python序列详解(包括序列类型和常用操作)

所谓序列,指的是一块可存放多个值的连续内存空间,这些值按一定顺序排列,可通过每个值所在位置的编号(称为索引)访问它们。为了更形象的认识序列,可以将它看做是一家旅店,那么店中的每个房间就如同序列存储数据的一个个内存空间,每个房间所特有的房间号就相当于索引值。也就是说,通过房间号(索引)我们可以找到这家旅店(序列)中的每个房间(内存空间)。在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列支持以下几种通用的操作,但比较特殊的是,集合和字典不支持索引、切片、相加和相乘操作。字符串也是

2021-02-12 20:07:57 425

原创 3.22 Python运算符优先级和结合性一览表

优先级和结合性是 Python 表达式中比较重要的两个概念,它们决定了先执行表达式中的哪一部分。Python 运算符优先级所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。例如对于表达式a + b * c,Python 会先计算乘法再计算加法;b * c的结果为 8,a + 8的结果为 24,所以 d 最终的值也是 24。先计算*再计算+,说明*的优先级高于+。Python 支持几十种运算符,被划分成将近二十个优先级,有的运算符优先级不同,有的运算符优先级相同,请看下表。

2021-02-12 20:07:40 638

原创 3.21 Python三目运算符(三元运算符)用法详解

我们从一个具体的例子切入本节内容。假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:if a>b: max = a;else: max = b;但是 Python 提供了一种更加简洁的写法,如下所示:max = a if a>b else b这是一种类似于其它编程语言中三目运算符? :的写法。Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。使用

2021-02-12 20:07:08 699 1

原创 3.20 Python逻辑运算符及其用法

高中数学中我们就学过逻辑运算,例如 p 为真命题,q 为假命题,那么“p且q”为假,“p或q”为真,“非q”为真。Python 也有类似的逻辑运算,请看下表:逻辑运算符含义基本格式说明and逻辑与运算,等价于数学中的“且”a and b当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。or逻辑或运算,等价于数学中的“或”a or b当 a 和 b 两个表达式都为假时,a or b 的结果才是假,否则为真。not逻辑非运算,等价于数

2021-02-10 10:44:20 298

原创 3.19 Python比较运算符(关系运算符)

比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假)。True 和 False 都是 bool 类型,它们专门用来表示一件事情的真假,或者一个表达式是否成立,我们将在《Python bool布尔类型》中详细讲解。Python 支持的比较运算符如表 1 所示。比较运算符说明>大于,如果>前面的值大于后面的值,则返回 True,否则返回 False。<小于,如果&l

2021-02-10 10:42:34 780 1

原创 3.18 Python位运算符详解

Python 位运算按照数据在内存中的二进制位(Bit)进行操作,它一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web 开发、Linux 运维等)中并不常见。想加快学习进度,或者不关注底层开发的读者可以先跳过本节,以后需要的话再来学习。Python 位运算符只能用来操作整数类型,它按照整数在内存中的二进制形式进行计算。Python 支持的位运算符如表 1 所示。位运算符说明使用形式举 例&按位与a & b4 & 5|

2021-02-10 10:41:13 249 1

原创 3.17 Python赋值运算符(入门必读)

赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等。Python 中最基本的赋值运算符是等号=;结合其它运算符,=还能扩展出更强大的赋值运算符。基本赋值运算符=是 Python 中最常见、最基本的赋值运算符,用来将一个表达式的值赋给另一个变量,请看下面的例子:#将字面量(直接量)赋值给变量n1 = 100f1 = 47.5s1 = "http://www.baidu.com/pytho

2021-02-10 10:38:13 335 1

空空如也

空空如也

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

TA关注的人

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