公开课观后感:密歇根大学python for everyone
从2024年1月17日到2024年8月20日,终于将密歇根大学的python for everyone的python公开课跟完。站在一月份规划的时刻来看,比我想象中花费的时间更多,我当时肯定没有想到要花上整整七个月的时间才能将这个公开课的内容看完,毕竟这个公开课时python的基础课程,而python在各类编程语言中的难度并不大,其作为解释性语言,语义相对容易理解。
而站在今天的角度来看,将这门课按照年初计划完整的、扎实的学习,真是令人欣慰与感慨。很不容易,在上班之后,其实个人时间并不是那么的充裕,我欣慰于自己有勇气、有毅力能够始终坚持自己的原则。
说回这门课,最主要的特点是包含着大量的上机实践,它可以帮助我们有效的检验对学习内容的理解程度。也正因为如此,它相当的平衡了输入和输出两方面,在完成上机实验的过程中,需要花费大量的时间,这也是为什么我最终用了七个月才完成此公开课的学习。值得一提的是,每一个领域的学习都最好能够按照这门课的模式,找到好的输出途径,之后要优先选择能够有输出反馈的课程,如果没有,则应该思考如何构建。
基本课程内容
在学习这门公开课之前,我有过将近两年的python使用经历,不过仅限于给自己的论文画图,从开源渠道获得的主框架代码,个人日常就是修改一下参数,调整图形的大小、颜色、样式等。在当时的需求下,我不需要对python有更多的了解,以至于我甚至不掌握python的基本数据结构,每次都要依靠百度来解决一些基本问题。这种现学现用的模式可以应急解决一些迫切的问题,却没办法写出鲁棒、整洁、优雅的框架去解决复杂的问题。因此我选择跟一门公开课去学习python的基础知识。
这次通过对公开课完整的学习,较为全面的掌握了python的基础内容。
基本数据结构
基本数据类型:int、String等,和python特有的数据类型:列表list、字典dict、集合set、元组tuple。
String类型。由于python会涉及到各种数据的处理,因此string的使用非常重要。之前不了解但现在掌握的几种string 的方法,比如strip用于取出字符后的空格,split用于字符的分割,startswith和endswith用于判断字符的起始或结束。除此以外,string类型还有许多其他方法,非常有用。这里也侧面印证了python非常适合用于处理数据。
List列表,列表数据结构就像是排列好的储物柜,可以放各种数据,甚至是另一个列表。要检索数据就必须遍历查找所有的储物柜去比较。可以使用自编号的数字去获得相应位置的数据。
Dict字典,像是标记好姓名的储物柜,用户可以直接通过key去锁定所需要使用的储物柜,如果直接用D[key]去检索,不存在key的情况下会报错,因此也可以采用get方法。Tuple元组则是不可变更长度的储物柜,它适用于数据不变的场景,空间利用率高,速度也快。Set集合则是去除相同元素的数据结构,用于不需要重复项的场景。
正则表达式
用于文本字符的匹配和搜索。正则表达式是一个较为复杂的领域。需要用额外的篇幅去写。
循环
分为有限次循环for和无限次循环while。
Try-except框架
在编程的过程中,不可避免的出现各种bug。解决bug需要快速的定位错误的位置,因此可以采用try-except框架。这个框架可以方便的捕捉和定位运行的错误,提高程序的鲁棒性。如果加入continue,还可以形成捕捉报错、跳过错误的框架。
Try-except-finally,可以在finally加上必须要执行的语句。
Function函数
将一些常用的计算、处理封装成特定的函数,可以提高代码的简洁和可读。
使用方法是def funciton_name_xx(args)
文件读取
这算是一个基本的功能。
使用open打开,每一行作为一个string来处理。
常用的打开为:With open(filename,’r’) as f
典型的python应用
目的是为了将之前介绍的python基本功能给串联起来,形成一个小的面向日常需求的项目。
网络连接
网络连接模型可分为几个模块:创建socket,建立连接,请求,解析数据。

