-
python第一天 - dict
所属栏目:[Python] 日期:2020-12-20 热度:64
dict key-value集合。 1 d = { 2 ' 1 ' : a ' , 3 2 b 4 3 c ' 5 } (一)、获取集合长度:len(d) = 3 (二)、获取值: 方式一:d[key];例:d['1'] = 'a' 如果key不存在会报错keyError,可以用 if '1' in d: print (d['1']) 方式二: d.get(key)方法,当key不存在[详细]
-
Python第一天 - 迭代
所属栏目:[Python] 日期:2020-12-20 热度:193
(一)索引迭代 Python中, 迭代永远是取出元素本身,而非元素的索引。 如果要取索引可以用 enumerate()函数 例: L = [ ' Adam ' , Lisa Bart Paul ' ] for index,name in enumerate(L): print index,1)">- 结果: 0 - Adam1 - Lisa2 - Bart3 - Paul 使用 e[详细]
-
python第二天 - 异常处理
所属栏目:[Python] 日期:2020-12-20 热度:115
简单罗列一下知识点: 一、基本写法 try: html = _respose.read().decode('utf-8') except Exception as e: ?? ? pass 捕获多个异常 try : x = int(input( ' input x: ' )) y = int(input( input y: )) print ( x/y = ' ,x/ y) except ZeroDivisionError: #[详细]
-
Python第一天 - 函数
所属栏目:[Python] 日期:2020-12-20 热度:168
---恢复内容开始--- (一)定义一个函数 def 函数名(参数): 函数体 return 返回值 例: def mySum(x,y): return int(x)+int(y) print(mySum(1,2)) 如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。也可以写成return (二)python函数[详细]
-
python单线程爬虫code
所属栏目:[Python] 日期:2020-12-20 热度:198
广度优先算法: # -*- coding: utf-8 -*- import urllib urllib.request from bs4 BeautifulSoup threadingmylock = threading.RLock() class Crawler: unVisitUrl = set() visitedUrl = [] def getHtml(self,url): html = '' req = urllib.request.Request([详细]
-
linux五种IO模型与事件驱动模型
所属栏目:[Python] 日期:2020-12-20 热度:188
前言 Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO)。 同步:调用端会一直等待服务端响应,直到返回结果。 异步:调用端发起调用之后不会立刻返回,不会等待服务端响应。服务端通过通知机制[详细]
-
I/O模型实际应用与协程
所属栏目:[Python] 日期:2020-12-20 热度:128
前言 本章主要针对上一章节中的I/O模型做一些代码性的练习,尽管可能很少用到。但是你应当知道这些东西。还是具体结合上一篇的理论知识来看吧。最后将协程放在了扩展篇中,因为感觉目前能接触到的很多都是I/O多路复用+异步。协程属实不太常见,可能我层次低[详细]
-
threading多线程模块
所属栏目:[Python] 日期:2020-12-20 热度:180
基本使用 Python中提供了 threading 模块用来实现线程并发编程,使用方法有两种,一种是将 threading 模块下的 Therad 类进行实例化的方式实现,一种是通过继承 threading 模块下的 Therad 类并覆写 run() 方法实现。 官方中文文档 实例化Therad类创建子线程[详细]
-
Python线程池与进程池
所属栏目:[Python] 日期:2020-12-20 热度:58
前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力。因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十分头痛。所以这边要告诉你一个好消息,前面的所有学习的知识点其实都是为[详细]
-
multiprocessing多进程模块
所属栏目:[Python] 日期:2020-12-20 热度:68
前言 其实 multiprocessing 模块与 threading 模块的接口都非常相似,但是有一些地方有一些细微差别。所以本文是基于前面的 threading 模块的一些知识对 multiprocessing 模块进行讲解的。 他们的主要区别有以下几点 1.创建子进程的方式针对不同平台有着差异[详细]
-
线程队列数据共享与生产者消费者模型
所属栏目:[Python] 日期:2020-12-20 热度:148
queue模块简介 queue 模块提供了多种队列,那么它主要是用于多线程编程中的数据共享。 我们都知道同一进程下的数据是能被多个线程共享的,那么为什么这些线程在同一进程下还去使用队列呢? 因为队列是: 管道 + 锁 所以使用队列来存放多个线程中用于共享的数[详细]
-
Python并发编程理论篇
所属栏目:[Python] 日期:2020-12-20 热度:158
前言 其实关于Python的并发编程是比较难写的一章,因为涉及到的知识很复杂并且理论偏多,所以在这里我尽量的用一些非常简明的语言来尽可能的将它描述清楚,在学习之前首先要记住一个点: 并发编程永远的宗旨就是提高程序的运行效率,也是围绕CPU来进行优化的[详细]
-
threading.local()使用与原理剖析
所属栏目:[Python] 日期:2020-12-20 热度:76
前言 还是第一次摘出某个方法来专门写一篇随笔,哈哈哈。 为什么要写这个方法呢?因为它确实太重要了,包括后期的 Flask 框架源码中都有它的影子。 那么我们就来瞄一眼这个东西是啥吧。 作用 在Python官方中文文档中(Python3.8.4),对它的介绍其实并不是很[详细]
-
Python中的线程锁
所属栏目:[Python] 日期:2020-12-20 热度:172
前言 本章节继续探讨 threading 模块下关于锁的应用,注意。这一期很重要,依然是围绕着理论篇来讲,这一章节主要围绕理论篇中的线程切换做讲解,因此一定要有一些线程切换方面的知识。 官方中文文档 线程安全 线程安全是多线程编程时的计算机程序代码中的一[详细]
-
底层剖析Python深浅拷贝
所属栏目:[Python] 日期:2020-12-20 热度:156
拷贝的用途 拷贝就是 copy ,目的在于复制出一份一模一样的数据。使用相同的算法对于产生的数据有多种截然不同的用途时就可以使用 copy 技术,将 copy 出的各种副本去做各种不同的操作。 值得一提的是绝大部分编程语言中对于 copy 都有深浅拷贝的概念,所以[详细]
-
Python三大器之生成器
所属栏目:[Python] 日期:2020-12-20 热度:159
生成器初识 什么是生成器 生成器本身属于迭代器。继承了迭代器的特性,惰性求值,占用内存空间极[详细]
-
Python初识函数
所属栏目:[Python] 日期:2020-12-20 热度:53
函数理论篇 什么是函数 在编程语言中的函数不同于数学中的函数。不管是数学上的函数还是编程语言中的函数都是为了完成特定的某一功能而诞生的,他们的区别在于: 1.数学中的函数当输入的值是固定的情况下那么输出的值也一定是固定的。它内部不允许原本输入的[详细]
-
详解Python垃圾回收机制
所属栏目:[Python] 日期:2020-12-20 热度:90
引入 为什么要有垃圾回收机制 Python中的垃圾回收机制简称( GC ),我们在程序的运行中会产生大量的变量用于保存数据,而有时候有些变量已经没有用了就需要被清理释放掉该变量所占据的内存空间。在一些较为低级的语言中(比如:C语言,汇编语言)对于内存空[详细]
-
Python三大器之装饰器
所属栏目:[Python] 日期:2020-12-20 热度:113
开放封闭原则 一个良好的项目必定是遵守了开放封闭原则的,就比如一段好的Python代码必定是遵循 PEP8 规范一样。那么什么是开放封闭原则?具体表现在那些点? 开放封闭原则的核心的思想是软件实体是可扩展,而不可修改的。 也就是说,对扩展是开放的,而对修[详细]
-
Python学习之准备工作
所属栏目:[Python] 日期:2020-12-20 热度:92
编程语言历史 在计算机硬件基础中我们大概介绍了一下计算机的发展历史。了解到在曾经有一段时期里计算机是不存在操作系统这一概念的,所有需要计算机完成的操作都需要当时的程序员来与计算机底层硬件进行直接对话,对话的方式就是通过二进制, 故最早的编程[详细]
-
函数高阶应用与闭包
所属栏目:[Python] 日期:2020-12-20 热度:117
函数对象 将函数看做一个对象可以做以下的事情: 1.可以赋值 2.可以把函数当做参数传入另一个函数 3.可以将内层函数当做外层函数的返回值 4.可以将函数当做容器类型中的一个元素 # ==== 可以赋值 ==== def func(): print ( " function func... " ) func是指[详细]
-
Python分支结构与流程控制
所属栏目:[Python] 日期:2020-12-20 热度:171
分支结构 if 语句 分支结构在任何编程语言中都是至关重要的一环,它最主要的目的是让计算机拥有像人一样的思想,能在不同的情况下做出不同的应对方案 ,所以 if 语句不管是在什么时候都是会大量去使用的。我们先来看一下 if 语句的语法和使用。 # ==== if 的[详细]
-
命名空间与作用域
所属栏目:[Python] 日期:2020-12-20 热度:150
Python之禅 Python之禅中记录了我们使用Python时应该遵循的一些原则。在交互式环境下使用 import this 即可看到我们用Python编写代码时应当遵循的核心思想点。Python之禅并非Python的创始人所写,但是Tim Peters所总结的这十几条理念依然被Python官方所认可[详细]
-
字符编码与头文件
所属栏目:[Python] 日期:2020-12-20 热度:114
字符编码发展史 字符编码的作用 我们都知道,计算机内部是由二进制组成。我们人类如果想要与计算机进行交流和沟通,就必须有一个将人类语言翻译为计算机语言的过程。 那么字符编码就可以认为是一本词典一样,它详细的记载了人类语言与计算机语言之间的关系[详细]
-
Python三大器之迭代器
所属栏目:[Python] 日期:2020-12-20 热度:133
迭代器协议 迭代器协议规定:对象内部必须提供一个 __next__ 方法,对其执行该方法要么返回迭代器中的下一项(可以暂时理解为下一个元素),要么就引起一个 Stopiteration 异常以终止迭代。(当所有元素被取干净后其实内部就会自动触发 Stopiteration ) 可[详细]
