Python练习
使用Pycharm编译环境联系Python
大大打打
这个作者很懒,什么都没留下…
展开
-
平时积累的一些官方文档地址
0. Python包下载以及使用说明:PyPI · The Python Package Index 1. Clickhouse数据库操作手册:Overview | ClickHouse Documentation原创 2022-01-05 22:16:51 · 1082 阅读 · 0 评论 -
操作DOCX表格标签
from docxtpl import DocxTemplate from docx import Document from 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 · 335 阅读 · 0 评论 -
Python 使用 gevent 实现协程
协程唯一真神 import time import gevent from gevent import monkey monkey.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 · 97 阅读 · 0 评论 -
Python 使用 greenlet 实现协程(不常用)
greenlet 是对 yeild实现协程 的封装,不常用,协程还得用 gevent from greenlet import greenlet import time def test1(): while True: print("--1--") # 切换到 g2 中执行 g2.switch() time.sleep(0.1) def test2(): while True: print("--2-.原创 2021-05-10 21:07:34 · 115 阅读 · 0 评论 -
Python 使用 yield 实现协程(不常用)
利用 yield 的返回特性, 可以实现 并行 效果,此处模拟两死循环交替执行。(了解) 此方法已经封装到 greenlet 和 gevent 模块中 import time def task1(): while True: print("--1--") # 返回,之后执行 while True 继续 next(t2) time.sleep(0.1) yield def task2(): while True: .原创 2021-05-10 21:00:03 · 215 阅读 · 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 · 122 阅读 · 0 评论 -
Python 生成器的使用
生成器:特殊的迭代器 1. 当 函数中出现 yield 时,次数函数就是一个生成器对象,而不是一个函数 2. 创建生成器对象类似于创建一个类 3. 使用 next 方法运行生成器代码 4. yield 返回其之后的内容,并停在此处,等下次 调用 next 函数时接着运行 ...原创 2021-05-09 20:34:27 · 110 阅读 · 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 · 166 阅读 · 0 评论 -
Python 迭代器
迭代器: 具有 __iter__ 方法和 __next__ 方法的对象 当执行 for 循环时,代码做了哪些事? 1. 判断对象是否可迭代 2. 在第一步的基础上,调用 iter 函数,得到对象 __iter__ 方法的返回值 3. __iter__ 方法的返回值 是一个迭代器 # 效果:使自己创建的类能够被迭代 from collections import Iterable from collections import Iterator import time class Classm原创 2021-05-09 15:28:06 · 67 阅读 · 0 评论 -
Python 进程池体验
场景:不确定要创建多少个进程时 from multiprocessing import Pool import random import 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 · 47 阅读 · 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 · 41 阅读 · 0 评论 -
Python,多线程,线程锁 练习
关键字:Python,多线程,线程锁 # 导入线程模块 from threading import Thread import threading # 定义一个总数计数 num = 0 # 定义一个线程将增加num def thread1(count): global num for i in range(count): # 线程锁上锁,只能执行上锁之后的代码 lock1.acquire() num += 1 lock1.原创 2021-02-06 13:16:14 · 113 阅读 · 1 评论 -
AWS--IOT
https://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/aws-iot-solutions.html原创 2021-01-08 16:20:37 · 125 阅读 · 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 · 438 阅读 · 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 · 1355 阅读 · 0 评论 -
Python安装第三方模块的三种方法
在学习的过程中,有些模块使用pip install安装后提示失败,那么有时候下载源码安装是一个不错的方法。 1.使用pip install安装 pip install *** 2.下载源码,解码后进入解压目录,打开Python,用Python运行其中的steup.py文件。 python setup.py install 3.‘***.whl’的单个文件,比较少。 pip install ***.whl ...原创 2020-11-14 15:50:27 · 335 阅读 · 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 · 464 阅读 · 0 评论 -
Python中列表推导式的使用
列表推导式:能很快的生成一个列表,并且能够执行简单的运算 import random list1 = [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 · 771 阅读 · 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 · 100 阅读 · 0 评论 -
Python装饰器简单练习01
装饰器: 1.装饰器会在函数运行到@装饰器时直接开始装饰,而不是调用函数后装饰 2.装饰器可以在不改变原代码的情况下对函数进行功能的增加 # 装饰器1 def func(func): def call_func(*args, **kwargs): # 被装饰的函数 func(*args, **kwargs) print('维持生命还需要娱乐活动!') print('维持生命还需要锻炼身体!') return call_f原创 2020-10-08 10:54:18 · 233 阅读 · 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 · 386 阅读 · 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 · 2203 阅读 · 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 · 306 阅读 · 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 · 302 阅读 · 0 评论