网络链接可以用socket库,urllib库
Socket库。Socket库的使用模型为:创建socket,建立连接,发送请求,接收返回数据,解析数据。
Urllib库。可以直接用在打开一个网页,urllib.request.open(‘www.url.com’)
数据解析。对于不同类型的返回数据,需要用不同的库进行解析,举例来说,html格式可用beautifulsoup解析;Xml可用xml.etree.ElementTree解析;json可用json.loads解析。
面向对象编程
将对象作为一个类来定义,包含属性和方法。通过类的方式,可以显著的减少代码的数量,提高可读性,降低修改维护成本。
定义一个类,类中包含数据结构,和各种方法。这能够将数据和方法都封装到特定的类中。
可以使用类封装的方法实现数据的跨模块使用,这比通过参数传入和传出要简洁。
Class MyClassName
数据库操作
关系型数据库就是行列二维数组,列为对象的属性,行为对象。这种存储数据结构有时会比较稀疏,空间利用率不高,但是其结构明确、检索性能高。
本节介绍python与数据库之间的交互,以sqlite数据库为例。Python的数据库连接功能分为几个模块:
Connect连接,建立游标cursor,执行excute,查询数据fetchall。

简单介绍了sql结构化数据库中的关联表应该如何设计。表的主键primary key,具有唯一性,外键foreign key用于和其他表的关联。一个表的外键,是另一个表的主键。
表和表之间的关系有多对一,多对多。多对一的两个表关系较为容易处理,直接用一表的主键,作为多表的外键。多对多关系较为复杂,可以构造一个额外的表,用于存储两个表的主键对主键关系。
数据可视化
这里介绍了几个项目,算是把之前的介绍的内容都串联起来。简单来说,涉及到了(1)spider去网络上爬取数据,(2)文本处理程序处理字符串,做数据过滤,(3)用数据库存储数据,(4)算法类处理数据,(5)数据输出为js可显示的格式,(6)js显示网页。
结尾
Dr.Chunk友人在最后结尾给的几个生活建议,还挺有意思。4P,Passion-purpose-persistence-playfulness,激情、目标、坚持、有趣。前三个比较常见,在很多的书籍中可以见到,最后一个有趣就很好玩。在东方人生哲学里,讲究的是路漫漫其修远兮,吾将上下而求索,过程是苦行僧式的磨练,或者朝闻道夕可死也,关注最后结果的美妙。过程中的快乐,不仅很少为我们所关注、所推崇,而且往往是被批判、被打压的对象。
相关文章:
公开课观后感:密歇根大学python for everyone
从2024年1月17日到2024年8月20日,终于将密歇根大学的python for everyone的python公开课跟完。站在一月份规划的时刻来看,比我想象中花费的时间更多,我当时肯定没有想到要花上整整七个月的时间才能将这个公开课的内容看完,毕竟这个…...
goweb框架-gin
文章目录 Gin框架概览Gin框架的特点Gin框架的安装和基本使用安装基本使用 路由系统路由的基本概念Gin框架路由的特点 Radix Tree(基数树)基数树的定义和原理基数树在Gin框架中的应用节省空间的优化动态路由和通配符处理 路由树的构建注册路由的过程路由树…...
2024年接口测试高频面试题及答案
1. 什么是接口测试? •接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求 •测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系 2. 为什么要做接口…...
ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(8)
接前一篇文章:ESP32-C3在MQTT访问时出现“transport_base: Poll timeout or error”问题的分析(7) 前边几回分析了笔者在MQTT测试时所遇到的问题: 最终定位到了是由于components\components\tcp_transport\transport_ssl.c的base_poll_write函数中调用的select函数超时返回…...
Linux: 忘记密码的解决方法,passwd
https://www.redhat.com/sysadmin/recover-root-passwd 这里的方法很简单,就是通过console进去,添加一个启动参数,加载sysroot,然后用passwd命令修改密码。这个是RHEL7适用。 https://access.redhat.com/solutions/1192 这个是提…...
36. 有效的数独【 力扣(LeetCode) 】
一、题目描述 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图…...
机器学习中的没有免费午餐定理
嘿,各位机器学习的爱好者们!今天,让我们一起深入探讨机器学习中那个神秘而又重要的概念——没有免费午餐定理。 一、定理引入:探索算法森林的钥匙 在广阔无垠的机器学习领域中,免费午餐定理就如同一把神奇的钥匙&…...
高级java每日一道面试题-2024年8月21日-框架篇[Spring篇]-使用IOC容器应该注意哪些?
如果有遗漏,评论区告诉我进行补充 面试官: 使用IOC容器应该注意哪些? 我回答: 1. 理解IOC的基本概念 控制反转:在传统的编程模式中,程序会主动控制依赖关系的创建和管理。而在IoC容器中,这种控制权被反转给了容器本身。程序员只需要声明…...
LLM训练推理相关概念
1. 有监督微调(Supervised Fine-Tuning)与指令微调(Instruction Fine-Tuning)对模型参数的影响 **有监督微调(Supervised Fine-Tuning, SFT)和指令微调(Instruction Fine-Tuning, Instruct-Tun…...
IP in IP 协议
IP in IP 是一种多重IP协议,即:客户机可以发送一个IP协议内部在嵌套一个IP协议到某个特定的主机上,在由具体的主机作为路由进行转发的协议。 例如: IP in IP帧协议结构为,第一层为发送到IP in IP 路由主机的报文&…...
DAY2: HTTP请求报文和响应报文是怎样的,有哪些常见的字段?| HTTP有哪些请求方式?| GET请求和POST请求的区别
目录 HTTP请求报文和响应报文是怎样的,有哪些常见的字段? 请求报文 响应报文 HTTP有哪些请求方式? GET请求和POST请求的区别 HTTP请求报文和响应报文是怎样的,有哪些常见的字段? HTTP报文分为请求报文和响应报文…...
线性代数:每日一题1/特征值与相似对角化
设A, B 为二阶矩阵,且 AB BA , 则“A有两个不相等的特征值”是“B可对角化"的() A. 充分必要条件 B. 充分不必要条件 C.必要不充分条件 D.既不充分也不必要条件 知识点: 特征向量与特征值的关系 相似矩阵的定义和性质 n阶…...
Android UI:PopupWindow:API
文章目录 类操作 对PopupWindow的操作 创建PopupWindow对象的操作添加并显示PopupWindow的操作移除PopupWindow的操作更新PopupWindow的操作显示内容的相关操作 布局的相关操作进入退出动画的相关操作 Transition设置进入动画的相关操作Transition设置退出动画的相关操作XML设置…...
什么是DevUI?
DevUI是面向企业中后台产品的开源前端解决方案,其设计价值观基于"高效、开放、可信、乐趣"四种自然与人文相结合的理念,旨在为设计师、前端开发者提供标准的设计体系,并满足各类落地场景,是一款企业级开箱即用的产品。 …...
DAY53
作业: 运行1个服务器和2个客户端 实现效果: 服务器和2个客户端互相聊天,服务器和客户端都需要使用select模型去实现 服务器要监视2个客户端是否连接,2个客户端是否发来消息以及服务器自己的标准输入流 客户端要监视服务器是否发来…...
python中len是什么
Python len() 方法返回字符串长度。 len()方法语法: len( str ) 返回值: 返回字符串长度。 以下实例展示了len()的使用方法: #!/usr/bin/python str "this is string example....wow!!!"; print "字符串长度: ", len…...
推荐一个开源的kafka可视化客户端GUI工具(Kafka King)
大佬的博客地址: https://blog.ysboke.cn/posts/tools/kafka-king Github地址: https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表(完成)支持PLAINTEXT、SASL PLAINTEXT用户名密码认证(完…...
day 10 贪心算法
455. 分发饼干 饼干从大的开始利用,优先满足胃口大的; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int res0;int indexs.size()-1;for…...
网络安全审计技术原理与应用
网络安全审计概述 概念 定义:对网络信息系统的安全相关活动信息进行获取、记录、存储、分析和利用的工作 作用:建立“事后”安全保障措施,保存网络安全事件及行为信息,为网络安全事件分析提供线索及证据,以便发现潜在网络安全威胁行为,开展网络安全风险分析及管理 常…...
计算机网络之TCP序号,确认序号和报文传输时间
开篇提示 本篇适合于了解基础知识,进行扩展提高的使用,附带考研习题以及解析。 TCP序号和确认序号的区别 TCP首部中有序号和确认序号,他们都是4个字节(4B),且在数据传输中有很重要的意义,那么两…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
