Python程序员笑话TOP 9(外行人看不懂的冷幽默)

第一章:Python程序员笑话TOP 9(外行人看不懂的冷幽默)

编程语言中的幽默往往藏在语法细节与开发日常的碰撞中,Python 以其简洁优雅著称,也孕育出一批只有开发者才能会心一笑的冷笑话。以下是精选的九个经典段子,外行人看了可能一脸茫然,而 Python 程序员则会笑出声。

“我明明写了 pass,为什么程序还是没执行?”

pass 是 Python 中的空操作语句,常用于占位。但新手常误以为它能让程序“通过”某个逻辑。

# 这段代码不会报错,但也不会做任何事
if condition:
    pass  # 占位用,表示“以后再写”

“缩进错了,我的人生也错了”

  • Python 用缩进定义代码块,而非大括号
  • 一个空格的偏差都可能导致 IndentationError
  • 资深程序员看到缩进混乱的代码,会本能地颤抖

“None == False?我说了不算”

布尔判断中的经典误会:

if None:
    print("这行永远不会输出")
# 因为 None 在布尔上下文中为 False,但它不等于 False!
print(None == False)  # 输出:False

“列表推导式写成诗”

一行代码完成循环、过滤与映射,美得像诗,读起来像谜。

[x**2 for x in range(10) if x % 2 == 0]
# 生成偶数的平方:[0, 4, 16, 36, 64]

“猴子补丁不是动物园问题”

运行时动态替换方法或属性,名字荒诞但功能强大。

“装饰器套娃到怀疑人生”

函数包装函数包装函数……调用栈深得像俄罗斯套娃。

“GIL:全局解释器锁的爱与痛”

特点说明
单线程优势避免多线程竞争,简化内存管理
多核限制无法真正并行执行 CPU 密集任务

“import this 隐藏的彩蛋”

输入 import this,你会看到 Python 之禅,也是程序员的哲学指南。

“‘I’m not a robot’——但我的脚本是”

自动化脚本跑得太顺,网站却弹出验证码:“检测到异常行为”。

第二章:代码世界的荒诞逻辑

2.1 理解“None等于False但又不等于False”的哲学

在Python中,None 和 False 在布尔上下文中表现相似,但本质不同。这种设计体现了“存在性”与“真值性”的分离。
真值测试中的行为

if not None:
    print("None is falsy")  # 输出:None is falsy

if not False:
    print("False is falsy")  # 输出:False is falsy
上述代码表明两者均为“falsy”值,但在身份比较中完全不同。
身份与相等性的区别
  • None == False 返回 False,因为类型和值均不同;
  • bool(None) 为 False,仅表示其真值性为假;
  • None is False 为假,强调二者是不同对象。
这揭示了Python的哲学:**“空的存在”不等于“逻辑的假”**。

2.2 从“猴子补丁”看动态语言的自由与混乱

什么是猴子补丁?
猴子补丁(Monkey Patching)是指在运行时动态修改类或模块的行为,常见于 Ruby、Python 等动态语言。它赋予开发者极高的灵活性,但也可能引入难以追踪的副作用。
代码示例:Python 中的猴子补丁

class Calculator:
    def add(self, a, b):
        return a + b

# 运行时替换方法
def patched_add(self, a, b):
    print(f"计算中: {a} + {b}")
    return a + b

Calculator.add = patched_add  # 应用猴子补丁
上述代码将 Calculator 类的 add 方法在运行时替换为带日志输出的新实现。参数说明:原方法被完全覆盖,所有实例将共享新行为。
优势与风险并存
  • 优点:无需继承或修改源码即可扩展功能
  • 缺点:破坏封装性,可能导致不同模块间的冲突
  • 调试困难:方法调用链在运行时改变,堆栈信息失真

2.3 装饰器的嵌套地狱:写的是代码还是俄罗斯套娃?

当多个装饰器叠加使用时,代码可读性急剧下降,形成所谓的“嵌套地狱”。理解其执行顺序是避免逻辑混乱的关键。
装饰器的调用顺序
装饰器从下往上应用,但执行逻辑从上往下触发。例如:

