不开玩笑?学Python,真不知道main函数!

AI角色对话不崩人设:提示词工程、上下文管理与安全边界实践 在构建大模型对话应用时,开发者常以为把角色设定写进系统提示词就能一劳永逸,但真实场景中用户会以“你是天使吗”这类开放式表述挑战角色边界,导致人设逐渐崩塌甚至被提示词注入带偏。这背后本质是提示词工程、上下文窗口管理和输出安全校验的系统性问题。本文从基础概念出发,拆解系统提示词的角色约束原理、多轮对话的历史截断策略,以及角色卡结构化设计对保持人设一致性的价值,并展示如何通过工程化手段将模型能力封装为可维护、可观测的角色对话服务。无论是情感陪伴、虚拟客服还是互动游戏,这套方法都能帮助开发者构建稳定可控的AI角色助 阅读详情

982a2b6f7091d747d6b98062db31e6cf.png

Python 中的 main 函数充当程序的执行点,在 Python 编程中定义 main 函数是启动程序执行的必要条件,不过它仅在程序直接运行时才执行,而在作为模块导入时不会执行。

要了解有关 Python main 函数的更多信息,我们将从如下几点逐步学习:

  • 什么是 Python 函数

  • Python 中 main 函数的功能是什么

  • 一个基本的 Python main() 是怎样的

  • Python 执行模式

Let’s get started

什么是 Python 函数

相信很多小伙伴对函数都不陌生了,函数是可复用的代码块,它构成了在编程语言中执行操作的基础,它们被用来对输入数据执行计算并将输出呈现给最终用户。

我们已经了解到,函数是为执行特定任务而编写的一段代码。Python中的函数分为三种类型,即内置函数、用户定义函数和匿名函数。同时我们需要明确,main 函数与 Python 中的任何其他函数都是一样的,没有区别。

那么让我们来了解一下 Python 中的 main 函数到底是什么。

Python 中的 main 函数是什么

在大多数编程语言中,都有一个特殊的函数,每次程序运行时都会自动执行,这就是是 main 函数,或通常表示的 main(),它本质上是程序执行的起点。

在 Python 中,不必每次编写程序时都定义 main 函数,这是因为除非定义了特定函数,否则 Python 解释器都会从文件顶部执行。因此,为 Python 程序的执行定义一个起点有助于更好地理解程序的工作原理。

一个基本的 Python main()

在大多数 Python 程序/脚本中,我们可能会看到一个函数定义,然后是一个条件语句,如下所示:

def main():
    print("Hello, World!")
    
    
if __name__== "__main__" :
    main()

main 函数对于 Python 来说是必须的吗

在 Python 中拥有 main 函数并不是强制性的,但是,在上面的示例中,我们可以看到,定义了一个名为 main() 的函数,下面是一个条件 if 语句,它检查 __name__ 的值,并将其与字符串 __main__ 进行比较,当为 True 时,就会执行 main()。

在执行时,会打印“Hello, World!”。

当我们处理要作为 Python 脚本执行或要在其他模块中导入的文件时,这种代码模式是非常常见的。

让我们详细来看一下这段代码是如何执行的,首先我们非常有必要了解 Python 解释器设置 __name__ 取决于代码的执行方式。那么,让我们了解一下 Python 中的执行模式

Python 执行模式

有两种主要方法可以告诉 Python 解释器执行代码:

  • 最常见的方法是将文件作为 Python 脚本执行

  • 通过将必要的代码从一个 Python 文件导入到另一个文件

无论我们选择哪种执行模式,Python 都会定义一个名为 __name__ 的特殊变量,其中包含一个字符串。正如我们前面所看到的,这个字符串的值取决于代码的执行方式。

有时当我们从模块导入时,我们想知道特定模块的函数是否被用作导入,或者只是使用该模块的原始 .py(Python 脚本)文件。

为了解决这个问题,Python 有一个特殊的内置变量,称为 __name__,可以根据运行或执行脚本的方式,此变量会被分配字符串 __main__。

Python 中的 __main__ 是什么

