![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
Q z1997
这个作者很懒,什么都没留下…
展开
-
Python: 迭代器 生成器 协程 异步I/O(asyncio)
迭代器和生成器迭代器概念上: 迭代器可以用来表示一个数据流, 提供了数据的惰性返回功能(只有我们主动去使用next方法调用, 才会返回值).实现上: 实现了__next__接口的对象传统声明一个列表, 里面的元素会立即写进内存当中, 占用大量内存.迭代器可以一次只返回一个元素, 占用内存非常小, 在读取大文件和大的数据集合的时候特别有用通过iter方法返回一个迭代器对象# 两者实现的功能是一摸一样的l = list(range(10**7))l2 = iter(range(10原创 2022-05-27 17:31:27 · 313 阅读 · 0 评论 -
Python:进程通讯和线程通讯
进程间通信(IPC)文件通过读写文件来进行变量, 数据, 信息的传递读写冲突两个进程同时进行写, 或者一个写一个读, 造成了冲突.解决读写冲突互斥锁from multiprocessing import Process, Lockdef save_to_file(index, lock): with lock: with open("test.log", "a", encoding="utf-8") as f: f.wri原创 2022-05-27 17:29:42 · 282 阅读 · 0 评论 -
Python: 全局解释器锁(GIL)
计算密集型主要占用cpu资源IO密集型IO就是input output, 需要等待的一些任务网络请求会有网络延迟和数据库交互需要等待数据库查询事件读写硬盘多进程在处理计算密集型程序的时候比多线程块由于全局解释器锁的存在, 一个进程下, 只允许一个线程执行Python程序的字节码(当前代码文件的二进制表示).简单地说, 创建的10个线程其实在争夺一个cpu资源. 但是遇到io操作会让渡cpu资源.如何绕过GIL?将多线程方法改为多进程将计算密集型任务转移给C扩展..原创 2022-05-27 17:27:57 · 60 阅读 · 0 评论 -
Python: 多线程和多进程
什么是进程?什么是线程?进程: 可以简单地认为是一个程序. 进程是操作系统分配资源的最小单位.线程: 一个进程可以有多个线程, 每个线程可以独立完成一些任务. 线程是操作系统进行运算调度的最小单位.多线程demofrom threading import Thread for i in range(10): # 只是创建了线程对象 t = Thread(target=request_baidu) # 启动线程 t.start()多进程dem..原创 2022-05-27 17:27:24 · 92 阅读 · 0 评论 -
Python: requests模块的介绍
requests模块的介绍requests的作用通过python来模拟请求网址一个模拟请求由以下四个部分组成urlmethodbodyheaders模拟请求百度 没有安装requests库的同学, 在当前python环境下执行以下语句安装第三方库 pip install requestsimport requestsdef request_baidu(): url = "https://www.baidu.com/" # body = ""原创 2022-05-27 17:26:50 · 76 阅读 · 0 评论 -
Python基础-闭包和装饰器
闭包和装饰器闭包闭包指延申了作用域的函数, 也就是作用域中的Enclosed的概念def make_averager(): series = [] def averager(value): series.append(value) total = sum(series) return total / len(series) return averager# my_avg就是延申了作用域的函数# series就是被延申作用原创 2022-05-05 09:42:20 · 115 阅读 · 0 评论 -
Python基础-面向对象
类的创建, 实例化, 初始化什么是类类就是拥有相同功能或者相同属性的对象集合类的创建object是所有类的基类class GoGamer(object): subject = 'go'print(GoGamer)类的实例化实例就是抽象概念的具象化kejie = GoGamer()print(kejie)类的初始化类创建一个新实例的时候会默认调用__init__这样一个特殊方法class GoGamer(object): subject原创 2022-05-05 09:41:55 · 74 阅读 · 0 评论 -
Python基础-导入第三方模块
导入第三方模块导包的层级关系模块(module)以文件为载体, 包含各类对象包(package)以文件夹为载体, 包含了各类模块库(lib)包含了各类包import 库from 库/模块 import 模块/函数导包的命名冲突通过as这个关键词来给当前模块/函数取个别名from datetime import datetime as p_datetime时间模块time调用的都是系统级的接口, 提供时间的访问和转换的功能查看时间获原创 2022-05-05 09:42:07 · 371 阅读 · 0 评论 -
Python基础-作用域
作用域程序创建, 访问, 改变一个变量时, 都是在一个保存该变量的空间内进行, 这个空间被称为命名空间, 即作用域Built-in 内置可以在Python环境中的任何模块, 任意位置访问和调用Global 全局变量只作用于当前模块(可以理解为当前文件)可以简单地理解为定以在函数外的变量就是全局变量, 如果在函数体定义那就时局部变量.如何将局部变量变成全局变量?使用global关键字a = 1def foo(): global a a = 2原创 2022-05-05 09:43:12 · 56 阅读 · 0 评论 -
Python基础-函数高级
重新认识函数内置函数认识Python自带的, 可全局调用的函数, 避免我们命名冲突导致了函数性状发生改变查看Python携带的内置函数from pprint import pprint# 格式化输出的库pprint(dir(__builtins__))常见的内置函数str>>> str(1.0)'1.0'int>>> int(1.0)1>>> int("1.0")Traceback (most r原创 2022-05-05 09:43:22 · 69 阅读 · 0 评论 -
Python基础-Python的异常与处理
异常程序遇到严重错误时, 会终止程序的运行并抛出异常def my_sub(a, b): return a / bmy_sub(1, 0)捕获异常try: 表达式except [Exception] as e: 表达式finnaly: 表达式 try: print('try') except Exception as e: print('except') else: print('else try 正常退出执行')..原创 2022-05-04 09:15:22 · 114 阅读 · 0 评论 -
Python基础-逻辑控制语句
Python的逻辑控制语句条件判断语句ifelifelsea = 50if a > 100: print("a 超过阈值")elif a == 50: print("a 只有阈值的一半")else: print("a 小于阈值")循环语句for遍历一个可迭代对象(暂时理解为list), 会影响相同作用域当中的变量l = [1, 2, 3, 4, 5, 6]e = 0for e in l: print(e)f原创 2022-05-04 09:01:07 · 577 阅读 · 0 评论 -
Python基础-基础数据结构的CRUD操作(list,set,tuple,dict)
基础数据结构的CRUD操作List(列表)list中存的元素是引用create(增加)append末尾添加元素>>> l = []>>> id(l)55200584>>> l.append("a")>>> l['a']>>> id(l)55200584+ 和+=+拼接两个列表, 然后返回一个新列表+=>>> l = ['a']>&g原创 2022-05-04 08:56:43 · 293 阅读 · 0 评论 -
Python基础-字符串
字符串(字符序列)和字节序列字符由于历史原因, 将字符定义为unicode字符还不够准确, 但是未来字符的定义一定是unicode字符字节就是字符的二进制表现形式码位我们计算机显示的实际上是码位>>> '你好'.encode("unicode_escape").decode()'\\u4f60\\u597d'>>>>>> '\u4f60\u597d''你好'UNICODE标准中以4~6个十六进制数字表示原创 2022-05-04 08:42:56 · 81 阅读 · 0 评论 -
Python基础-运算符
Python的运算符算术运算+-*乘法/除法//整除%取余数**x的y次幂开方(没有提供直接的运算符)x ** (1/2)abs()取绝对值赋值运算通过=赋值a = 1比较运算比较的是两个对象的字面值, 字面值暂时可以简单地理解为输出值<><=>===等于!=不等于标识号比较运算比较的是两个变量的内存地址isis not原创 2022-05-04 08:39:13 · 94 阅读 · 0 评论 -
Python基础-运算符
Python的运算符算术运算+-*乘法/除法//整除%取余数**x的y次幂开方(没有提供直接的运算符)x ** (1/2)abs()取绝对值赋值运算通过=赋值a = 1比较运算比较的是两个对象的字面值, 字面值暂时可以简单地理解为输出值<><=>===等于!=不等于标识号比较运算比较的是两个变量的内存地址isis not原创 2022-05-04 08:37:19 · 537 阅读 · 0 评论 -
Python基础-函数的基本介绍
Python函数的基本介绍什么是函数?函数是一段可以直接被另外一段程序或代码引用的程序或代码, 也叫做子程序, 方法.可重复使用可互相调用函数的目的为了代码段的复用在Python中如何定义一个函数?def foo(arg): return "Hello " + str(arg)函数的组成参数列表必须参数当前参数必须按顺序传入关键字参数根据关键字参数传参可以无视顺序def foo(arg=None, arg_2=None)默认参数原创 2022-05-04 08:36:53 · 59 阅读 · 0 评论 -
Python基础-基本变量
变量和赋值什么是变量一个实体的指代查看变量的内存地址id(x)可重新赋值为变量赋值通过=来赋值x = 3被重新赋值之后的值去哪了?被系统回收了.Python的常量python没有常量这个数据类型程序员之间的约定: 如果这个变量的命名都是大写字母, 那么就视为一个常量Python的六大基本类型*强调基本的原因数据类型和数据结构指向的范围更加广泛, 不要产生错误的认知, 形成思维定式通过type()函数来查看当前变原创 2022-05-04 08:33:27 · 228 阅读 · 0 评论