摘要: 在常见的编程语言如 Python、Go、Java 中,序列的下标都是从 0 开始的,为什么不是从 1 开始呢? 迪杰斯特拉在 1982 年的时候就思考过编号起点的问题,那个时候还没有上面这 3 门语言呢。大概思路如下: 序列下标是连续的整数,首先要考虑的就是怎么用区间范围表示连续的整数,形如 a < 阅读全文
posted @ 2024-11-07 19:39 zikcheng 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 函数定义中的参数也就是形式参数,规定了在调用函数时如何传递实际参数以及这些参数有无默认值。 实参传递方式 def f(a): print(a) 实参传递方式有两种,位置和关键字。对于上面定义的函数 f,形如 f(1) 这种调用是通过位置的方式传参,形如 f(a=1) 这种调用是通过关键字的方式传参, 阅读全文
posted @ 2023-02-13 23:26 zikcheng 阅读(481) 评论(2) 推荐(2) 编辑
摘要: 装饰器是 Python 编程中常用的一个功能,可以将通用的逻辑抽象成装饰器,通过装饰器语法应用到不同的目标上,达到增强或修改目标逻辑的目的。 先来看一个简单的例子 # 打印耗时的装饰器 def log(f): def inner(*args, **kw): start = time.perf_cou 阅读全文
posted @ 2023-02-06 14:53 zikcheng 阅读(362) 评论(1) 推荐(1) 编辑
摘要: 几乎所有的高级编程语言都有自己的垃圾回收机制,开发者不需要关注内存的申请与释放,Python 也不例外。Python 官方团队的文章 https://devguide.python.org/internals/garbage-collector 详细介绍了 Python 中的垃圾回收算法,本文是这篇 阅读全文
posted @ 2023-01-29 11:44 zikcheng 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 生成器的使用 在 Python 中,如果一个函数定义的内部使用了 yield 关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。 我们先来看一个常规函数的定义,下面的函数 f() 通过 return 语句返回 1,那么 print 打印的就是数字 1。 def f(): ret 阅读全文
posted @ 2022-07-09 23:44 zikcheng 阅读(773) 评论(0) 推荐(1) 编辑
摘要: GIL(Global Interpreter Lock),全局解释器锁,是 CPython 为了避免在多线程环境下造成 Python 解释器内部数据的不一致而引入的一把锁,让 Python 中的多个线程交替运行,避免竞争。 需要说明的是 GIL 不是 Python 语言规范的一部分,只是由于 CPy 阅读全文
posted @ 2022-05-28 00:44 zikcheng 阅读(605) 评论(0) 推荐(0) 编辑
摘要: 以源码加图文的方式,深度解析 Python 内存管理器的工作原理 阅读全文
posted @ 2022-05-22 12:43 zikcheng 阅读(2189) 评论(0) 推荐(3) 编辑
摘要: 本文主要介绍了如何在 sorted 函数中自定义比较逻辑,Python 2 中可以通过 cmp 或 key 来实现,cmp 接收 2 个参数,通过返回的数值来判断两个参数的大小,key 重新计算一个新的结果参与比较。在 Python 3 中,考虑到 cmp 的性能和冗余的原因,将其移除了。 阅读全文
posted @ 2021-02-02 01:43 zikcheng 阅读(1970) 评论(0) 推荐(0) 编辑
摘要: 在计算机软件领域,缓存(Cache)指的是将部分数据存储在内存中,以便下次能够更快地访问这些数据,这也是一个典型的用空间换时间的例子。一般用于缓存的内存空间是固定的,当有更多的数据需要缓存的时候,需要将已缓存的部分数据清除后再将新的缓存数据放进去。需要清除哪些数据,就涉及到了缓存置换的策略,LRU( 阅读全文
posted @ 2021-01-24 21:56 zikcheng 阅读(6547) 评论(0) 推荐(1) 编辑
摘要: gitlab-runner 是 Gitlab 推出的与 Gitlab CI 配合使用的持续集成工具。当开发人员在 Gitlab 上更新代码之后,Gitlab CI 服务能够检测到代码更新,此时可以触发一些动作,比如代码测试、编译和部署等,下图简单示意了这个流程。 那么,Gitlab 触发动作的时候是 阅读全文
posted @ 2020-07-21 21:41 zikcheng 阅读(402) 评论(0) 推荐(0) 编辑