Python main 函数是任何 Python 程序的入口。当我们运行程序时,解释器按顺序运行代码,如果作为模块导入,则不会运行 main 函数,main 函数只有在作为 Python 程序运行时才会执行。

因此如果我们直接运行脚本,Python 会将 __main__ 分配给 __name__,即 __name__=“__main__”。

因此,如果条件语句的计算结果为 True,则意味着 .py(Python 脚本)文件正在直接运行或执行。

有一点需要重点注意,如果我们直接在 Python shell 或终端上运行某些东西,则默认情况下,此条件语句恰好为 True。

最终我们习惯性的把所有必要的函数定义都写在了代码文件的最上面,最后在文件的最后写了这条语句,来组织代码。

if __name__ == "__main__" :
        Logic Statements

简而言之,__name__ 变量可以帮助我们检查文件是直接运行还是已导入。

在编写具有 main 功能的程序时,我们需要记住如下一些事情

尽可能使用函数和类

长期以来,我们一直在学习面向对象编程的概念及其优势,所以绝对有必要将批量逻辑代码放在紧凑的函数或类中。通过这种方式,我们可以控制代码的执行,而不是让 Python 解释器一导入模块就执行它。

让我们看看下面的一段代码:

def get_got():
    print("…Fetching GOT Data… n")
    data="Bran Stark wins the Iron Throne. n"
    print("…GOT Data has been fetched…n")
    return data
 
print("n Demo: Using Functions n")
got=get_got()
print(got)

在上面的示例中,我定义了一个名为 get_got 的函数,它返回存储在变量 data 中的字符串。然后将其存储在名为 got 的变量中,最后打印该变量。

输出如下:

9fbdc782f71bec3b176fb38cb572d9be.png

使用 __name__ 来控制代码的执行

现在我们知道了什么是 __name__ 变量,那么该如何以及为什么使用它。让我们看看下面的代码片段:

if __name__ == "__main__":
      got = "Game of Thrones is a legendary shown"
      print(got)
      new_got = str.split(got)
      print(new_got)

在上面的示例中,条件 if 语句将比较变量 __name__ 的值与字符串 __main__。当且仅当它的计算结果为 True 时,才会执行下一组逻辑语句。由于我们直接运行程序,我们知道条件语句将是 True。因此语句被执行,我们得到了想要的输出。这样我们就可以使用 __name__ 变量来控制我们代码的执行。

输出如下:

c138c44b07f42c42b302d2cba3b84110.png

创建一个包含要运行代码的函数 main()

到目前为止,我们已经了解了 Python 代码的各种执行方式,同时我们还知道为什么以及何时使用 main() 函数,下面就来应用它。看下面这段代码:

print("n Main Function Demo n")
def demo(got):
    print("…Beginning Game Of Thrones…n")
    new_got = str.split(got)
    print("…Game of Thrones has finished…n")
    return new_got
    
def main():
    got= "n Bran Stark wins the Iron Throne n"
    print(got)
    new_got = demo(got)
    print(new_got)
if __name__ == "__main__":
    main()

在上面的例子中,我们使用了 main() 的定义,它包含了我们要运行的程序逻辑。我们还定义了一个名为 demo 的函数,包含一段代码,可以在必要时复用。此外我们还更改了条件块,使其执行 main()。

这样,我们将要运行的代码放在 main() 中,将编程逻辑放在一个名为 demo 的函数中,并在条件块中调用 main()。

来看一下输出:

d7486a7318d72f22f90c75798b71b4de.png
❝

可以尝试一下,如果将此代码作为脚本运行或导入它,则输出将是相同的

从 main() 调用其他函数

当我们编写成熟的 Python 程序时,可能有许多可以调用和使用的函数。通常情况下,一些函数应该在程序开始执行时立即调用。因此,从 main() 本身调用其他函数就是最佳的选择了。

让我们看看下面的代码片段:

print("n Main Function Demo n")
def demo(got):
    print("…Beginning Game Of Thrones Demo1…n")
    new_got = str.split(got)
    print("…Game of Thrones has finished…n")
    return new_got
