自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TEDxPY

公号「TEDxPY」,分享记录 Python 和 小程序爱好者的日常

  • 博客(189)
  • 资源 (1)
  • 论坛 (2)
  • 收藏
  • 关注

原创 小科普:数据爬虫究竟是在干啥

今天有个小目标:用一个网站实例来做展示,给大家科普下数据爬虫工作的过程。不知道最终效果如何,如果你能看到最后,不妨评论下你的感受。了解任务首先,选定的网站是 爱尔眼科官网https:/...

2021-01-15 23:16:28 7

原创 对不起,2020,我把你过得很糟

一个词形容 2020:离谱。后来想了想,种种离谱又都是有迹可循的:最初奇怪的尝鲜招来了疫情,随后不断在人群中扩散,生活节奏开始混乱,各种震惊的消息也被无限放大——好像再离谱的事情放到 2...

2020-12-31 18:13:49 11

原创 Git 更新代码并提交笔记

按照工作中使用的 git 代码顺序,简单记录:1.拉取最新代码到本地git pull2.将本地修改完成的代码添加到暂存区git add .不要漏掉最后的点3.检查文件状态git status -s4.将暂存区代码提交到本地仓库git commit -m "自定义信息"引号中信息自己随便写,标记此次提交的信息5.将本地分支推送到远程分支git push -u origin master这里 origin 是远程分支,master 是本地分支,如果本地分支是用了其他,也可以相

2020-12-14 21:29:16 20

原创 NodeJS 由 header 参数 content-length 导致的爬虫失败

在爬取一系列子页面时,对 header 参数配置一样,但有几个页面却抓取失败,经过一番比对,发现是子页面参数中 content-length 设置不同导致的。解决方案,删去 content-length 参数,添加 “transfer-encoding”: “chunked”具体细节可参考...

2020-12-14 17:10:34 16

原创 如何快速比对表格数据

最近在倒腾一些表格数据,遇到这么个问题:先前下载了一批数据,等再次更新下载时,数目却变少了,我需要快速定位到缺失的条目并探究原因。如图,左侧 10 条数据是先前下载的,右侧少了 1 条(...

2020-12-11 15:13:11 20

原创 NodeJS 爬虫笔记一,熟悉爬虫相关模块

这两天开始接触 NodeJS 爬虫,网上的案例比较笼统和稀疏,也很难能对应起来。工作需要爬虫的任务,我也是先用 Python 写了个能跑的,之后摸索着用 NodeJS 来实现。本想找个案例比对着写下 NodeJS 和 Python 爬虫的区别的,没找到合适的 api 数据接口做展示,索性先略过,之后遇到合适的案例再来分享。今天主要的进展是将 Python 通过 requests 爬虫、pandas 将数据写入 csv 表格文件的过程,通过 NodeJS 做到了大致实现。先是通过 JS 的 request

2020-12-04 20:56:19 21

原创 JavaScript学习笔记三

JavaScript学习笔记三2.JavaScript 引用类型2.1 Object 类型2.2 Array 类型转换方法2.3 Date 类型2.4 RegExp类型2.5 Function 类型2.6 基本包装类型目标是学习 NodeJs 爬虫,所以先来回顾下 JavaScript 的基础知识点。第一阶段先学习 《JavaScript高级程序设计(第3版)》书中的第1,3,4,5,6,7,20,22,24章。本篇笔记主要记录书中知识要点。2.JavaScript 引用类型2.1 Object 类型

2020-12-02 16:08:04 20

原创 JavaScript学习笔记二

JavaScript学习笔记二1.JavaScript 语言基本概念1.5 操作符1.6 语句if 语句do-while 语句while 语句for 语句for-in 语句label 语句break、continue 语句with 语句switch 语句1.7 函数目标是学习 NodeJs 爬虫,所以先来回顾下 JavaScript 的基础知识点。第一阶段先学习 《JavaScript高级程序设计(第3版)》书中的第1,3,4,5,6,7,20,22,24章。本篇笔记主要记录书中知识要点。第一章主要介绍

2020-12-02 14:56:21 10

原创 JavaScript学习笔记一

JavaScript学习笔记一1.JavaScript 语言基本概念1.1 语法注意大小写标识符注释语句关键字保留字变量数据类型目标是学习 NodeJs 爬虫,所以先来回顾下 JavaScript 的基础知识点。第一阶段先学习 《JavaScript高级程序设计(第3版)》书中的第1,3,4,5,6,7,20,22,24章。本篇笔记主要记录书中知识要点。第一章主要介绍 JavaScript 历史和组成部分,不作记录。1.JavaScript 语言基本概念1.1 语法注意大小写变量、函数名和操作符

2020-12-01 21:40:08 15 1

原创 三个月不上班,我都干了些啥

今年年中时,下决心离开香港来北京,身边人都劝不要裸辞,于是便在网上投了几份工作,有家创业公司给了 offer,没多考虑火急火燎就过来了。做了一个多月,不合适,离职了。上班时,我把时间排的...

2020-11-28 01:11:55 440 7

原创 抖音和 TikTok 背后的秘密

最近海外版抖音 TikTok 在大国博弈间可谓起伏不断,今天围绕短视频号运营和内容来聊聊我对短视频的理解。简单说下大致情况:为了怕沉迷上瘾,我常年不刷抖音、快手等;9月15日报名参加了为...

2020-10-20 20:15:30 204

原创 最硬核中秋祝福

预计这款最硬核的祝福今天会抵达战场,我先给大家打个预防针。你可能在七夕躲过了青蛙的“孤寡”,但这中秋还有长鹅(嫦娥)在等你,祝你——鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅...

2020-10-01 05:18:17 19

原创 初次薅羊毛,收益一千块,简单复盘

0“薅 [hāo]羊毛”这个词,大家都不陌生,早在 1999 年赵本山的春晚小品《昨天今天明天》中白云大妈就已经开始“薅羊毛织毛衣”了。衍生到今天,所谓“薅羊毛”多指我们利用网络上各种...

2020-08-23 23:57:45 321

原创 Python VTK 交互系统 1 交互模式入门

文章参考自《VTK 交互系统 1 交互模式入门》,按自己理解用 Python 实现相关功能如下:原文中只提及相关函数,为了能直接展示效果,我这引入一个箭头模型,想移除该模式下右键缩放功能,改成右键点击自定义输出“点击右键”信息,代码如下:import vtk# 自定义右键点击事件def right_click(obj, ev): print("点击右键")arrow = vtk.vtkArrowSource()# sphere = vtk.vtkSphereSource()ar

2020-08-17 19:29:01 207 4

原创 Python 多线程锁

无锁多线程案例import threadingimport timenum = 100def fun_sub(): global num num2 = num time.sleep(0.001) num = num2 - 1if __name__ == '__main__': print('开始测试同步锁 at %s' % time.ctime()) thread_list = [] for thread in range(100)

2020-08-14 18:54:35 79

原创 Python 获取串口通信缓存大小

Python 调用串口通信时,一般都是通过 serial 模块先进行实例化:import serialted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)若想获取电脑端串口输入缓存以及输出缓存大小(bytes),可以通过该实例的 in_waiting (当前输入端缓存字节数) 和 out_waiting (当前输出端缓存字节数) 查看。若一次性发送大量请求并收到相应的返回信息,尚未进行读取,则可凭此来查看当前

