python进阶
风火编程
python代码应力求简洁高效, 兼顾可读性.
博文章大致可以分为:
1. 总结性的
以功能为导向, 总结工作中实现某一功能可以使用的方法.
2. 勘误性的
试图纠正流行博客中的错误, 不要让转载变成传播错误.
3. 优化性的
主要从简洁和效率两方面考虑,优化一些网络上的代码
从事python开发工作五年之后总结和分享从入门开始的笔记.时刻铭记python是开源的.
QQ &&微信: 77245741
展开
-
风火编程--解决 Microsoft Visual C++ 14.0 or greater is required
解决Microsoft Visual C++ 14.0 or greater is required异常打开错误提示解决链接::https://visualstudio.microsoft.com/visual-cpp-build-tools/点击下载点击下载的旧版本选择2019点击下载左侧勾选Build Tools选择Build Tools for Visual Studio 2019 (version 16.7), 右侧点击下载安装运行 Visual Studio Installer原创 2023-04-19 18:09:42 · 325 阅读 · 0 评论 -
风火编程--python3编译pyd文件
编译pyd文件安装cythonpip install cython编写setup.py 文件import osfrom setuptools import setupfrom Cython.Build import cythonizefilename = 'org.py'setup( name='xxxx', ext_modules=cythonize(filename), # 打包文件的名称,默认与setup.py在同一路径下)tmp_file =原创 2022-04-15 12:42:15 · 918 阅读 · 0 评论 -
风火编程--centos7配置gpu环境
下载显卡驱动1.1查看gpu型号lspci | grep -i nvidia1.2 下载驱动https://www.nvidia.co.uk/Download/index.aspx?lang=en-uk1.3. 修改权限chmod 777 NVIDIA-Linux-x86_64-440.100.run如果没有gcc需要安装对应系统版本的kernel-headerssudo yum install kernel-devel或者3.1 查看系统版本uname -r3.2下载rtm..原创 2021-12-16 17:55:33 · 2593 阅读 · 0 评论 -
风火编程--python调用c++示例
python调用c++c++文件中声明以c的方式编译extern "C"{ Test* test_new(){return new Test;} double my_calculate(Test* t, int a, double b, char c[], int * d, double * e, char ** f){ return t->calculate(a, b,c,d,e,f); }}其中:test_new()中创建了一个c++的Test类的原创 2021-09-06 19:18:07 · 165 阅读 · 0 评论 -
风火编程--python下载下载FTP文件
下载FTP文件import zipfilefrom ftplib import FTPimport osimport datetime as dtimport py7zrdef login(): host = 'ftp://218.244.131.134' port = 21 username = '' password = '' ftp = FTP(host, username, password) ftp.set_debuglevel(2原创 2021-08-30 18:21:10 · 130 阅读 · 0 评论 -
风火编程--pandas进行数据离散化,区间分组
pandas数据离散化import pandas as pd#设置切分区域listBins = [0, 10, 20, 30, 40, 50, 60, 1000000]#设置切分后对应标签listLabels = ['0_10','11_20','21_30','31_40','41_50','51_60','61及以上']df = pd.DataFrame()df['data'] = [i for i in range(100)]#利用pd.cut进行数据离散化切分"""panda原创 2021-08-30 18:55:40 · 275 阅读 · 0 评论 -
风火编程--re.finditer, 等差数列count, 截取生成器takewhile,文件切片islice()
《流畅的python》读书笔记(七)14.1 迭代解释器需要迭代x时会调用iter(x), 返回一个迭代器, 如果对象没有实现了__iter__方法, iter()会调用__getitem__方法, , 如果两个方法都没有, 则x不是可迭代对象会抛出TypeError.迭代器是指实现了__iter__和__next__方法的对象, __iter__方法应该返回self, 可以通过isinst...原创 2018-11-25 15:55:49 · 377 阅读 · 0 评论 -
风火编程--python打包以及exe文件 failed to excute异常处理
python项目封包将python项目打包成exe文件来执行, 可以支持命令行启动及传参.打包安装pyinstaller要注意版本问题要注意版本问题, 使用对应的python版本的pip安装pyinstaller也可以通过源码安装pip install pyinstaller配置环境变量通过pip安装的pyinstaller, 在python27或py36目录下的sccipts目录...原创 2019-01-04 10:50:33 · 2202 阅读 · 0 评论 -
风火编程--cron表达式转换成schedule参数
cron表达式转换成python的schedule参数cron表达式有两种形式都是用空格分割的字符串,一种是六位的, 包括:秒/分/时/日/月/年另一种是七位的, 包括: 秒/分/时/日/月/周/年, 其中日和周有一个是"?"调用函数会得到参数的字典kwargs, 通过**kwargs解包即可.def cron2schedule(cron): """ cron表达式转换成...原创 2019-01-10 23:46:27 · 627 阅读 · 0 评论 -
风火编程--asincio基本用法示例
asincio协程编程示例示例import asyncioasync def io_func(x): """ 模拟耗时io函数 :param x: 参数 :return: io函数的输出结果 """ print("excute io_func({}) ...".format(x)) await asyncio.sleep(5) ...原创 2019-03-01 22:28:45 · 242 阅读 · 0 评论 -
风火编程--numba使用示例
用numba提升numpy的性能使用numba可以对numpy的向量运算在时间和空间上进行优化.在jupyter notebook 和ipython等实时交互中可以通过魔法方法%timeit 和 %memit 进行时间和内存消耗情况的输出.代码import timeimport numpy as npimport numba as nbdef f_np(i, j):arr = np...原创 2019-03-08 18:56:00 · 394 阅读 · 0 评论 -
matplotlib绘图
matplotlib绘图绘制双轴图import numpy as npimport matplotlib.pyplot as plty = np.random.standard_normal([20, 2]).cumsum(axis=0)绘制成双轴图plt.figure(figsize=(7, 4))fig1, ax1 = plt.subplots()plt.plot(y[:, 0...原创 2019-03-04 06:59:41 · 227 阅读 · 0 评论 -
风火编程--自定义异常
自定义异常class AgeError(Exception): def __init__(self, age): self.age = age # 异常信息描述 def __str__(self): return "您填写的年龄为%d有误!!" % self.ageclass Person(object): # 使用其类创建出来的...原创 2019-03-14 18:51:53 · 138 阅读 · 0 评论 -
风火编程--线程事件通知event
线程事件通知, 简单模拟供应链描述上游定义为生产者, 下游定义为消费者. 消费者的消费速度大于生产者模拟过程:消费者等待生产者生产产品库存达到一定数量后生产者发出通知, 消费者开始消费库存不足时,消费者停止消费2<->3循环CODEconding: utf-8 from time import sleep from queue import Que...原创 2019-03-19 13:41:03 · 199 阅读 · 0 评论 -
风火编程--上下文管理装饰器, yield from合并生成器, 协程asyncio
《流畅的python》读书笔记(八)15.1 if 语句之外的elsefor—else, while—else当循环正常结束的时候执行,与break互斥.15.3 contextlib把生成器函数变成上下文管理器import sysfrom contextlib import contextmanager@contextmanagerdef glass_looking(): ...原创 2018-11-25 15:27:37 · 335 阅读 · 1 评论 -
风火编程--内置生成器函数cycle()循环序列, repeat()循环对象,tee复制对象
《流畅的python》读书笔记(七)14.1 迭代解释器需要迭代x时会调用iter(x), 返回一个迭代器, 如果对象没有实现了__iter__方法, iter()会调用__getitem__方法, , 如果两个方法都没有, 则x不是可迭代对象会抛出TypeError.迭代器是指实现了__iter__和__next__方法的对象, __iter__方法应该返回self, 可以通过isinst...原创 2018-11-25 15:13:56 · 468 阅读 · 0 评论 -
风火编程--python描述符的使用
描述符的使用实现了描述符协议: get, set, delete__方法中的一个或多个的类, 对多个属性使用相同的逻辑进行操作.创建描述符的一个实例作为其他类的类属性, 在进行初始化的时候定义同名的实例属性就会遵守描述符的约束.没有实现__set()的是非覆盖型描述符, 如果哦通过实例设置同名属性, 描述符会被覆盖.DEMOclass Quantity: """自然量的描述符"...原创 2018-11-25 03:27:45 · 304 阅读 · 0 评论 -
风火编程--python定时任务
python定时任务指定时间长度后执行的单次任务DEMO (5s后执行) import time from threading import Timer def func(msg, starttime): print( '程序启动时刻:', starttime, '当前时刻:', time.time(), '消息内容 --&amp;amp;amp;gt; %s' % (msg)...原创 2018-09-23 00:30:07 · 363 阅读 · 0 评论 -
风火编程--python多线程
Python多线程python多线程机制python的多线程是基于时间片段的轮转和GIL锁实现的, 所以python并不存在真正意义上的多线程. 因此只适用于在IO密集型的程序中使用, 对于计算密集型的程序,由于锁的竞争机制,多线程不仅不会提高效率,还会导致效率降低, 甚至卡死. 如果硬件允许的情况下,可以选择使用多进程. python的多线程模块threading 当中有个join()...原创 2018-10-11 21:15:23 · 301 阅读 · 0 评论 -
风火编程--falsk后台的用户密码相关逻辑
flask的密码加密处理和存储模型类设置class User(BaseModel, db.Model):“”“用户表”&amp;amp;amp;quot;&amp;amp;amp;quot;tablename = “ih_user_profile”id = db.Column(db.Integer, primary_key=True) # 用户idname = db.Column(db.String(32), unique=True) # 用户昵称...原创 2018-09-23 13:08:35 · 369 阅读 · 0 评论 -
风火编程--python发布celery异步任务
celery发布异步任务(redis数据库)单一文件1.创建celery应用from celery import Celerycelery_app = Celery(&quot;name&quot;, broker = &quot;celery://127.0.0.1:6379/0, backend=&quot;celery://127.0.0.1:6379/1&quot;)定义celery任务@celer原创 2018-09-23 11:11:15 · 370 阅读 · 0 评论 -
风火编程--python字符串str具名元组namedtuple列表list推导式及字节数组bytearray
流畅的python第二部分 数据结构2.1容器序列: tuple, list, collections.deque存储不同类型数据的引用扁平序列: str, bytearray, memeryview, array.array存储同一种基础类型(字符,字节,数值)的数据(占用连续的内存空间)2.2列表推导式if筛选放在在最后[result for… if expression]...原创 2018-11-12 00:32:36 · 362 阅读 · 0 评论 -
风火编程--python的集合set和字典dict的特性
第三部分 字典和集合3.1 散列可散列对象应实现了: hash()和__eq__()方法原子类型的数据可散列,不可变集合可散列,元组只有当所有元素可散列的时候才是可散列的3.3 字典的操作a = d.get(&amp;amp;amp;amp;amp;amp;quot;4&amp;amp;amp;amp;amp;amp;quot;, 4)# 如果键不存在,添加并返回默认值b = d.setdefault(&amp;amp;amp;amp;amp原创 2018-11-13 23:31:58 · 249 阅读 · 0 评论 -
风火编程--具名元组的使用
python的具名元组具有和字典或对象极其类似的用法, 但是他是元组, 这意味着她占用的空间会远远小于字典. 作为字典的一种替代结构在某些情况下使用是很合适的. 比方说大量的记录. 其实作为记录本身就是元组的最基本用法之一.demo一看就会, 不多说.DEMOfrom collections import namedtupleAAA = namedtuple(&amp;amp;amp;quot;_&amp;amp;amp;quot;, [“x”, “y”]...原创 2018-10-23 21:59:32 · 345 阅读 · 0 评论 -
风火编程--可调用对象, __call__()应用示例
通过__call__()实现可调用对象可调用对象, 实现了__call__()的类的实例对象, 可以直接通过obj()像调用函数一样调用对象.主要用于简化代码.应用:&amp;amp;lt;1&amp;amp;gt;只有一个实例方法, 或者只有一个核心方法的时候省略方法名, 简化调用DEMOclass AA(): def __call__(self): print(&amp;quot;这里是aa的唯一方法&am原创 2018-10-24 22:52:18 · 298 阅读 · 0 评论 -
风火编程--python转字符串的方法对比
python转字符串的几种常用方法对比str() repr() json.dumps()简单说明:str()会把一个非字符串类型的python数据转换成字符串类型 repr()只是机械的在数据的外部加’ ‘, 对于字符串则会先用\把原来的’ ‘转换成原始字符,再在外面加’ ‘, 对一个3元素的python字典循环repr()100次会内存溢出. json.dumps相当于经过优...原创 2018-08-13 00:38:42 · 367 阅读 · 0 评论 -
风火编程--弱引用weakref, __slots__属性, reprlib.repr缩略显式, slice处理切片, __setattr__()动态属性, chain()合并多各序列
《流畅的python》读书笔记(五)8.2 is和==is比较的是的标识,由于is不支持重载,因此会直接比较, ==比较的是值,只有绝对不可变的元组才可以作为字典的键或集合的元素.8.4 不能使用可变数据类型作为参数.8.5 del 只是删除名称,而不是善处对象, 对象的引用计数会减18.6 弱引用weakref不增加引用计数的引用. 常用于缓存import weakrefa =...原创 2018-11-21 22:40:26 · 390 阅读 · 0 评论 -
风火编程--策略模式, 命令模式,单分派泛函数扩展不同类型参数的处理逻辑
《流畅的python》读书笔记(四)6.1 策略模式将不同对的策略封装到不同的策略方法中, 创建策略实例,传入上下文(实际场景), 执行计算方法获得策略的结果集, 执行排序方法选出最佳策略.from operator import itemgetterclass Promotion(): &amp;quot;&amp;quot;&amp;quot;策略&amp;quot;&amp;quot;&am原创 2018-11-20 00:30:08 · 411 阅读 · 0 评论 -
风火编程--bytes, memoryview, unicode规范化,运算符包operator,函数式包functools: partial, reduce, itemgetter
《流畅的python》读书笔记(三)4.2python3的字节类型python3的bytes或bytearrary是不可变数据了理性, 它的元素是0-255之间的整数, bytearray对象没有字面量显示句法.bytres的索引取到整数,bytearray的索引取到bytes, bytearray切片取到bytearray对象.内存视图import structftm = “3s3s...原创 2018-11-18 13:04:11 · 359 阅读 · 0 评论 -
风火编程--flask视图函数返回值
flask视图函数返回json数据原始模式data_json = json.dumps({"errcode": "0", "errms": "成功", "data": data})return data_json, 200, {"Contant-Type": "Appli原创 2018-11-05 12:21:43 · 299 阅读 · 0 评论