@decorator_a
@decorator_b
@decorator_c
def func():
    pass
等价于 func = decorator_a(decorator_b(decorator_c(func)))。这意味着 c 最先包装函数,而 a 最后包装,但在运行时,a 的外层逻辑最先执行。
常见问题与规避策略
  • 过度嵌套导致调试困难
  • 参数传递错乱,尤其是带参装饰器
  • 建议单个函数不超过3层装饰器
合理拆分逻辑、使用类装饰器或中间件模式可有效缓解复杂度。

2.4 列表推导式的优雅与副作用陷阱

简洁语法背后的强大表达力
列表推导式是 Python 中构建列表的高效方式,其语法清晰且接近数学表达。例如,生成平方数列表:
squares = [x**2 for x in range(5)]
# 输出: [0, 1, 4, 9, 16]
该代码等价于传统循环,但更紧凑。表达式 x**2 是输出元素,for x in range(5) 提供迭代源。
隐藏的副作用风险
当推导式中嵌入函数调用或可变对象时,可能引发意外副作用:
results = [[].append(1) for _ in range(3)]
# 结果为 [None, None, None],因 append 返回 None
此处误用了 list.append() 的返回值。此外,若在推导式中修改外部变量,会导致逻辑混乱,破坏函数纯度。
  • 推荐仅用于数据转换,避免包含状态变更操作
  • 复杂逻辑应退回到显式循环以提升可读性

2.5 “import this”背后的反讽与真相

Python 中执行 import this 会输出著名的“Python之禅”,表面看是编程美学的指南,实则暗含对语言设计哲学的反讽与自省。
代码即哲学
# 在交互式环境中输入
import this
该命令加载并打印 Tim Peters 撰写的 19 条设计原则。其本质是一段隐藏的彩蛋(easter egg),通过幽默方式传递 Python 的核心价值观。
矛盾中的真知
  • “优美优于丑陋”——但现实代码常为效率妥协
  • “简单优于复杂”——而标准库却日益庞大
  • “可读性很重要”——然而缩进语法仍引发争议
这些准则并非技术规范,而是理想与实践间的张力写照。它提醒开发者:原则应指导而非束缚工程决策。

第三章:命名与语法的黑色幽默

3.1 为什么变量叫“spam”和“eggs”?——Python文化的起源玩笑

源自蒙提·派森的喜剧传统
Python 社区中“spam”和“eggs”作为占位变量名的使用,起源于英国喜剧团体“蒙提·派森”(Monty Python)的经典小品《Spam》。在该小品中,一家餐馆的菜单几乎每道菜都含有“Spam”罐头肉,反复重复“spam”形成荒诞幽默。 这一文化被 Python 创始人 Guido van Rossum 引入编程社区,成为示例代码中的默认变量名,象征 Python 语言轻松幽默的文化气质。
实际代码中的使用示例

# 经典示例:spam 和 eggs 作为占位符
spam = "Hello"
eggs = 42

print(spam * 3)  # 输出: HelloHelloHello
print(eggs + 10) # 输出: 52
上述代码展示了“spam”和“eggs”作为字符串和整数的典型用法。虽然它们没有实际语义,但在教学和文档中广泛用于避免分散对语法结构本身的注意力。
  • “spam”常用于表示任意字符串或重复操作
  • “eggs”通常代表第二个变量,与“spam”配对使用
  • 这种命名约定降低了初学者的认知负担

3.2 下划线的迷思:单双下划线真的能保护隐私吗?

在Python中,下划线命名约定常被误解为访问控制机制。实际上,它们仅是编码规范,并不强制限制属性访问。
命名约定的三种形式
  • _var:暗示“受保护”,仅供内部使用
  • __var:触发名称改写(name mangling),避免子类冲突
  • __var__:保留给特殊方法,如__init__
名称改写的实际效果
class MyClass:
    def __init__(self):
        self.public = "公开"
        self._protected = "受保护"
        self.__private = "私有"

