文章分类 -  python基础知识

一些必备的python基础知识
摘要:pip install 模块名字 1,编写模块 2,将模块进行打包 3,上传到PyPI(需要先注册PyPI账号) 注册PyPI账号 安装上传工具 基于工具进行上传 假设,现在要做一个名称叫 fucker 的模块, 第一步 项目文件夹 fucker ├── LICENSE # 声明,给模块使用者看,说 阅读全文
posted @ 2022-01-10 22:27 下个ID见 阅读(122) 评论(0) 推荐(0)
摘要:生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入了生产者和消费者模式。 生产者消费者 阅读全文
posted @ 2022-01-04 00:25 下个ID见 阅读(18) 评论(0) 推荐(0)
摘要:在项目文件中除了settings.py文件外还需要一个local_settings.py文件 local_settings.py中写入一些私有的配置,不会给任何人 setting.py try: from .local_settings import * except ImportError: pa 阅读全文
posted @ 2021-12-16 22:54 下个ID见 阅读(98) 评论(0) 推荐(0)
摘要:git是一个分布式版本控制软件 pycharm可以自动检测git,对项目文件进行版本控制 .gitignore文件里面的内容会受到git忽略 # pycharm .idea/ .DS_Store __pycharm__/ *.py[cod] *$py.class #Django stuff *.sq 阅读全文
posted @ 2021-12-16 22:51 下个ID见 阅读(931) 评论(0) 推荐(0)
摘要:Python内置了一个关键字raise,可以主动触发异常。 raise可以抛出自定义异常,前面已经有了python内置的一些常见的异常类型。大多数情况下,内置异常已经够用了。 但是有时候你还是需要自定义一些异常:自定义异常应该继承Exception类,直接继承或者间接继承都可以,例如: # 1.用户 阅读全文
posted @ 2021-12-08 21:35 下个ID见 阅读(239) 评论(0) 推荐(0)
摘要:Python程序运行对已经下载的模块有很大的要求,版本稍微不对,就无法运行 1.1获取当前环境安装的包 pip freeze > ./requirements.txt 会自动创建一个requirements.txt文件 以下格式写入 Flask==1.1.2 Pillow==8.2.0 ······ 阅读全文
posted @ 2021-12-02 23:21 下个ID见 阅读(299) 评论(0) 推荐(0)
摘要:进程是计算机中资源分配的最小单元;一个进程中可以有多个线程,同一个进程中的线程共享资源; 进程与进程之间则是相互隔离。 Python中通过多进程可以利用CPU的多核优势,计算密集型操作适用于多进程。 1.1 进程介绍 import multiprocessing def task(): pass i 阅读全文
posted @ 2021-11-19 21:02 下个ID见 阅读(27) 评论(0) 推荐(0)
摘要:之前写一个类,每次执行 类() 都会实例化一个类的对象。 class Foo: pass obj1 = Foo() obj2 = Foo() print(obj1,obj2) 以后开发会遇到单例模式,每次实例化类的对象时,都是最开始创建的那个对象,不再重复创建对象。 简单的实现单例模式 class 阅读全文
posted @ 2021-11-15 23:33 下个ID见 阅读(8) 评论(0) 推荐(0)
摘要:2. 多线程开发 import threading def task(arg): pass # 创建一个Thread对象(线程),并封装线程被CPU调度时应该执行的任务和相关参数。 t = threading.Thread(target=task,args=('xxx',)) # 线程准备就绪(等待 阅读全文
posted @ 2021-11-14 23:16 下个ID见 阅读(12) 评论(0) 推荐(0)
摘要:1. 进程和线程 进程和线程: 线程,是计算机中可以被cpu调度的最小单元(真正在工作)。 进程,是计算机资源分配的最小单元(进程为线程提供资源)。 一个进程中可以有多个线程,同一个进程中的线程可以共享此进程中的资源。 import time result = 0 for i in range(10 阅读全文
posted @ 2021-11-13 23:22 下个ID见 阅读(20) 评论(0) 推荐(0)
摘要:深浅拷贝 浅拷贝 不可变类型,不拷贝 >>> import copy >>> v1 = "hello world" >>> v2 = copy.copy(v1) >>> id(v1) 44127840 >>> id(v2) 44127840 """ >>> v3 = "hello world" >> 阅读全文
posted @ 2021-11-07 20:34 下个ID见 阅读(24) 评论(0) 推荐(0)
摘要:垃圾清除 引用计数为主,标记清除和分代回收为辅 Python中所有的东西最终都会根据底层C代码实现 v1 = 0.9 # 浮点型 > 结构体(4个值) {1, 0.9, 上一个, 下一个} v2 = 1 # 整型 > 结构体(4个值) {1, 1, 上一个, 下一个} 环状双向列表,refchain 阅读全文
posted @ 2021-11-07 19:38 下个ID见 阅读(64) 评论(0) 推荐(0)
摘要:not or 和 and >>> 0 or 1 1 >>> 0 and 1 0 >>> 0 and 2 0 >>> 0 and 2 or 3 3 >>> not 0 or 1 True >>> not 0 and 1 1 >>> not 1 and 3 or 5 and "" or False Fa 阅读全文
posted @ 2021-11-07 00:07 下个ID见 阅读(17) 评论(0) 推荐(0)
摘要:在程序开发中如果遇到一些 不可预知的错误 或 你懒得做一些判断 时,可以选择用异常处理来做。 import requests while True: url = input("请输入要下载网页地址:") res = requests.get(url=url) with open('content.t 阅读全文
posted @ 2021-11-06 00:06 下个ID见 阅读(62) 评论(0) 推荐(0)
摘要:字符串类型(str),在程序中用于表示文字信息,本质上是unicode编码中的二进制。 data = "hello world" 字节类型(bytes) 可表示文字信息,本质上是utf-8/gbk等编码的二进制(对unicode进行压缩,方便文件存储和网络传输。) data = "hello wor 阅读全文
posted @ 2021-11-04 23:15 下个ID见 阅读(15) 评论(0) 推荐(0)
摘要:1,requests 可以用来访问网站 import requests if __name__ == '__main__': url = "https://www.sogou.com/" response = requests.get(url=url) page_text = response.te 阅读全文
posted @ 2021-11-04 21:17 下个ID见 阅读(79) 评论(0) 推荐(0)
摘要:3.8.1 正则表达式 1. 字符相关 wupeiqi 匹配文本中的wupeiqi import re text = "你好wupeiqi,阿斯顿发wupeiqasd 阿士大夫能接受的wupeiqiff" data_list = re.findall("wupeiqi", text) print(d 阅读全文
posted @ 2021-11-03 23:34 下个ID见 阅读(22) 评论(0) 推荐(0)
摘要:3.1 os import os # 1. 获取当前脚本绝对路径 """ abs_path = os.path.abspath(__file__) print(abs_path) """ # 2. 获取当前文件的上级目录 """ base_path = os.path.dirname( os.pat 阅读全文
posted @ 2021-11-03 22:18 下个ID见 阅读(24) 评论(0) 推荐(0)
摘要:模块,用一砣代码实现了某个功能的代码集合。 对于一个复杂的功能来,需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。 模块分为三种: 自定义模块 内置模块 开源模块 1,自定义模块 在Python中一般对文件和文件的称呼(很多开发者的平时开发中也有人 阅读全文
posted @ 2021-11-03 21:19 下个ID见 阅读(32) 评论(0) 推荐(0)
摘要:递归函数就是自己调用自己 也因此编写这样的函数时很容易出错,进而导致无限循环。 编写递归函数时,必须告诉它何时停止递归。正因为如此,每个递归函数都有两部分:基线条件(base case)和递归条件(recursive case)。 递归条件指的是函数调用自己,而基线条件则指的是函数什么条件下不再调用 阅读全文
posted @ 2021-11-03 00:03 下个ID见 阅读(33) 评论(0) 推荐(0)