2020-08-14 14:49:36 529

原创 我的第一个 10W+

写一篇 10W+ 阅读的文章 和 做一款 10W+ 用户的小程序,你觉得哪个难?不妨参考下目前我运营的公众号和小程序:1. TTTEED 公众号:自 2019 年 1月起运营,内容包含 ...

2020-08-14 01:06:26 105

原创 Python @property 基本用法和缺点

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 31 条:用描述符来改写需要复用的 @property 方法@property 基本用法@property 修饰器,需要在类中先对某属性同名方法进行修饰器附加,再以 @属性名.setter 的修饰器对该方法进行改写:class Homework(object): def __init__(self): self._grade = 0 @property def

2020-08-13 10:45:27 109

原创 ODrive 串口通信入门指南

ODrive 官方入门指南中,采用的是 USB 连接控制模式(中文翻译版本链接)使用的是 Native Protocol。当我们需要尝试串口通信实现时,需要专程 ASCII 协议来进行串口通信实现相关的命令,结合着入门指南以及 ODrive 中的相关属性方法参数,将流程中用到的相关方法整理如下:import serialimport timeted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)ted.writ

2020-08-12 20:04:13 462

原创 ODrive ASCII 协议串口通信命令整理

ODrive ASCII 协议串口通信命令整理将 USB to TTL 插入到电脑 USB 1470 端口,识别为 tty.wchusbserial1470,设置波特率,通过 serial 模块实例化:import serialted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)请求信息状态指令格式:f motor回复格式:pos vel注:f 表示请求返回信息;motor 表示电机编号,0 或

2020-08-12 19:55:33 150