obj = MyClass()
print(dir(obj))  # 包含 '_MyClass__private'
上述代码中,__private 被改写为 _MyClass__private,防止意外覆盖,但仍可通过该名称直接访问。
名称改写并非安全机制,仅用于避免命名冲突,无法真正保护数据隐私。

3.3 “lambda x: lambda y: x + y”到底在笑什么?

这个看似神秘的表达式其实是函数式编程中的经典技巧——**柯里化(Currying)**。
拆解双层Lambda
add = lambda x: lambda y: x + y
increment = add(5)
print(increment(3))  # 输出 8
第一层 lambda x: 接收参数 x,返回另一个函数;第二层 lambda y: 使用外层的 x 与自身的 y 相加。这利用了闭包特性,使内层函数能访问外部作用域的变量。
应用场景
  • 构建可复用的偏函数,如固定配置项
  • 实现函数组合与管道操作
  • 简化高阶函数调用逻辑

第四章:运行时的意外惊喜

4.1 可变默认参数的“坑”是如何成为段子的

Python 中可变默认参数的“坑”早已成为开发者圈内的经典段子,其根源在于函数定义时默认参数只被求值一次。
问题重现

def add_item(item, target_list=[]):
    target_list.append(item)
    return target_list

print(add_item(1))  # [1]
print(add_item(2))  # [1, 2] —— 非预期!
上述代码中,target_list 在函数定义时创建空列表,后续所有调用共用同一对象,导致状态累积。
正确做法
  • 使用 None 作为默认值哨兵
  • 在函数体内初始化可变对象

def add_item(item, target_list=None):
    if target_list is None:
        target_list = []
    target_list.append(item)
    return target_list
此写法确保每次调用都使用独立的新列表,避免共享可变状态。

4.2 GIL的存在感:多线程的幻觉与真实性能瓶颈

Python 的全局解释器锁(GIL)确保同一时刻只有一个线程执行字节码,这使得 CPython 在 CPU 密集型任务中无法真正利用多核优势。
多线程为何受限
尽管 threading 模块允许创建多个线程,但 GIL 会串行化执行,导致多线程在计算密集场景下性能提升有限。
代码示例:线程竞争GIL

import threading
import time

def cpu_task():
    count = 0
    for _ in range(10**7):
        count += 1

start = time.time()
threads = [threading.Thread(target=cpu_task) for _ in range(4)]
for t in threads:
    t.start()
for t in threads:
    t.join()
print(f"耗时: {time.time() - start:.2f}秒")
该代码创建4个线程执行高强度计数任务。由于 GIL 的存在,线程交替执行,总耗时接近单线程累加,无法实现并行加速。
GIL影响对比表
任务类型多线程效果原因
CPU 密集几乎无提升GIL 阻止并行执行
I/O 密集显著提升线程可重叠等待

4.3 异常处理写成“except: pass”为何让人又笑又哭

沉默的陷阱
except: pass 被戏称为“Python 最危险的一行代码”。它像一个黑洞,吞噬所有异常,连 KeyboardInterrupt 和 SystemExit 都不放过。
try:
    result = 10 / 0
except:
    pass  # 错误被忽略,程序继续运行
该代码不会报错,也不会输出任何提示,导致调试困难。开发者无法得知问题发生的位置和原因。
正确的做法
应明确捕获具体异常类型,并进行日志记录或处理:
  • 使用 except Exception as e: 捕获非系统异常
  • 配合 logging.error(e) 记录错误信息
  • 避免裸露的 except:
这种写法虽省事,却埋下巨大隐患,令人哭笑不得。

4.4 “SyntaxError: invalid syntax”是最常见的笑点来源?

Python初学者最熟悉的报错信息莫过于“SyntaxError: invalid syntax”。这行提示频繁出现在代码拼写错误、缩进不当或括号不匹配的场景中,久而久之,成了开发者社区中的经典梗。
常见触发场景
  • 忘记冒号(:)
  • 引号未闭合
  • 使用了中文符号
  • 缩进层级混乱
