
Python练习
使用Pycharm编译环境联系Python
大大打打
这个作者很懒,什么都没留下…
展开
-
平时积累的一些官方文档地址
0. Python包下载以及使用说明:PyPI · The Python Package Index1. Clickhouse数据库操作手册:Overview | ClickHouse Documentation原创 2022-01-05 22:16:51 · 1225 阅读 · 0 评论 -
操作DOCX表格标签
from docxtpl import DocxTemplatefrom docx import Documentfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENT# 替换def subtag(): tpl = DocxTemplate('1.docx') sd = tpl.new_subdoc() sd.add_paragraph('测试成功') context = { '测试一下': sd, .原创 2021-08-15 23:13:28 · 403 阅读 · 0 评论 -
Python 使用 gevent 实现协程
协程唯一真神import timeimport geventfrom gevent import monkeymonkey.patch_all()def test(n): for i in range(n): print(gevent.getcurrent(), i) time.sleep(0.5) # gevent.sleep(0.5)g1 = gevent.spawn(test, 5)g2 = gevent.spawn(t.原创 2021-05-10 21:29:54 · 139 阅读 · 0 评论 -
Python 使用 greenlet 实现协程(不常用)
greenlet 是对 yeild实现协程 的封装,不常用,协程还得用 geventfrom greenlet import greenletimport timedef test1(): while True: print("--1--") # 切换到 g2 中执行 g2.switch() time.sleep(0.1)def test2(): while True: print("--2-.原创 2021-05-10 21:07:34 · 174 阅读 · 0 评论 -
Python 使用 yield 实现协程(不常用)
利用 yield 的返回特性, 可以实现 并行 效果,此处模拟两死循环交替执行。(了解)此方法已经封装到 greenlet 和 gevent 模块中import timedef task1(): while True: print("--1--") # 返回,之后执行 while True 继续 next(t2) time.sleep(0.1) yielddef task2(): while True:.原创 2021-05-10 21:00:03 · 271 阅读 · 0 评论 -
Python中生成器的 sned 方式
启动生成器可以用 next 方法,但是它不能够向其中传递数据启动生成器的第二种方法, send 可以向其中传入数据重点:send 方式可以向生成器中传入值,但是接收的值还是 yield 之后的值,起到的作用是改变生成器中变量的值的作用# 重点:send 可以向生成器中传入值,但时接收的值还是 yield 后面的值,起到的作用是改变生成器中变量的值的作用def create_num(all_num): a = 0 b = 1 current_num = 0 a.原创 2021-05-10 20:40:21 · 175 阅读 · 0 评论 -
Python 生成器的使用
生成器:特殊的迭代器1. 当 函数中出现 yield 时,次数函数就是一个生成器对象,而不是一个函数2. 创建生成器对象类似于创建一个类3. 使用 next 方法运行生成器代码4. yield 返回其之后的内容,并停在此处,等下次 调用 next 函数时接着运行...原创 2021-05-09 20:34:27 · 173 阅读 · 0 评论 -
Python迭代器实例
效果:实现斐波那契数列优点:不需要 list 来存储,节省空间,能够控制数据生成的方式class Fibo(object): def __init__(self, all_num): self.all_num = all_num self.current_num = 0 self.a = 0 self.b = 1 # 如果想要一个对象成为 可迭代对象 必须实现 __iter__ 方法, 此刻 Classmate 可.原创 2021-05-09 19:48:34 · 198 阅读 · 0 评论 -
Python 迭代器
迭代器:具有 __iter__ 方法和 __next__ 方法的对象当执行 for 循环时,代码做了哪些事?1. 判断对象是否可迭代2. 在第一步的基础上,调用 iter 函数,得到对象 __iter__ 方法的返回值3. __iter__ 方法的返回值 是一个迭代器# 效果:使自己创建的类能够被迭代from collections import Iterablefrom collections import Iteratorimport timeclass Classm原创 2021-05-09 15:28:06 · 114 阅读 · 0 评论 -
Python 进程池体验
场景:不确定要创建多少个进程时from multiprocessing import Poolimport randomimport time# 模拟即将运行的一个进程def worker(num): print(num) time.sleep(1)# 创建进程池,最多三个进程同时运行po = Pool(3)# 向进程池中放入10个进程for i in range(10): po.apply_async(worker, (random.randint(原创 2021-05-07 19:37:57 · 92 阅读 · 0 评论 -
Python体验最基础的进程间通信
import multiprocessing# 模拟下载数据def download_data(q): data = list(range(10)) for temp in data: q.put(temp) print('数据传输完毕')# 模拟分析数据def analysis_data(q): data = [] while True: data.append(q.get()) if q.empty.原创 2021-05-07 19:16:31 · 78 阅读 · 0 评论 -
Python,多线程,线程锁 练习
关键字:Python,多线程,线程锁# 导入线程模块from threading import Threadimport threading# 定义一个总数计数num = 0# 定义一个线程将增加numdef thread1(count): global num for i in range(count): # 线程锁上锁,只能执行上锁之后的代码 lock1.acquire() num += 1 lock1.原创 2021-02-06 13:16:14 · 165 阅读 · 1 评论 -
AWS--IOT
https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/aws-iot-solutions.html原创 2021-01-08 16:20:37 · 176 阅读 · 0 评论 -
Python使用字典实现switch的功能
在C++等语言中,经常会使用到switch-case语句,但是在Python中却没有这个语句。想要实现这个方法,在Python中有更加简单的巧妙办法:使用字典,因为字典的值可以是任意数据类型使用一个字典,如代码中的dict,将要执行的函数引用传入:def func1(): return '调用了函数func1'def func2(): return '调用了函数func2'def func3(): return '调用了函数func2'def f.原创 2020-12-19 12:12:20 · 504 阅读 · 2 评论 -
Python中self,cls代表什么,怎么用
self:self代表自身的意思,就是代表这个类对象自身的意思不代表类本身,创建对象后self就代表这个对象自身。cls:cls代表这个类,这个类的所有属性、方法都在里面。class A(object): a = 'a' @staticmethod # 静态方法 def foo1(): return A.a # 正常 def foo2(self): return 'hello' @classmethod # 类方法原创 2020-12-02 12:54:10 · 1430 阅读 · 0 评论 -
Python安装第三方模块的三种方法
在学习的过程中,有些模块使用pip install安装后提示失败,那么有时候下载源码安装是一个不错的方法。1.使用pip install安装pip install ***2.下载源码,解码后进入解压目录,打开Python,用Python运行其中的steup.py文件。python setup.py install3.‘***.whl’的单个文件,比较少。pip install ***.whl...原创 2020-11-14 15:50:27 · 373 阅读 · 0 评论 -
Python中字典推导式的使用
字典推导式:能很快的生成一个字典,并且能够执行简单的运算dict1 = {i: i + 1 for i in range(10)} # 快速生成一个字典print(dict1)dict2 = {i: 'Hello' for i in range(10)}print(dict2)# 快速生成的字典最好是有规律的info = 'name=小明, age=18, hobby=play computer'dict3 = {info.split(',')[i].split('=')[0]: .原创 2020-11-07 07:14:12 · 505 阅读 · 0 评论 -
Python中列表推导式的使用
列表推导式:能很快的生成一个列表,并且能够执行简单的运算import randomlist1 = [i for i in range(10)] # 生成一个简单的0到9的列表print('list1:', list1)name = [['aaa', 'bbb', 'ccc', 'a', 'b', 'c'], ['111', '222', '333', '1', '2', '3']]list2 = [k for i in name for k in i if len(k) < 2]原创 2020-11-06 01:59:11 · 840 阅读 · 1 评论 -
Python装饰器简单练习02
1.装饰器和闭包类似,传递函数引用的同时可以传递参数2.值得注意的是,装饰器返回test时的(*args,**kwargs)是拆包而不是打包from time import *# 带参数的通用装饰器def gen(gender): def set_func(test): def call_func(*args, **kwargs): if gender == 'girl': print('You Create.原创 2020-10-08 11:03:28 · 130 阅读 · 0 评论 -
Python装饰器简单练习01
装饰器:1.装饰器会在函数运行到@装饰器时直接开始装饰,而不是调用函数后装饰2.装饰器可以在不改变原代码的情况下对函数进行功能的增加# 装饰器1def func(func): def call_func(*args, **kwargs): # 被装饰的函数 func(*args, **kwargs) print('维持生命还需要娱乐活动!') print('维持生命还需要锻炼身体!') return call_f原创 2020-10-08 10:54:18 · 278 阅读 · 0 评论 -
Python闭包练习
匿名函数、函数、闭包、对象之间的关系:1.匿名函数:完成最基本的函数功能2.函数:完成比较复杂的功能3.闭包:能够同时传递数据 + 完成功能的函数4.对象:完成最为复杂的功能,并且能够传递数据def func(a, b): # 定义一个c c = 2 def call_func(): print('*' * 20) print('在闭包中改变外部变量需要加:nonlocal') # 在闭包中改变外部已经定义的值需.原创 2020-10-08 09:47:30 · 430 阅读 · 0 评论 -
Python使用socket_TCP实现小文件下载
服务器import socket# 1.创建套接字server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2.绑定端口server.bind(('127.0.0.1', 7890))# 3.变为被动监听模式server.listen(4)while True: # 4.等待客户端链接 s_new, addr = server.accept() print('用户【{}】已经成功连接!!'.forma原创 2020-10-07 13:18:11 · 2253 阅读 · 0 评论 -
Python实现半双工socket_TCP通信
服务器(server):import socket# 1.创建套接字server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2.绑定端口server.bind(('127.0.0.1', 7890))# 3.变为被动监听模式server.listen(4)while True: # 4.等待客户端链接 s_new, addr = server.accept() print('用户【{}】已经成功连接!原创 2020-10-07 13:01:25 · 364 阅读 · 0 评论 -
Python文件读写练习
def main(): # 打开一个文件 f = open('123', 'r+', encoding='utf-8') # 显示指针出现位置,此时在文件开头(0,0) print('此时指针在:{}'.format(f.tell())) # 将源文件内容保存一下 source_file = f.read() # 打印源文件 print('源文件内容为:{}'.format(source_file)) # 显示指针出现位置,此时在末尾.原创 2020-10-06 16:41:45 · 379 阅读 · 0 评论