def getgot():
    print("…Getting GOT Data…n")
    got="Bran Stark wins the Iron Throne n"
    print("…GOT Data has been returned…n")
    return got
def main():
    got= getgot()
    print(got)
    new_got = demo(got)
    print(new_got)
if __name__ == "__main__":
    main()

在上面的示例中,我们定义了一个名为 getgot() 的函数来获取数据,这个函数是从 main() 本身调用的。

因此,从 main() 中调用其他函数以将整个任务从可以独立执行的较小子任务中组合起来总是较好的选择。

输出如下:

aeeef7e1f74752ad85bcc201c7d6b164.png

希望通过这篇文章,对于 Python 中 main() 函数的全部内容以及如何使用它有一个全面而正确的理解。借助 Python 中的 main() 函数,我们可以在需要时执行大量功能,还可以控制执行流程。

好了,这就是今天分享的全部内容,喜欢就点个赞吧~


 

 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

从无害桌面特效到系统监控:Python脚本实现蓝屏模拟与图标动画 在计算机图形界面与系统编程领域,GUI自动化与进程控制是基础而重要的技术概念。其原理是通过调用操作系统提供的API接口或模拟用户输入,实现对图形界面元素的操控。这项技术的价值在于能够自动化重复性任务、创建自定义交互体验以及进行系统测试。在应用场景上,常见于软件测试自动化、辅助工具开发以及教育演示等领域。本文聚焦于利用Python的tkinter和pyautogui等库,实现如**伪蓝屏模拟器**和**桌面图标动态化**等视觉效果,这些实践既展示了GUI编程的灵活性,也强调了在**虚拟机**等安全环境中进行技 阅读详情

相关推荐

华为网络实战:5分钟搞定OSPF+VRRP+MSTP多协议联动配置(附完整命令集)

本文深入解析了在企业网络中如何高效协同部署OSPF、VRRP和MSTP三大协议。通过一个典型的双核心网络案例,详细阐述了从规划、配置到验证的完整流程,重点强调了确保MSTP根桥与VRRP主设备一致的设计原则,以实现最优的二层与三层流量转发路径,并提供了完整的命令集和故障排查思路。

weixin_29251337的博客 154

python的执行顺序

python执行顺序

weixin_43505418的博客 4786

Delphi 13 Beta初体验:手把手教你安装RAD Studio Ganymede,并实测新条件运算符

本文详细介绍了Delphi 13 Beta(代号Ganymede)的安装步骤和新特性,重点解析了新增的条件运算符语法。通过实测对比,展示了64位IDE的性能提升和新语法在代码简洁性上的优势,为开发者提供了从安装到实战的完整指南。

weixin_30399821的博客 205

Python中main函数

Python是最需要学习的编程语言之一。Python中的main函数充当任何程序的执行点。定义Python编程中的main函数是启动程序执行的必要之处,因为它只在程序直接运行时执行,而不是在作为模块导入时执行。 什么是Python函数? 函数是可重用代码的挡路,它构成了使用编程语言执行操作的基础。它们用于对输入数据执行计算,并将输出呈现给最终用户。 我们已经了解到,函数是为完成特定任务而编写的一段代码。Python名称中有三种类型的函数内置函数、用户定义函数和匿名函数。现在,Main函数就像Python中的

IT赶路人的博客 6万+

用RFSoC ZU47DR搭建软件无线电原型:从零配置Vivado到生成第一个射频信号

本文详细介绍了如何使用Xilinx RFSoC ZU47DR开发板搭建软件无线电原型系统,从Vivado环境配置到生成首个射频信号的全流程。通过整合ARM处理器、FPGA逻辑和高速ADC/DAC,该平台为通信算法验证提供了高效解决方案,特别适合SDR开发者和通信工程师快速实现原型设计。

weixin_26763955的博客 591

NXP ChessDE的安装和激活

如果客户申请的是试用版,那么一份为期 30 天的 License 将会发送申请人的账号或邮箱中,客户使用该文件进行安装即可。② 将“VENDOR snpslmd /path/to/snpslmd”中的“/path/to/snpslmd”替换成 snpslmd.exe 实际存放路径(位于 SCL 安装目录下的 win32\bin 文件夹中,默认安装的情况下就是“VENDOR snpslmd C:\Synopsys\SCL\<version>\win32\bin\snpslmd.exe”)。

