Python内置方法和属性应用
1. 前言python除了丰富的第三方库外,本身也提供了一些内在的方法和底层的一些属性,大家比较常用的如dict、list、set、min、max、range、sorted等。笔者最近在做项目框架时涉及到一些不是很常用的方法和属性,在本文中和大家做下分享。 2. 内置方法和函数介绍 enumerate 如果你需要遍历可迭代的对象,有需要获取它的序号,可以用enumerate, 每一个next返回的是一个tuple 12345678list1 = [1, 2, 3, 4]list2 = [4, 3, 2, 1]for idx, value in enumerate(list1): print(idx, value, list2[idx])# 0 1 4# 1 2 3# 2 3 2# 3 4 1 zip zip从参数中的多个迭代器取元素组合成一个新的迭代器; 12345678# 给list加上序号b = [4, 3, 2, 1]for i in zip(range(len(b)), b): print(i)# (0, 4)# (1, 3)# (2, 2)...
怎么修改Logic K580的快捷键
怎么修改Logic K580的快捷键在使用Logic K580键盘的时候有时候会想要切换到默认的快捷键,使用如下的方法: 使用右边的Fn键+ESC键切换
Python学习之整数比较
最近学习python,发现整数比较时一个有趣的现象: 12345678910111213141516a = 256b = 256print id(a)print id(b)print(a == b)print(a is b)print(id(a) == id(b))print(id(a) is id(b))c = 257d = 257print id(c)print id(d)print(c == d)print(c is d)print(id(c) == id(d))print(id(c) is id(d)) 在pycharm中运行的结果是: 1234567891011123201910432019104TrueTrueTrueFalse4055042440550424TrueTrueTrueFalse 而在Python IDE中运行: 1234567891011121314151617181920>>> a = 256>>> b = 256>>> a == bTrue>>> a is bTrue>&...
Python面向对象编程
1. Python 面向对象编程面向对象程序设计思想,首先思考的不是程序执行流程,它的核心是抽象出一个对象,然后构思此对象包括的数据,以及操作数据的行为方法。 本专题主要讨论面向对象编程(OOP)的基础和进阶知识,实际开发模型中OOP的主要实践,尽量使用最贴切的例子。 2. 基础专题2.1. 类定义动物是自然界一个庞大的群体,以建模动物类为主要案例论述OOP编程。 Python语言创建动物类的基本语法如下,使用class关键字定义一个动物类: 12class Animal(): pass 类里面可包括数据,如下所示的Animal类包括两个数据:self.name和self.speed: 1234class Animal(): def __init__(self,name,speed): self.name = name # 动物名字 self.speed = speed # 动物行走或飞行速度 注意到类里面通过系统函数__init__为类的2个数据赋值,数据前使用self保留字。 self的作用是指名这两个数据是实例上的,而非类上的。 ...
Test with Coverage
前几天,听了公司某位大佬关于编程心得的体会,其中讲到了“测试驱动开发”,感觉自己的测试技能薄弱,因此,写下这篇文章,希望对测试能有个入门。这段时间,笔者也体会到了测试的价值,一句话,学会测试,能够让你的开发更加高效。 本文将介绍以下两个方面的内容: Test with Coverage Mock 0.1. Test with Coverage测试覆盖率通常被用来衡量测试的充分性和完整性。从广义的角度讲,主要分为两大类:面向项目的需求覆盖率和更偏向技术的代码覆盖率。对于开发人员来说,我们更注重代码覆盖率。 代码覆盖率指的是至少执行了一次的条目数占整个条目数的百分比。如果条目数是语句,对应的就是代码行覆盖率;如果条目数是函数,对应的就是函数覆盖率;如果条目数是路径,对应的就是路径覆盖率,等等。统计代码覆盖率的根本目的是找出潜在的遗漏测试用例,并有针对性的进行补充,同时还可以识别出代码中那些由于需求变更等原因造成的废弃代码。通常我们希望代码覆盖率越高越好,代码覆盖率越高越能说明你的测试用例设计是充分且完备的,但测试的成本会随着代码覆盖率的提高而增加。 在Python中,cover...
Makefile基础
Makefile基础 make 解决的是“按依赖关系增量执行命令”的问题。写 Makefile 的价值,不只是编译 C/C++,更是把项目里的重复构建动作标准化。 1. Makefile 到底在做什么一句话:声明目标、依赖和命令,让 make 决定何时执行。 基本规则: 12target: prerequisites commands 关键点: commands 前必须是 Tab,不是空格。 当依赖比目标“更新”或目标不存在时,命令会执行。 make 默认执行文件中的第一个目标。 2. 一个最小示例123456789101112app: main.o util.o gcc -o app main.o util.omain.o: main.c util.h gcc -c main.c -o main.outil.o: util.c util.h gcc -c util.c -o util.o.PHONY: cleanclean: rm -f app *.o 执行: 12make # 构建 appmake clean # 清理产物 3. 变量:避免重复1...
SPEC file writing - Best Practices
SPEC file writing - Best Practices这篇是 SPEC 系列的“最佳实践清单”。 目标不是再讲语法,而是减少线上踩坑、提升包的可维护性。 1. 头部字段不要留空Summary、License、URL、%description 等信息必须完整。这些信息会直接体现在 rpm -qi 输出里,也是排障和审计的第一入口。 2. 头部字段对齐,降低阅读成本推荐统一列宽对齐: 123456Name: mydaemonVersion: 1.2.0Release: 1%{?dist}Summary: My daemon serviceLicense: MITURL: https://example.com/mydaemon 团队协作里,这种“无功能变化但提升可读性”的规范非常值。 3. 分段清晰,段内紧凑建议: 段与段之间空一行。 段内不要插入无意义空行。 注释聚焦“为什么”,不要重复“做了什么”。 4. 能用宏就不要写死路径避免硬编码 /usr、/et...
Makefile.am的例子
Makefile.am 的例子这篇用“能直接抄走改”的方式,整理 Automake 常见写法。如果你已经会写 Makefile,这篇重点是:如何把规则写进 Makefile.am,再由 Autotools 生成可移植构建系统。 1. 先理解三层关系 configure.ac:定义项目配置逻辑(检测依赖、生成哪些 Makefile)。 Makefile.am:声明各目录编译/安装规则。 configure + make:生成 Makefile.in/Makefile 后执行构建。 一句话:configure.ac 管“配置”,Makefile.am 管“目标与安装”。 2. 最小项目结构示例12345678myapp/ configure.ac Makefile.am src/ Makefile.am main.c include/ myapp.h 顶层 configure.ac: 123456789AC_INIT([myapp], [1.0.0], [you@example.com])AM_INIT_AUTOMAKE([foreign subdi...
How to write SPEC file
How to write SPEC file 如果说《SPEC 基础知识》解决“能打包”,这一篇解决的是“如何把 SPEC 写得可维护、可扩展、可发布”。 1. 先建立一个正确心智模型打包过程可以拆成三层: 上游构建系统(configure / Makefile)决定“会生成哪些文件”。 SPEC 的 %install 决定“这些文件安装到 %{buildroot} 的哪个路径”。 SPEC 的 %files 决定“最终哪些文件进入哪个 RPM 包”。 核心结论:SPEC 不负责创造文件,只负责组织和选择文件。 2. 从 Makefile 安装路径到 %files 的映射假设上游项目里有: 12scriptdir = $(libexecdir)/mydaemon/scriptsscript_SCRIPTS = conf/a.sh conf/b.sh conf/c.sh 执行 make install DESTDIR=%{buildroot} 后,文件会进入: 1%{buildroot}%{_libexecdir}/mydaemon/scripts/ 在 SPEC 中...
SPEC 基础知识
SPEC 基础知识 写 RPM 包的核心,不是命令多复杂,而是把“构建过程”和“最终安装内容”写清楚。 这篇文章以 rpmbuild 为主线,整理一份可直接落地的 SPEC 入门指南。 1. SPEC 文件是什么SPEC 是 RPM 的打包脚本与元数据描述文件。它决定了: 包叫什么、版本是多少。 构建时需要什么依赖。 代码如何编译、安装到临时目录。 最终哪些文件进 RPM 包。 可以理解成:元信息 + 构建脚本 + 打包清单。 2. 最小可用 SPEC 模板123456789101112131415161718192021222324252627282930313233Name: helloVersion: 1.0.0Release: 1%{?dist}Summary: A simple hello packageLicense: MITURL: https://example.com/helloSource0: %{name}-%{version}.tar....


