- 博客(17)
- 收藏
- 关注
原创 IPython 的使用
IPython 是增强的交互Python。比python自带的交互,以及IDLE 要强大得多。开发场景中,或者用PyCharm开发大段的、整个的项目,或者用IPython (Jupter Notebook) 做短平快的尝试。安装后,可以看到它的帮助文档。
2024-10-21 19:56:14
214
原创 Python 通过装饰器实现对函数执行时间的打印
在Pytest里面用使用了大量的装饰器,从而实现对一个基础Test Case(测试函数),通过赋予不同的输入参数实现不同Case的执行,或者记录测试结果(mark),或者做到Startup, teardown的作用(fixture)。在我们写程序过程中,也可以自己创建装饰器,来实现对函数或类的各种增强。本文用一个例子,打印函数的执行时间,来做个说明。这样就实现了工程中debug阶段对性能的初步判断,而不必在每个函数中都写重复的代码。Python 的装饰器属于Python的进阶概念,一般用于装饰函数和类。
2024-10-21 10:02:11
244
原创 Python中线程实践的一些探索
利用 threading package,threading.Lock.acquire() 和 threading.Lock.release() 方法,对某些关键变量访问的限制(锁),可以实现。遇到一个题,要求分3个线程,每个调用一个方法,实现0 1 0 2 0 3 0 4 0 5...这样的标准输出。豆包AI 提供了用threading.condition 这样比较高级的调用。结果在屏幕上秒出,应该是毫秒级别的。找了半天,没有解决。计算得知需要5秒多。
2024-09-29 09:33:00
198
原创 二叉树的遍历-- 使用顺序存储(也就是用列表)和链式存储(对象)
二叉树的遍历(Traversal)是指沿着某条搜索路线,依次对树中的每个节点做一次且仅做一次的访问。二叉树(Binary Tree)是指树中节点的度不大于2的有序树(左子树先于右子树)分为先序遍历,中序遍历,后序遍历。
2024-09-24 17:55:32
247
原创 斐波那契数列实现的几种写法---分析递归、迭代器、生成器、暴力解法的优劣
实际上,对于这种简单问题,这种实现是为了说明迭代器、生成器的基本使用方法。如果考虑到在编程中就事论事地解决问题。我们还是迭代和直接推算等方法。如果n 很大,迭代方法最不可取,因为占用大量栈空间,而且是一次算完。其次是直接暴力解法,而迭代器,生成器是基于单值, 貌似可控一些吧。前面有篇文章,描述了斐波那契数列,如何用迭代器或生成器来生成。
2024-09-20 19:57:26
280
原创 Python中 递归(Recursion)的使用浅析
对于简单的迭代,比如阶乘、斐波那契数列,用递归函数可以,但是不如迭代器、生成器高效,因为它们的本质是执行一次后停下再按要求执行下一次,而递归调用的本质是不断压栈,会占用大量的栈空间,如果递归深度过大(例如处理大规模数据或者复杂的递归结构时),可能会导致栈溢出错误。如果没有正确设置递归基例,递归函数将无限地调用自身,直到耗尽系统资源(如栈空间),导致程序崩溃。的情形,比如阶乘,树的深度等的程序设计情形,是使用递归的场景。类似功能的实现,在Python里面有迭代器和生成器(以类或函数为基础的单值生成器)。
2024-09-19 12:11:55
586
原创 Python 中Collections 库的使用
说 -- “这个模块实现了一些专门化的容器,提供了对 Python 的通用内建容器。类似列表的容器,但 append 和 pop 在其两端的速度都很快。一个工厂函数,用来创建元组的子类,子类的字段是有名称的。字典的子类,通过调用用户指定的工厂函数,为键提供默认值。类似字典的类,用于创建包含多个映射的单个视图。字典的子类,能记住条目被添加进去的顺序。是Python的数据容器类。封装了字符串对象,简化了字符串子类化。封装了字典对象,简化了字典子类化。封装了列表对象,简化了列表子类化。
2024-09-03 16:42:53
292
1
原创 Python多线程,3 -- 最常用的,继承threading.Thread, 如果需要的话重写run()
从threading.Thread类派生子类,将线程相关代码放在这个子类里面,而且。这和之前用过的C++ pthread 貌似是一致的。
2023-06-01 18:00:53
246
原创 Python多线程,2 -- 提高型, threading 模块
在上篇文章中提到了基础型的_thread模块,用起来需要用户手动保障线程在主程序前执行完毕,通过延时(或等待输入)、锁和锁释放这种方式。相比而言,threading 模块使用起来更加方便。
2023-06-01 16:12:39
203
原创 Python多线程,1 -- 基础型, _thread 模块
需要注意的是,当使用strart_new_thread() 启动线程运行特定函数,必须注意有措施保障它在主程序完结前运行完成,否则主程序退出时,线程函数还没来得及执行。例如_thread,注意python2中这个模块称为thread,在python3中改名为。以前在C++中用过多线程pthread,现在尝试一下Python中的多线程(multi thread)的定义如下,可以承载一个函数,并传递其元组和字典格式的参数。只有把最后两行选择一行去掉注释,才会得到期望的执行结果,如下图。
2023-06-01 12:16:40
290
原创 Python中判断数据类型
4. 针对string, 它自身有不少相应的判断函数。3. 以上对于float, string 也类似。python中判断数据类型非常简单。中直接用内建函数type()来判断,依然在IDLE中举例。2. 代码中就可以用。
2023-05-30 10:52:32
4074
1
原创 进程间通信 Inter-process communication
进程间通信有多种方式,经历过的有message queue,socket,share memory, signal等等。看到一位大神把维基百科直接翻译了一下,觉着有用,引用一下,备忘。
2023-05-29 18:25:14
145
1
原创 Python: Socket编程举例 (和C/C++ socket 编程类似)
对编程而言,Socket是底层网络接口。简而言之,对, Socket 就是主机(主机名或者IP地址)加上端口号,是计算机开发者对传输层协议(TCP/UDP)等的封装实现。注意: 如果是对, Socket 就是 (host, port, flowinfo, scope_id)参见。
2023-05-08 18:06:25
321
1
原创 Python: 如何用Python的迭代器或生成器实现斐波那契数列
是指这样一个数列:1,1,2,3,5,8,13,21,34,55,89...这个数列从第3项开始,每一项都等于前两项之和。斐波那契数列的定义者,是意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci))。因数学家莱昂纳多·斐波那契(以兔子繁殖为例子而引入,故又称为”兔子数列“。斐波那契数列又称黄金分割数列,n越大,相邻两值的比越接近黄金分割0.618,非常有趣。百度百科上有这个数列的详细介绍斐波那契数列应用广泛。
2023-04-28 12:20:32
697
1
原创 Python 迭代器和生成器的本质
Python 的迭代器和生成器是初学者比较挑战的两个概念。本质而言,都是为了节省内存、加快速度(尤其是为大规模的计算),从而迭代(迭代就是循环的意思)生成一次单值结果,一步步迫进到最终的结果。rt: #因为 RightTriangle 是可迭代的,所以可以这么写。
2023-04-27 20:29:31
147
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人