示例代码与分析

if name == "Alice"
    print("Hello, Alice!")
上述代码缺失冒号,Python解释器无法解析条件语句结尾,立即抛出SyntaxError。正确写法应在if行末尾添加:。 该错误虽基础,却暴露了编程中对语法严谨性的要求。随着经验积累,开发者能快速定位问题,甚至调侃这类低级失误为“入门仪式”。

第五章:程序员的自我修养与笑点免疫

调试中的哲学思考
当生产环境凌晨三点报警,日志中只留下一行 panic: runtime error: invalid memory address,你是否还能微笑面对?经验丰富的开发者知道,真正的成长始于崩溃之后。保持冷静不是天赋,而是通过数百次 git bisect 和 pprof 分析训练出的肌肉记忆。
代码审美的养成路径
  • 拒绝“能跑就行”的代码提交
  • 坚持函数单一职责原则
  • 使用静态分析工具(如 golangci-lint)自动化检查
  • 定期重构技术债务模块
高并发场景下的心态管理

// 使用 context 控制超时,避免 goroutine 泄漏
ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
defer cancel()

result, err := database.Query(ctx, "SELECT * FROM users")
if err != nil {
    log.Error("query failed", "err", err)
    return // 及时返回,不纠缠
}
团队协作的心理防线建设
行为初级反应进阶应对
被指出 bug防御性辩解感谢反馈并立即复现
需求频繁变更抱怨产品经理推动建立变更评审流程
[压力源] → [情绪波动] → [深呼吸] → [拆解问题] → [执行修复] → [复盘记录]
面对线上服务雪崩,有人选择重启容器,有人则会先查看 top 和 netstat 输出。差异不在工具,而在心智模型。持续学习底层原理,才能在混乱中保持清晰判断。

相关推荐

Python-爬虫-段子网笑话

Python-爬虫,通过使用BS4,requests库页面爬取所需信息

Python 编程竟然如此幽默!揭秘程序员们的搞笑日常,快来看看吧!

祝大家在 Python 编程的道路上越走越远,创造出更多优秀的作品!心理医生回答:“别担心,这是程序员的常见症状。小学生骄傲地说:“是的,我用了 Python 的copy和paste功能,把它们复制粘贴在一起,就成了这段神奇的代码!Python 是一门最优秀的编程语言,它简单易学,功能强大,几乎是无所不能的!当然,也少不了轻松幽默的段子,这些段子让程序员们在忙碌的工作和学习之余,能够会心一笑,释放压力。拿起手机拨打了心理医生的电话:“医生,我有强迫症,看到代码里的缩进错误就无法忍受,怎么办?

小助手爱编程 1209

el-table通过上下左右键移动光标

在Element Plus的el-table中包含el-input和el-select组件,要实现上下左右键控制光标位置,需要通过focus和blur跟踪判断当前是哪个el-input或el-select有焦点,当按键按下时,通过监听,计算下一个获取焦点元素的索引,通过focus方法将焦点切换至改元素。

秋思的博客 1350

关于python搞笑段子精选_你能讲一个让人瞬间爆笑的笑话吗?

1、当年吴广找陈胜提议一共举兵抗秦,陈胜曾犹豫过。他问吴广:抗秦这事儿吧,说好听是起义,说白了就是造反。你非拉着我干啥?吴广说:我寻思过了,我一个人造反不合适。陈胜问:为啥?吴广说:我一个人造反吧,属于单反。尼玛单反毁一生呀!2、很多男孩子听到Mac觉得是电脑;很多女孩子听到Mac觉得是口红;程序员听到Mac觉得是物理地址;我听到Mac想到的是Big Mac巨无霸汉堡。3、英语四六级考试,我跟宿管...

weixin_39884738的博客 2333

VSCODE 安装LATEX环境,参数配置,常见问题解决