weixin_47351160的博客 2043

python 程序执行顺序

c++与c语言都有程序入口main函数 而python则是顺序执行的脚本语言,但是同样的也有其自己的特定执行顺序. 首先执行非函数定义和非类定义的无首行缩进的全局变量定义 如有main,即: def main():    xxxxx if __name__ == '__main__':     tf.app.run() 则会在全局初始化结束后,调用main函数,最后在执行with tf....

qq_40806289的博客 2470

从仿真到现实:BeamDojo双足机器人项目实战指南(附完整配置清单)

本文提供了一份基于BeamDojo项目的双足机器人从仿真训练到现实部署的完整实战指南。详细拆解了硬件选型(如宇树G1、Jetson Orin NX、Livox Mid-360)、Isaac Gym仿真环境搭建、强化学习训练技巧(如双评论家架构、课程学习)以及关键的Sim2Real迁移策略,旨在帮助开发者将前沿研究成果转化为可落地的工程实践。

hhh00的博客 877

Python的main函数

然而,在实际开发中,为了更好地组织代码和明确程序的入口,开发人员通常会定义一个 main() 函数,用于编写程序的主要逻辑,并在程序的顶层调用 main() 函数。这种做法可以使代码更加结构化,易于维护和阅读。然后,在 if __name__ == "__main__": 的条件语句中调用 main() 函数,使得程序从 main() 函数开始执行。因此,虽然在 Python 中不需要明确定义 main() 函数,但是定义一个 main() 函数是一个常见的做法,有助于提高代码的可读性和可维护性。

gavin in IT 4796

基于锁相环的高精度频率分频器simulink建模与仿真

在现代电子系统中,高精度频率分频器扮演着至关重要的角色。它能够提供精确的频率参考,广泛应用于通信、仪器仪表、航空航天等领域。基于锁相环的高精度频率分频器具有结构简单、性能稳定等优点,成为了研究的热点。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 776

28-Halcon-- union_object_model_3d函数功能(用于3D模型融合)

Halcon算子union_object_model_3d是专业的3D模型融合工具,主要用于多视图拼接、部件组装和多源数据融合。该算子支持点云、网格和参数化模型输入,提供多种融合算法选择,包括基础点云拼接('points_cloud')、网格融合('mesh')和精确CAD布尔运算('cad')。工业应用涵盖逆向工程扫描拼接、汽车部件虚拟装配等场景,支持性能优化如空间分区和流式处理。算子还解决颜色属性融合、法向量保留等特殊需求,并提供拼接误差分析、拓扑验证等质量评估手段。最佳实践包含动态场景重建工作流和CA

weixin_45590420的博客 1055

py文件作为模块被import和作为py文件运行时,代码的执行顺序

转载自cn_XuYang 1.python程序是顺序执行的,而C++中main()是程序的入口 例如以下代码,结果如注释所示,这里虽然有个main函数,但是最先输出的不是“main”而是“test1”: #test1 print ("test1") def Fun(): print ("Fun") def main(): print ("main") Fun() if __name__ == '__main__': main() ''' test1 main Fun '''

DecafTea的博客 1542

AUTOSAR 导入DBC ISOLAR工程配置

ISOLAR工程配置-dbc导入

汽车电子电气 2407

嵌入式AI筑基:从C到Python的函数与模块详解

函数是代码组织的基本单元,模块化编程则决定工程的边界。针对习惯C语言的嵌入式开发者,本文剖析Python中函数定义与调用、参数传递、作用域规则以及模块与包的组织方式。通过对比C与Python的差异,帮助工程师理解Python“动态灵活”的设计哲学,并掌握如何用模块清晰划分业务边界,用函数构建可复测的逻辑单元。在嵌入式AI的工具链中,模型训练、数据预处理、量化校准等任务均依赖Python生态,扎实的函数与模块知识是掌握AI工程的基础。结合温控器仿真实例,展示如何将驱动、算法与业务分层,实现从仿真到真机的平滑过

