
Python 技术汇总
文章平均质量分 95
Python学习笔记,特做记录,分享给大家,希望对大家有所帮助。
网罗开发
华为HDE,大学讲师,开源创新毕业设计导师,Swift社区主理人,COC上海社区主理人,优快云博客专家。
《SwiftUI 入门,进阶与实战》 作者
《ESP32-C3 物联网工程开发实战》作者
全网 10万+ 粉丝, 欢迎您的关注与支持。交流合作私信+
展开
-
【微服务架构】从链路追踪到日志关联:打造分布式系统问题定位利器
微服务架构为系统带来了灵活性与扩展性,但也让问题定位变得更加复杂。服务间缺乏日志关联性是微服务调试和运维中的核心痛点之一。本文章将深入探讨如何通过分布式追踪、链路ID等技术实现服务间日志关联,并通过示例代码与工具展示如何落地这些方法。服务间日志关联是微服务运维中的关键技术,通过链路ID和分布式追踪工具,开发者可以显著提升问题定位的效率。本文提供的代码示例和工具实践将帮助读者在实际项目中实现日志关联。原创 2025-01-14 18:06:01 · 1103 阅读 · 0 评论 -
【日志管理】从性能指标监测到错误率分析:打造高效日志系统的实践指南
系统日志是运维和开发者用来发现系统性能瓶颈、定位问题的关键工具。通过从日志中提取有价值的系统稳定性指标(如响应时间、错误率、资源使用率等),可以实现对系统问题的早期预警,从而提升系统的稳定性和可靠性。本文介绍了如何从日志中提取和分析性能指标,并结合代码示例和可视化展示,为开发者提供具体的实践方案。通过从日志中提取性能指标,开发者可以快速发现系统潜在问题,并采取措施提升系统的稳定性。本文提供了具体的日志格式设计、数据提取与分析方法,以及可运行的示例代码,帮助开发者更高效地利用日志。原创 2025-01-13 20:31:44 · 1240 阅读 · 0 评论 -
如何科学评估与选择新版本 Python 编程语言和工具
随着技术的快速发展,编程语言和软件工具不断推出新版本,带来了诸多新功能和改进。然而,选择是否采用这些更新涉及多个方面:项目兼容性、性能提升、学习成本等。本文将探讨如何科学地评估新版本的适用性,提出具体的选择标准,并展示通过 Demo 如何有效利用新版本的功能提升开发效率。通过科学评估新版本的功能改进、兼容性及团队适配性,开发者可以更高效地选择合适的技术工具和语言版本。利用实际项目示例可以快速验证新版本的优势,为团队协作和项目交付带来更多价值。评估维度内容功能改进新功能是否符合项目需求?解决了哪些问题?原创 2025-01-02 23:34:17 · 1334 阅读 · 0 评论 -
如何理解和运用单一职责原则(SRP)来优化架构设计?
单一职责原则(Single Responsibility Principle, SRP)是面向对象设计的重要原则之一,其核心思想是每个模块或类应该只有一个职责。违反该原则的代码通常难以维护和扩展,尤其是在 AI 系统架构中。本文将阐述单一职责原则的基本概念,并结合 Python 示例展示如何在 AI 架构设计中应用该原则,以实现更高效的模块化设计。单一职责原则要求每个类或模块只有一个明确的功能职责。更新一个功能时可能会意外破坏其他功能。单元测试难以覆盖全部代码逻辑。原创 2024-12-08 09:00:00 · 879 阅读 · 0 评论 -
从视觉到雷达:多模态感知如何引领自动驾驶安全革命
本文探讨了多模态感知技术在自动驾驶中的应用,包括视觉、雷达和超声波数据的融合。通过对这些感知数据的结合处理,提升自动驾驶系统在复杂环境中的感知能力和决策精准性。文章还提供了基于此概念的代码实现以及多模态数据融合的实际应用案例。这是整个代码的核心部分,通过继承 PyTorch 的nn.Module,定义了一个用于多模态感知数据融合的神经网络模型。图像处理分支(使用卷积神经网络(CNN)提取图像特征。特征提取流程:卷积层 → 激活函数(ReLU) → 池化层 → 全连接层。原创 2024-12-06 17:13:59 · 1378 阅读 · 0 评论 -
如何利用多线程提高计算密集型任务的性能
多线程编程可以充分利用多核处理器的计算能力,从而显著提高计算密集型任务的性能。本篇文章将介绍多线程编程的基本概念和原理,如何判断任务是否适合使用多线程,以及在多线程编程中需要注意的关键问题。我们还将讨论如何设计和实现高效的多线程计算密集型任务,并提供一个可运行的示例代码模块。多线程编程可以显著提高计算密集型任务的性能,但也需要处理线程同步、死锁和资源竞争等问题。通过合理设计任务分解、使用线程池和同步机制,可以实现高效的多线程计算密集型任务。原创 2024-09-27 09:53:33 · 1445 阅读 · 2 评论 -
基于 Python 构建网页版年终海报模板
在创建一个网页版年终海报模板的过程中,我们将使用 Python 的 Flask 作为后端 Web 框架,Jinja2 作为模板引擎,以及 HTML、CSS 和 JavaScript 构建前端界面。这个项目的目标是通过一个简洁而灵活的方式,让用户选择不同的主题,并根据选择生成相应的年终海报。这个项目的核心是在 Flask 中定义了两个路由,一个用于显示主页,另一个用于接收用户选择的主题并生成相应的海报。使用 Jinja2 模板引擎在 HTML 中嵌入了动态内容,比如主题选择表单。原创 2024-01-09 16:10:35 · 1898 阅读 · 9 评论 -
python IO编程之文件读写
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。文件读写读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(...原创 2019-07-19 16:29:58 · 273 阅读 · 0 评论 -
python IO编程之StringIO和BytesIO
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。StringIO很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO顾名思义就是在内存中读写str。要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:from io import StringIOf = StringIO()print f.write('hell...原创 2019-07-19 16:30:44 · 254 阅读 · 0 评论 -
python 面向对象高级编程之使用元类
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。比方说我们要定义一个Hello的class,就写一个hello.py模块:class Hello(object): def hello(self, name='world'): print('Hello...原创 2019-07-19 16:29:09 · 228 阅读 · 0 评论 -
python 面向对象高级编程之使用枚举类
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。使用枚举类当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2MAR = 3...NOV = 11DEC = 12好处是简单,缺点是类型是int,并且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python...原创 2019-07-19 16:28:20 · 256 阅读 · 0 评论 -
python 面向对象高级编程之定制类
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。定制类看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了,len()方法我们也知道是为了能让class作用于len()函数。除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。str我们先定义...原创 2019-07-18 11:08:58 · 224 阅读 · 0 评论 -
python 面向对象高级编程之多重继承
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。多重继承继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。回忆一下Animal类层次的设计,假设我们要实现以下4种动物:Dog - 狗狗;Bat - 蝙蝠;Parrot - 鹦鹉;Ostrich - 鸵鸟。如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次:但是如果按照“能跑”和...原创 2019-07-18 11:08:13 · 249 阅读 · 0 评论 -
python 面向对象高级编程之使用@property
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。使用@property在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.score = 9999这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在...原创 2019-07-18 11:07:23 · 226 阅读 · 0 评论 -
python 面向对象高级编程之使用__slots__
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。使用__slots__正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:class Student(object): pass然后,尝试给实例绑定一个属性:s = Student()s.name = 'Michael...原创 2019-07-18 11:06:18 · 264 阅读 · 0 评论 -
python 面向对象编程之实例属性和类属性
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。实例属性和类属性由于Python是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过self变量:class Student(object): def __init__(self, name): self.name = names = Student('Bob')...原创 2019-07-18 11:04:58 · 364 阅读 · 0 评论 -
python 面向对象编程之获取对象信息
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。获取对象信息当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?使用type()首先,我们来判断对象类型,使用type()函数:基本类型都可以用type()判断:print type(1234)print type('str')print type(None)运行结果:<type 'int...原创 2019-07-17 16:27:30 · 283 阅读 · 0 评论 -
python 面向对象编程之继承和多态
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。继承和多态在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印:class ...原创 2019-07-17 16:26:04 · 273 阅读 · 0 评论 -
python 面向对象编程之访问限制
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。访问限制在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性:bart = Student('Bart Simpson', 59)print bart.scor...原创 2019-07-17 16:25:15 · 222 阅读 · 0 评论 -
python 面向对象编程之类和实例
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。类和实例面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。仍以Student类为例,在Python中,定义类是通过class关键字:class Student(objec...原创 2019-07-17 16:22:59 · 272 阅读 · 0 评论 -
python 模块的使用
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。模块使用Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。我们以内建的sys模块为例,编写一个fbyHello的模块:#!/usr/bin/env python2# -*- coding: utf-8 -*-' a test module '__author__ = 'Zhan Fei...原创 2019-07-16 16:40:45 · 249 阅读 · 0 评论 -
python 函数式编程之偏函数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。偏函数Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:int()函数可以把字符串转换为整数,当仅传入...原创 2019-07-16 16:40:12 · 217 阅读 · 0 评论 -
python 函数式编程之装饰器
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。装饰器由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。def now(): print ('2019-6-24')f = nowf()运行结果:2019-6-24Process finished with exit code 0函数对象有一个__name__属性,可以拿...原创 2019-07-16 16:39:28 · 234 阅读 · 0 评论 -
python 函数式编程之匿名函数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。匿名函数当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:print list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6...原创 2019-07-11 17:59:57 · 401 阅读 · 1 评论 -
python 函数式编程之返回函数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。返回函数函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但...原创 2019-07-11 17:52:31 · 254 阅读 · 0 评论 -
python 函数式编程之高阶函数sorted
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。高阶函数sorted排序算法排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。Python内置的sorted()函数就可以对list进行排序:pr...原创 2019-07-03 15:09:46 · 236 阅读 · 0 评论 -
python 函数式编程之高阶函数filter
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。高阶函数filterPython内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:de...原创 2019-07-03 15:08:55 · 360 阅读 · 0 评论 -
python 函数式编程之高阶函数map/reduce
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。高阶函数map/reducePython内建了map()和reduce()函数。我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2...原创 2019-07-03 15:08:03 · 232 阅读 · 0 评论 -
python 高级特性之迭代器
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。迭代器我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。可以使用isinstanc...原创 2019-07-02 17:38:38 · 253 阅读 · 0 评论 -
python 高级特性之生成器
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。生成器通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样...原创 2019-07-02 17:37:56 · 176 阅读 · 0 评论 -
python 高级特性之列表生成式
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。列表生成式列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):list(range(1, 11))运行结果:[1, 2, 3...原创 2019-07-01 17:22:24 · 306 阅读 · 0 评论 -
python 高级特性之迭代
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。迭代如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for … in来完成的,而很多语言比如C语言,迭代list是通过下标完成的,比如Java代码:for (i=0; i<list.length; i++) {...原创 2019-06-27 17:04:10 · 245 阅读 · 0 评论 -
python 高级特性之切片
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。取一个list或tuple的部分元素是非常常见的操作。比如,一个list取前3个元素,应该怎么做?笨办法如下:L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']print(L[0], L[1], L[2])运行结果:Michael Sarah TracyProcess fi...原创 2019-06-24 14:31:22 · 355 阅读 · 0 评论 -
python 递归函数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出:fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x ...原创 2019-06-24 14:30:19 · 390 阅读 · 0 评论 -
python 加载线上图片
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。此前分享的方法只适用于显示png格式的图片,这篇文章来分享一个加载线上图片的功能。首先引入包import iofrom PIL import Image, ImageTk显示图片代码:try: # Python2 import Tkinter as tk from urllib2 import u...原创 2019-05-14 11:29:54 · 969 阅读 · 0 评论 -
python 九九乘法表
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。九九乘法表定义了一个函数multiplicationOne,其思路同C/C++语言通用实现方法类似,使用两层for循环,外层控制行的转换,内层控制列的口诀输出,代码如下:def multiplicationOne(): for i in range(1, 10): for j in range(1, i ...原创 2019-04-26 10:36:47 · 722 阅读 · 0 评论 -
python 函数的关键字参数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。关键字参数可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:def person(name, age, **kw): print ('name:', name, 'age:', ...原创 2019-04-23 15:47:02 · 2140 阅读 · 0 评论 -
python 判断数字是奇数还是偶数
代码如下:while True: try: num=int(input('输入一个整数:')) #判断输入是否为整数 except ValueError: #不是纯数字需要重新输入 print("输入的不是整数!") continue if num%2==0: print('偶数') else: ...原创 2019-04-23 11:10:55 · 51335 阅读 · 6 评论 -
python 获取当前时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。当前时间-时间戳#!/usr/bin/python# -*- coding: UTF-8 -*-import time; # 引入time模块ticks = time.time()print "当前时间戳为:", ticks运...原创 2019-04-23 11:08:54 · 26714 阅读 · 0 评论 -
python 函数的可变参数
python学习笔记,特做记录,分享给大家,希望对大家有所帮助。可变参数在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。在定义函数之前需要先引入math包,并允许后续代码引用math包里的sin、cos等函数:impor...原创 2019-04-19 14:16:37 · 1130 阅读 · 0 评论