1 准备Texlive安装包 可以从以下网址下载 texlive 的镜像文件: 华为镜像 阿里镜像 官网 网址中大概文件构成 下载完后我们需要的文件构成(我是2020年下载过了,这次就不重新下载了) 将这个镜像文件进行解压 2 安装Texlive 右键install-tl-windows.bat,单击以管理员身份运行,进入安装界面. 点击左下角的“Advanced”进入高级安装来取消你不需要安装的宏包。 点击“Customize”来取消勾选不需要的宏包。 单是把非中英的语言包取消勾选可以省掉 1G

呆呆象呆呆的博客 6万+

【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

Web图书管理系统

激流丶的博客 5397

python程序员幽默段子_关于程序员的10则笑话

1 程序员买包子老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,就买一个。”当晚,程序员老公手捧一个包子进了家门……老婆怒道:“你怎么就买了一个包子?!”老公答曰:“因为看到了卖西瓜的。”2 相亲与女友分手两月有余,精神萎靡,面带菜色。家人介绍一女孩,昨日与其相亲。女孩果然漂亮,一向吝啬的我决定破例请她吃晚饭。选了一个蛮贵的西餐厅,点了比较贵的菜。女孩眉开眼笑,与我谈得很...

weixin_39845221的博客 2151

DataWorks PyODPS第三方包全攻略:从打包到加载的完整流程

本文详细介绍了在DataWorks的PyODPS节点中使用第三方Python包的完整流程,包括环境限制、打包工具pyodps-pack的使用、资源上传与加载实战,以及特殊场景处理技巧。通过本文,开发者可以掌握在MaxCompute受限环境中灵活使用自定义依赖的方法,提升数据处理效率。

dd012的博客 989

2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆破、文件、隐写、逆向、PWN等全套工具

经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!

Libra1313的博客 1万+

【YOLO11改进 - 检测头】Detect_LSCD检测头:量化的检测头,进一步提升模型的检测效率和精度

【YOLO11改进 - 检测头】Detect_LSCD检测头:量化的检测头,进一步提升模型的检测效率和精度

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 4094

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 404

python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...

原标题:程序员才能看得懂的段子,内含表情包,吃饭的时候别点!很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农。其实这种看法是非常片面的。真正优秀的程序员,不仅精通程序的编写,还是某些领域的专家。许多“码农”也会发生很多让人啼笑皆非的趣事,这些故事你的身边有发生过吗? 1、公司两位程序员同事聊天,甲抱怨说:“每天敲代码太辛苦了,我想换行”乙说:“敲回车啊”2、公司的前端工程师单身久了,就去了...

weixin_39716044的博客 620

【单智能体】AI 数据分析智能体案例讲解(附完整源码)

本案例将引导您构建一个基于 AI 的数据分析智能体,让用户能够通过自然语言查询来分析 CSV 和 Excel 文件中的数据,无需掌握 SQL 知识。该智能体使用 Agno Agent 框架集成 OpenAI GPT-4o 模型,并利用 DuckDB 提供高效的数据处理能力。

rengang66的博客 238

python3.9 BeautifulSoup爬取豆瓣电影 Top 250

python3.9 BeautifulSoup爬取豆瓣电影 Top 250 工作之余学习了python,今天就用python写了一个爬取豆瓣电影Top 250的脚本,不得不感慨python在爬虫这一块有天然的优势!好了,进入正题。 数据全是包装在li下,所以就简单了,我们就可以利用BeautifulSoup去获取所有的li标签,然后循环取出我们想要的数据! BeautifulSoup可以在https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/ 上面学,中文翻译

junfeng5207的博客 1648

通过Power Platform自定义D365 CE 业务需求 - 4. 使用Power Automate

Power Automate构建块Power Automate中的连接器流的类型和用途流中的动态值和表达式使用变量、循环和条件在Power Automate中处理审批业务场景、用例和实现Power Virtual Agent的概念Power Virtual Agent的构建块配置Power Virtual Agent示例在公共网站/门户中部署Power Virtual Agent业务场景、用例和实现。

Martin-Mei的博客 558

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?