weixin_29194255的博客 219

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python 的 “元类” 是个什么东东?

xiaoming, xiaohong, xiaozhang 都是学生,这类群体叫做 Student.Python 定义类的常见方法,使用关键字 classIn [36]: class S...

算法channel 195

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

从生日悖论到哈希碰撞:概率计算与Python仿真实践

在计算机科学和概率论中,组合数学是分析随机事件的基础工具。其核心原理在于通过排列组合模型计算特定事件发生的可能性,例如在有限空间中避免重复的概率。这一原理在工程实践中具有重要价值,尤其在哈希函数设计和数据结构优化中,用于评估碰撞风险。通过蒙特卡洛仿真,我们可以用Python模拟随机过程,验证理论概率,例如生日全不重复的场景。本文结合生日悖论这一经典案例,探讨了概率衰减趋势、非均匀分布的影响,并延伸到哈希碰撞的类比分析,为系统设计中的风险评估提供定量方法。

weixin_34015336的博客 394

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python创意编程:用Turtle与Tkinter打造交互式表白程序

Python作为一门通用编程语言,其标准库提供了丰富的图形界面与绘图模块,如Tkinter和Turtle,能够帮助开发者快速构建可视化应用。这些模块基于事件驱动与坐标绘图原理,通过封装底层图形接口,降低了图形编程的门槛。其技术价值在于将抽象的代码逻辑转化为直观的视觉交互,极大提升了程序的趣味性与表现力。在工程实践中,这类技术常被用于教学演示、数据可视化原型及轻量级工具开发。本文聚焦于一个具体应用场景——创意表白程序,详细讲解了如何利用Turtle库实现动态爱心绘制,并结合Tkinter构建交互式问卷,将编程

anjichan4261的博客 433

离婚倒计时_我用 Python 接管千亿系统

三年前,在别处是 K 氏云餐联合创始人,也是透明点单系统的第一作者。 一场上线事故后,他被指认为责任人。署名被删,股份被收,行业封杀。妻子 kiko 在事故报告上签下名字,从此他只能穿着后勤围裙,留在自己亲手创建的公司里端菜。 三年后,滕壮壮踩着他的旧方案成为首席架构师。庆功宴上,kiko 又在全体董事面前签下离婚与责任切割协议。 在别处也签了。 就在最后一笔落下时,一百二十七家门店同时黑屏,每分钟损失十二万。所有人都求滕壮壮救场,又等着看这个“罪人”被赶出最后一扇门.............

ElseWhereR的博客 197

满屏爱心弹窗代码:前端JavaScript与Python tkinter实战

在网页与桌面脚本开发中,弹窗交互和动画效果是常见的前端基础能力。无论是通过JavaScript的window.open批量创建子窗口,还是利用CSS动画实现飘动粒子,其背后都涉及定时器控制、窗口属性设置、资源占用优化等核心概念。Python的tkinter库同样能实现桌面级弹窗逻辑,通过多线程与置顶窗口模拟类似效果。这类“满屏爱心弹窗”代码看似娱乐向,却能串联起前端动画、GUI编程、性能预检与安全退出等实用技能,常被用于表白、纪念日整活或作为新手练手项目。理解其原理,有助于掌握浏览器弹窗策略、事件循环、DO

weixin_34013044的博客 435

用Python拆解音游rks算法:低rks打17为何分数低

在音游玩家社区里,关于rks、定数、Acc和越级挑战的讨论一直不少。rks作为账号综合评分的核心指标,与谱面定数、结算准确率以及TopN机制紧密相关。理解这些概念,不仅能解释为什么低rks玩家打17级高难谱面时分数难看,还能为成绩分析和练习规划提供数据依据。本文从音游评分机制的基础概念入手,介绍单曲rks和档案rks的计算原理,再通过Python标准库实现一个最小可用的rks计算器,支持CSV成绩导入、单曲收益对比和瓶颈诊断。通过模拟数据,直观展示Acc差异如何被定数放大,以及双指操作在密集谱面中的局限性。

