- 博客(18)
- 收藏
- 关注
原创 Lecture 19 Attribute
摘要: 本文介绍了Python中的类属性和对象属性,重点区分两者的使用场景及特性。类属性(如interest)由所有实例共享,可通过类直接修改;对象属性则属于特定实例。属性查找遵循"实例优先"原则,未找到时再搜索类属性。方法本质上是类属性中的函数,通过点表达式调用。通过Account类的存款示例,展示了属性赋值、查找及方法调用的具体应用,说明实例创建后仍可动态响应类属性的变化。
2025-06-05 11:31:50
320
原创 Lecture 18 Objects
摘要:面向对象编程(OOP)通过将程序组织为模块化对象来提高结构清晰度。对象包含数据(状态)和方法,类作为创建对象的模板。文章以Python的Account类为例,展示了如何定义类、初始化属性(init)和创建方法(deposit/withdraw)。对象通过点表达式调用方法,且状态可修改。类外可动态添加属性,不同对象间可能共享状态(is判断)。将方法封装在类中避免了函数名冲突,体现了模块化优势。内置类如list实际也是通过类实例化实现的。 (150字)
2025-06-04 11:03:31
313
原创 Lecture 17 Generators
摘要:生成器是通过生成器函数创建的特殊迭代器,使用yield而非return返回值。与普通函数不同,生成器函数可多次生成值,执行过程是惰性的,仅在调用时继续执行并保存状态。yield from语法可简化迭代过程,直接生成可迭代对象的所有元素。生成器既保持了迭代器的特性,又通过函数定义提供了更灵活的生成方式,常用于处理序列或递归场景。[150字]
2025-06-03 20:01:39
296
原创 Lecture 16 Iterators
本文介绍了Python中的迭代器概念及其应用。主要内容包括:1) 迭代器的创建与使用,通过iter()和next()访问序列元素;2) 字典迭代器的特点及注意事项;3) for语句与迭代器结合使用时需注意的状态变化;4) 常用的内置迭代函数(map,filter,zip,reversed)及其应用场景;5) 迭代器保持本地状态的特性使其适用于需要单次处理序列元素的场景。文中提供了多个代码示例,如使用reversed()实现回文判断、zip()处理不等长序列等,展示了迭代器在Python编程中的实用价值。
2025-05-29 11:47:55
1840
原创 Lecture 15 Mutability
本节介绍了Python中的对象概念,重点讲解了可变对象及其特性。对象是数据与行为的封装体,通过类(如date类)和点表达式实现访问。字符串、列表、字典都是对象,其中列表和字典具有可变性——修改对象会影响所有指向它的变量名称。使用is运算符可判断对象同一性。文中特别警示了可变默认参数的危险性,并对比了元组(不可变)与字典的特性。最后展示了通过嵌套函数和nonlocal声明创建具有状态的函数(如取款函数),演示了如何保持并修改局部状态。关键点包括:对象封装、可变性原理、同一性判断,以及状态维护技巧。
2025-05-28 22:35:27
800
原创 Lecture 13 Data Abstraction-cn
维护抽象屏障的意义在于:能够更改数据表示而不用改动整个程序,也就是说,我们只需要改动构造器和选择器,其上层我们都不用过于关注构造函数和选择器需要匹配,满足一定的行为条件,就像numer(x) / demon(x) = n / d数据抽象的概念:使用构造器和选择器来定义行为,如果满足行为条件,那么就是有效的,如下,我们更改了构造器和选择器的定义方式,但其上层已经搭好的建筑是不需要考虑的return nreturn d。
2025-05-06 17:05:22
871
原创 Lecture 12 Containers-cn
方框和指针表示法是在环境图中表示列表的一种方法,我们需要这样一种表示方法,因为序列的数据可能会非常复杂,这个复杂来源于列表间的嵌套关系,只要符合封闭属性(Closure Property),一个列表可以放在另一个列表中,封闭允许我们创建分层结构,这个函数接受一系列键,一系列值,以及一个两参数k, v的匹配函数,并返回一个从键到列表的字典,在这个字典中,每个键k,对应的列表包含使得匹配函数为真值的所有v。”键“和”值“的使用是比较随意的,你可以用字符串,数字作为键,或者值,这样都是可以的。
2025-05-06 12:30:24
902
原创 Hw_03
反过来想,我们从1开始递归到n,在return语句中递归调用时传入k+1来实现,这样我们的起点是1,1是奇数,并且在递增过程中始终考虑奇偶性的变化,自然在整个过程中都可以判断奇偶性了。此函数将 odd_func 应用于 1 到 n(包括 n)之间的每个奇数,将 even_func 应用于每个偶数,并返回总和。这个函数的实现逻辑是:创建两个统计到目前总和的函数,分别在奇数位和偶数位起作用,从索引1开始计算,这时我们是知道奇偶的,两个计算总和的函数轮流来计数,直到统计到n再停止。
2025-05-04 11:17:40
1325
原创 Lecture 10 Tree Recursion-cn
递归在解决某些问题中非常有效,这不是while语句实现的迭代功能可以代替的。而递归的书写,需要将复杂问题拆解为基本情况和递归情况。
2025-05-03 10:54:44
747
原创 Lecture 9 ——Recursion-cn
函数有一个很有趣的性质,可以在它的作用域范围内调用自己本身。递归函数就是在它的主体内直接或间接调用自身的函数。
2025-05-01 21:11:19
893
原创 C++模板练习
涉及到主函数外有多个定义需要实现(类,函数),先在主函数内勾勒出大体框架,如输入,计算,输出,在心中构想大致需要实现那些功能,化整为零。一个功能实现后,在接下来的编码过程中,用到该功能时,就不要再去思考其中的细节部分,只需要注意它起到的功能和用法即可。将一个复杂的思路包装起来,抽象到上一层。这样可以减轻思想的负担。
2025-05-01 10:24:34
677
原创 C++算法——归并排序的思路与代码实现
归并排序的基本思想也是分治,将待排数组分为均等两段,对这两端数组进行递归排序(递归的尽头是数组长度为1,这样自然是有序数组),之后将有序的两个数组归并到新数组中。
2025-04-09 11:11:22
354
原创 C++算法——快速排序的思路与代码实践,时间复杂度概述
快速排序是一种快速排列一组数字的经典算法之一,它的时间复杂度为O(n log n),但实际上相较于其他时间复杂度同样为O(n log n)的排序算法(例如堆排序,归并排序)它的实际速度最高。
2025-04-07 20:59:26
793
原创 C++算法———高精度乘法的思路和代码实现
我们一般说高精度乘法,指的是一个大整数(指数位len<10^6),与一个较小的整数相乘(1000,10000)。高精度乘法通过模拟乘法行为来实现,和高精度加法比较类似,区别就是从单纯的0或1变为比较大的数字。
2025-04-06 22:07:35
441
原创 C++算法-高精度减法实现,对ASCII码的一些探讨
高精度减法适用于大整数之间的减法运算,通过模拟减法行为(核心是借位)来操作两个数组。在高精度算法这一部分中,存储大整数的方法是一样的,这样方便对大整数进行多次不同的运算。为了方便起见,一般模拟较大数减去较小数,所以传入参数前需要先对两个大整数进行大小判断。如果A < B,就计算B - A,再结果输出前加上一个负号,这样可以避免许多代码实现中的分类讨论问题。
2025-04-05 18:54:48
286
原创 C++算法—高精度加法的原理与代码实践
高精度加法适用于大整数,即科学计数法指数位 len < 10^6,这个长度,在c++中不可以再去用long类型,int类型去存储以及运算。为了满足实际需要,使用数组来存储大整数,并模拟加法的行为创建一个新的功能,这就是高精度加法。
2025-04-04 22:13:52
422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