原创 Python @property 实时计算数值属性进行属性重构

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 30 条:考虑用 @property 来代替属性重构。首先定义个水桶类,需要向其中注入水才有限额可以消耗使用,采用时间模块控制操作顺序:from datetime import timedelta, datetimeclass Bucket(object): def __init__(self, period): self.period_delta = timedelta(

2020-08-12 12:09:59 47

原创 USB to TTL python 本地测试串口通信

手头上有个 USB to TTL CH340 型号的,想在本地用 python 测试下串口通信。硬件准备首先是 USB to TTL 元件,找个跳线帽将 TXD 和 RXD 针脚相连,插到电脑上下载驱动下载对应电脑系统的 CH340 驱动:https://sparks.gogo.co.nz/ch340.html设备搜寻打开终端/命令行,输入以下命令来搜寻设备:ls /dev/tty.wchusbserial*你将得到如下格式的结果,复制下备用/dev/tty.wchusbserial

2020-08-11 11:42:04 192

原创 Python @property 用法

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 29 条:用纯属性取代 get 和 set 方法。Python 类 public 属性首先,python 类中的 public 属性可以实现 setter 和 getter 等工具方法功能,动态修改、获取类中的属性:class Resistor(object): def __init__(self, ohms): self.ohms = ohms self.vo

2020-08-11 10:25:41 64

原创 树莓派 4 UART 多串口配置通信

相比树莓派零、1、2 以及 3 的双串口 UART0(PL011)和 UART1(mini UART),树莓派 4 中新增了 4 个 PL011 串口共计有 6 个 UART,整理此笔记用作记录和配置参考。UART 配置1. 展示所有串口命令$ dtoverlay -a | grep uart展示 pi4 中所有串口pi@raspberrypi:~ $ dtoverlay -a | grep uart midi-uart0 midi-uart1 miniuart-bt uart0

2020-08-10 17:00:39 1894 3

原创 PyQt5 布局管理器学习

0 知识点思维导图1. 手动布局代码,三个横向标签竖直排列:from PyQt5.Qt import *class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("布局管理的学习") self.resize(500, 500) self.setup_ui() def setup_ui(self):

2020-08-07 18:42:31 88

原创 PyQt5 下拉列表控件案例代码

描述,第一个下拉菜单代表省,选择后控制第二个城市的下拉菜单,每个城市有相应编码,打印选中的城市编码:代码如下:from PyQt5.Qt import *class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QComboBox 综合案例") self.resize(500, 500) self.connected =

2020-08-06 18:49:37 151

原创 PyQt5 QComboBox 学习笔记

PyQt5 QComboBox 下拉框学习笔记,按代码一步步来1. 构造函数QComboBox 的构造函数是 QComboBox(parent: QWidget = None),应用到代码中如下:from PyQt5.Qt import *class Window(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QComboBox 的学习") sel

2020-08-05 19:07:35 116

原创 PyQt5 QComboBox setMaxVisibleItems 不生效

QComboBox 中可以通过 setMaxCount(self, int) 来设置下拉框总条目数,以及 setMaxVisibleItems(self, int) 设置最大可显示的条目数、即一屏显示的条目是,多余的靠下拉继续展示但实际操作时发现 setMaxVisibleItems(self, int) 这个并不能生效,原因是该方法需要配合将 QComboBox 设置为可编辑模式:cb = QComboBox(self)# 设定最大条目个数cb.setMaxCount(5)# 设置最大显示个数

2020-08-05 17:53:23 118

原创 python3 自动打开浏览器搜索

import webbrowserfrom urllib.parse import quotedef search_word(text): new_text =quote(text) url = 'http://www.baidu.com/s?wd=%s' % new_text webbrowser.open(url)target = "test 中国"search_word(target)注:url 链接只能包含ASCII字符,如果目标链接中有中文等非 ASCI

2020-08-05 16:40:19 97

原创 python 类的 public protected private 属性

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 27 条:多用 public 属性,少用 private 属性三种属性python 类的成员变量中按可见度可划分为 public、protected 以及 private 属性class MyObject(object): def __init__(self): self.public_field = 5 self._protect_filed = 8

2020-08-05 10:44:50 124

原创 Python mix-in 组件简介

整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 26 条,只在使用 Mix-in 组件制作工具类时进行多重继承mix-in 定义mix-in 是一种小型的类,它只定义了其他类可能需要提供的一套附加方法,而不定义自己的实例属性,此外,它也不要求使用者调用自己的 __init__ 构造器要点能用 mix-in 组件实现的效果,就不要用多重继承来做将各功能实现为可插拔的 mix-in 组件,然后令相关的类继承自己需要的那些组件,即可定制该类实例所

2020-08-04 10:06:59 117

原创 Python super 父类初始化

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 25条:用 super 初始化父类简单的继承体系初始化父类的传统方式是在子类里用子类实例直接调用父类的 __init__ 方法class MyBaseClass(object): def __init__(self, value): self.value = valueclass MyChildClass(MyBaseClass): def __init__(se

2020-08-03 10:58:47 160

原创 Python 如何实时绘制数据

提到 GUI 绘图,大家可能第一反应是 OpenGL 和 Matplotlib,但其实基于 Qt 平台还有个功能强大的 pyqtgraph 绘图库,不仅支持丰富的图形种类,还能实时更新绘...

2020-08-01 20:20:10 250

原创 PyQt5 pyqtgraph 实时绘制数据

提到 GUI 绘图,大家可能第一反应是 OpenGL 和 Matplotlib,但其实基于 Qt 平台还有个功能强大的 pyqtgraph 绘图库,不仅支持丰富的图形种类,还能实时更新绘图数据并进行交互式操作。不同于网上其他文章或代码讲解,今天我们集中只关注实时绘制数据功能的实现。为了更精准学习该 pyqtgraph 模块功能,我们将参考官方给出的实例来边学边练。1. pyqtgraph 简介1.1 pyqtgraph 特点关于 pyqtgraph 与 Matplotlib 的对比,大致要点如下:

2020-08-01 19:51:34 1573 2

原创 PyQt5 作图之 pyqtgraph PlotWidget 代码结构拆解

关于 pyqtgraph 的介绍,网上一堆文章,但是涉及到其代码,尤其是 PlotWidget 应用的代码,要么附带的数据过于复杂不好摘,要么代码结构略复杂,对于刚接触的萌新很不友好,因此在这里自己拆解出一套 PlotWidget 代码供大家参考,每个代码都是独立可运行的,数据简单、主要观察代码结构。要点:独立的 PlotWidget 入门代码,QtDesigner 配合 PlotWidget 作图1. 最基础版 PlotWidget采用 QWidget 控件,在其上建立 PlotWidget 控件,

2020-08-01 15:41:13 504 1

原创 《Effective Python》第 23 条笔记

assert 断言格式:# 格式 assert expression# 例如assert x==3# 若 x 值为 3,正常执行;若 x 不为 3,触发 AssertionError 异常# 等价于if not expression: raise AssertionError__call__通过名为 __call__ 的特殊方法,可以使类的实例能够像普通的 Python 函数那样得到调用class Ted(object): def __init__(self):

2020-07-29 20:03:57 49

原创 Python 由字典、元组到辅助类来维护程序的状态

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 22 条:尽量用辅助类来维护程序的状态,而不要用字典和元组。字典维护简单的对象动态简单的例子,为学生建立成绩字典,记录姓名和多个分数,计算平均分,代码如下:class SimpleGradebook(object): def __init__(self): self._grades = dict() def add_student(self, name):

2020-07-29 16:55:59 55

原创 Python3 函数参数列表单独一个星号 * 的作用

本文整理自《Effective Python》第 21 条:用只能以关键字形式指定的参数来确保代码明晰Python 3 中可以定义一种只能以关键字形式来指定的参数,从而确保调用该函数的代码读起来会比较明确。这些参数必须以关键字的形式提供,而不能按位置提供。例如下面这个 safe_division 函数,带有两个只能以关键字形式来指定的参数,参数列表里的 * 星号,标志着位置参数的就此终结,之后的那些参数,都只能以关键字形式来指定。def safe_division(number, divisor, *

2020-07-29 09:34:08 334

原创 手工打造一款酷酷的老式放映机!

我的手工展DEMO示闲(xian)来(de)无(dan)事(teng) 在网上搜来这么款酷酷的手工 DIY 作品,买之前觉得拼装后手摇放映肯定特别带感!因为新换了工作接近九九六的工作强度...

2020-07-29 01:55:36 77

原创 Python 函数动态参数值设为 None 的意义

本文整理自《Effective Python 编写高质量 Python 代码的 59 个有效方法》第 20 条:用 None 和文档字符串来描述具有动态默认值的参数参数的默认值,只会在程序加载模块并读到本函数的定义时评估一次。对于{} 或 [ ] 等动态的值,可能会导致奇怪的行为。对于以动态值作为实际默认值的关键字参数来说,应该把形式上的默认值写为 None,并在函数的文档字符串里描述该默认值所对应的实际行为。例1例如:from time import *from datetime import

2020-07-28 15:39:21 652

Python print 玩转点阵字

python3版本通过命令行或控制台,print字符构成汉字点阵字;可以自定义输入汉字进行字符输出展现点阵字

2019-01-15

适合表白、秀恩爱的 Python 图片融合特效

发表于 2019-08-08 最后回复 2019-08-08

博客文章被人随意复制发布

发表于 2019-03-04 最后回复 2019-03-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除