weixin_30606461的博客 813

Python嵌入式开发实战:从MicroPython到硬件选型全景指南

嵌入式开发长期以来是C语言的领地,但随着物联网与边缘计算的兴起,Python正以另一种姿态进入这一领域。理解Python在嵌入式中的定位,关键在于区分不同资源层级:从资源受限的MCU到跑Linux的高性能板卡,Python分别以MicroPython、CircuitPython和CPython等形态发挥作用。其解释执行特性虽带来实时性短板,却极大提升了原型验证与业务逻辑开发的效率。ESP32、树莓派Pico等主流开发板对Python生态的完善支持,让开发者无需深究底层寄存器操作即可完成传感器读取、MQTT通

weixin_33826609的博客 295

ESP32-S3开发环境搭建全攻略:从零到一解决安装难题

嵌入式开发中,软件开发套件(SDK)和工具链是连接硬件与应用的关键桥梁。ESP-IDF作为乐鑫官方推出的物联网开发框架,其核心价值在于提供了一套完整的工具链、构建系统和硬件抽象层,使开发者能够高效地开发ESP32系列芯片的固件。理解其全家桶式的架构,包括Python虚拟环境管理、CMake构建系统和组件化设计,是避免环境冲突、提升开发效率的基础。在实际工程中,环境搭建常因Python版本冲突、网络问题或路径设置不当而受阻。本文聚焦ESP32-S3,通过详解Windows平台下的安装器配置、VS Code集成

weixin_34294649的博客 469

大语言模型与游戏NPC:为什么主流游戏仍不接入LLM?

大语言模型展现了强大的文本生成能力,但将其引入游戏NPC对话系统面临实时性、成本、可控性、世界一致性等多重工程约束。从技术原理看,LLM作为通用生成器,需要状态注入、记忆管理和工具调用等机制才能与游戏世界对接;其概率生成特性也导致内容安全和角色一致性难以保证。当前商业游戏更倾向于在开发阶段利用LLM提升生产效率,而运行时NPC接入仍多见于实验性产品。若想构建AI NPC原型,可从带世界状态注入、滑动窗口记忆和函数调用的最小系统入手,逐步理解“让NPC知道自己活在游戏里”这一核心挑战。理解这些约束,有助于评估

weixin_30628077的博客 381

Python构建人格化AI对话系统:从参数化人格到流式呼吸感交互

人格化AI不是简单的prompt修饰,而是融合认知建模、行为状态机与分层记忆的工程体系。其核心原理在于将抽象人格解耦为可量化、可校验、可动态调节的参数矩阵,并通过流式响应引擎实现语言节奏、情绪温度与思考延迟的真实模拟。技术价值体现在显著提升用户留存率与对话沉浸感,突破传统RAG问答的交互断层。典型应用场景包括智能客服、教育陪练、心理陪伴助手及企业知识协作者。本文聚焦Python技术栈下的轻量级落地实践,详解FastAPI服务编排、LiteLLM多模型容灾、ChromaDB本地化记忆检索与七维人格参数化设计。

weixin_33910460的博客 308

从AI幻觉到可靠对话:基于Python与大语言模型的实战开发指南

大语言模型(LLM)作为当前人工智能的核心技术,通过海量文本训练学习语言统计规律,实现文本生成与对话交互。其工作原理本质上是基于概率预测的序列生成,这导致模型在缺乏真实世界知识锚点时,可能产生看似合理但包含事实错误或逻辑矛盾的输出,即AI幻觉现象。理解AI幻觉的成因与机制,对于开发可靠、实用的AI应用具有重要技术价值。通过提示工程、检索增强生成(RAG)等工程实践,开发者可以引导模型输出更准确、更相关的信息,有效规避幻觉问题。本文以构建模拟AI幻觉的聊天机器人为切入点,深入探讨了提示工程、模型微调等核心概念

weixin_34013044的博客 351
上一篇: 面试通过,背调凉了。。
下一篇: 《羊了个羊》创始人被母校制成展牌
菜鸟学Python
博客等级 码龄9年 8062粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值