【优快云 编者按】程序员刷豆瓣也要刷出技术感,本文爬取豆瓣 TOP250 告诉你这些书“热门”在哪里!案例分析之外,重在梳理编写爬虫的逻辑和链路关键点,手把手教你形成自...

优快云资讯 4159

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

python爬虫获取豆瓣图书Top250

        在上一篇博客《python爬虫获取豆瓣电影TOP250》中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法。这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片的Top250信息,并将数据保存在csv文件中! 我们先根据网址https://book.douban.com/to...

大数据梦想家 6565

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

分析了 9 万条程序员招聘数据,Python 薪资竟反超 Java?

作者 | 周哲责编 | 郭芮出品 | 优快云 博客本周,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下。编程语言和工资1...

程序人生的博客 395

2024最受欢迎的程序员副业排行榜TOP6

程序员接单的情况并不少见,因为程序员职业工种的特殊性,能够比较快的衔接上新项目和新技术,所以接私活做副业成了许多程序员的不二之选。

pythonhy的博客 7212

【python爬虫案例】用python爬豆瓣电影TOP250排行榜!

马哥原创:用python爬取豆瓣电影TOP250榜单数据。

马哥的专栏 5926

世界程序员编程水平排行榜TOP50,中国第一名

今天小编在找中国程序员水平怎么 样时,看到了几张图片。上面讲述了平台HackRank发起的一系列编程挑战竞赛的竞赛结果,小编看了数据之后只想来一句:中国的程序员,牛逼! 世界程序员编程水平排行榜TOP50,中国第一名 全球程序员编程水平排行榜TOP50 世界程序员编程水平排行榜TOP50,中国第一名 各国(地区)程序员擅长技术领域榜单 世界程序员编程水平排行榜TOP50,中国第一名 从以上的数据我...

qq_29289023的博客 2159

Python爬虫之爬取豆瓣图书TOP250

爬取豆瓣图书TOP250图书信息及图书海报 写这篇主要是为了去图书馆不知道看什么书或者不知道该买些什么书的时候可以参考经过众多豆友们点评出的好书推荐,哈哈哈哈哈。 上代码(全部代码均在这里,只是分开按照步骤解释一下) 第一步:导入需要用到的包。 from bs4 import BeautifulSoup # 网页解析,获取数据 import urllib.request, urllib.error # 指定url,获取网页数据 import re

JinTian312的博客 8476

Docker Top查看进程:Miniconda-Python3.9监控运行状态

通过Miniconda-Python3.9与Docker结合,实现环境一致性与进程可控性。利用docker top命令从宿主机实时查看容器内Python和Jupyter等关键进程状态,无需进入容器即可快速定位服务异常,配合自动化脚本构建轻量级监控体系,提升AI开发与部署的稳定性。

weixin_35705784的博客 912

Python爬虫——爬取豆瓣Top250

一、基本思路 页面分析 我们要爬取的网页是豆瓣Top250 https://movie.douban.com/top250 通过分析页面可以知道 每页显示25部电影 start=0 时从第1部开始显示 start=25时从第26部开始显示 电影的信息都在页面上 所以我们要爬取的网页链接是 https://movie.douban.com/top250/?start=0 https://movie.douban.com/top250?start=25 https://movie.douban.com/top

weixin_45672809的博客 3441

使用Python爬虫 爬取豆瓣top250

Python爬虫 文章目录Python爬虫@[toc]1)任务介绍2)爬虫知识3)基本流程3.1) 准备工作3.2)获取数据3.3)解析内容3.4)保存数据 1)任务介绍 需求分析 爬取豆瓣电影Top250的基本信息,包括电影的名称、豆瓣评分、评价数、电影概况、电影链接等。 链接:https://movie.douban.com/top250 2)爬虫知识 什么是爬虫 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性,根据用户需求定向抓

ChinaBILI6的博客 9338
上一篇: 揭秘Python数据建模三大瓶颈:90%新手都忽略的关键优化技巧
下一篇: 为什么顶尖Java程序员都在用这些工具?(极客装备深度解析)
fastdebug
博客等级 码龄11年 149粉丝 2006原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值