首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

流畅的 Python 第二版(GPT 重译)(四)

第二部分:函数作为对 第七章:函数作为一等对象 我从未认为 Python 受到函数式语言的重大影响,无论人们说什么或想什么。...“仅位置参数” 是一个新的部分,涵盖了 Python 3.8 中添加的一个特性。 我将运行时访问函数注解的讨论移到了“在运行时读取类型提示”。...不会在运行时捕获类型错误 静态类型检查器、linter 和 IDE 使用类型提示来发出警告。它们不能阻止在运行时将不一致的值传递给函数或分配给变量。...在运行时,Python 不关心声明的类型。它只使用鸭子类型。Mypy 在alert_bird中标记了一个错误,但在运行时使用daffy调用它是没有问题的。...但在实际代码中,它们可能会更长;它们可能会将birdie参数传递给更多函数,并且birdie参数的来源可能相距多个函数调用,这使得很难准确定位运行时错误的原因。

39910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    流畅的 Python 第二版(GPT 重译)(八)

    我的 Python 实现的 max 与所有那些类型导入和声明的长度大致相同。由于鸭子类型,我的代码没有 isinstance 检查,并且提供了与那些类型提示相同的错误检查,但当然只在运行时。...示例 15-9 的第二点非常重要要记住:Mypy 不会在这段代码中标记任何问题,但在运行时,whatever中的值可能不符合BookDict结构—实际上,它可能根本不是dict!...示例 15-13 显示 demo_not_book.py 输出了无意义的内容,但没有运行时错误。在处理 JSON 数据时使用 TypedDict 并没有提供太多类型安全性。...无论如何,IndexError 是一个运行时错误。Mypy 甚至在像 print([][0]) 这样的简单情况下也无法发现问题。...该部分有点长,因为使用TypedDict可能会给人一种虚假的安全感,我想展示在尝试将静态结构化记录转换为本质上是动态的映射时,运行时检查和错误处理是不可避免的。

    24210

    在VisualStudio中提供运行时和设计时支持的WPF本地化解决方案

    在这种情况下,我还想: 在运行时切换区域设置——可自动更新所有得本地化元素 使用现有的可以在Visual Studio中维护的资源文件(**.resx files)。...(这同时也意味着无法从XAML文件中去访问构造函数——即使用ODP ObjectType)。要解决这个问题,我们可以在ODP上使用MethodName属性。...当您在UserControl中添加一个绑定到一个标签时,它将在运行时被正确地显示出来,在设计时(例如在Blend中),当它被自己加载时也会被正确展示。...我理解,将UserControl作为窗口的子控件加载时的问题是,设计器创建控件的实例,然后将其添加到窗口中。运行时可用的资源不存在,因为实例不是在窗口中创建的,因此上面的绑定失败,无法呈现控件。...这实际上是ODP的第二个实例,在运行时会很糟糕(因为只有App.xaml中包含的第一个实例会被更新),但在设计时很好,因为我们不会更新区域性。 问题解决了。

    2K20

    你还在用 console.log 调试 ?

    本文主要讲述以下几点内容: 设置断点以调试特定行的代码 查看调用堆栈 暂停/恢复脚本执行 设置表达式 开发工具的生产力提示和技巧 调试运行时代码 当代码出现 bug 或没有按照预期执行时,我们通常会查看开发者工具中的...通常,您可能希望停止执行代码,以便您可以逐行地查看特定的上下文。 一旦代码在断点处停止,我们就可以通过访问作用域,查看调用堆栈,甚至在运行时更改代码来进行调试。 如何设置断点?...我们设置了3个断点: 第一个断点在代码定义时停止执行 第二个断点将在 priceReceived 函数执行之前停止 第三个断点将在 priceReceived 被调用后立即停止,因此我们也可以检查箭头函数的返回值...场景:您的代码比上面的代码更复杂,并且无法确定何时出现 NaN 。 当然,您可以设置一个断点,但复现错误并不容易,可能最终花费半小时来执行代码。...如果您仔细观察上图会发现,当我将保存的变量映射到字符串数组时,我没有按下 Enter 键,但结果立即显示在下一行。

    1.6K10

    Java异常处理常见问题

    ● finally:异常处理语句结构的一部分,表示总是执行。...Java认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked 异常,该程序在编译时就会发生错误无法编译。...● 第二种:当前方法不知道如何处理,则在定义该方法时声明抛出该异常。 运行时异常只有当代码在运行时才发行的异常,编译的时候不需要try…catch。...运行时异常ArithmeticException,IllegalArgumentException编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。...系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉,例如,数组下标越界(ArrayIndexOutOfBoundsException

    49820

    你真的会正确地调试TensorFlow代码吗?

    此外,除非你已经执行了这个图,否则你也无法估计它的运行时间。 计算图的主要组成部分是图集合和图结构。...如果传递给构造函数的会话没有参数,那么就只会使用本地机器的资源和默认的 TensorFlow 图,但它也可以通过分布式 TensorFlow 运行时使用远程设备。...事实上,没有会话,图就不能存在(图没有会话就无法执行),而且会话一般都有一个指向全局图的指针。 更深入地研究运行会话的细节,值得注意的要点是它的句法:tf.Session.run()。...举个例子,由于在运行时访问的所有模块的所有张量只有一个默认的 tensorflow 图,因此无法在不重置图的情况下用不同的参数测试相同的功能。...但在实际情况中,只有当开发人员知道代码的某些部分需要运行两次或两次以上时,才应该谨慎地使用这一参数。 第二点是关于可训练变量,这里最重要的点是:默认情况下所有张量都是可训练的。

    99630

    试了试用ChatGPT做Abaqus二次开发 -- 绝绝子!

    说来惭愧,本人从事abaqus">Abaqus仿真工作多年,实则并不擅长编程,虽有一定编程基础,但实际使用中,最关键的是需要熟悉函数库,真心觉得没有几年项目经验,很难记住...因此写代码对我来说一直是件挺神秘的事情...中run一下就生成了一个30*30*30的立方体,如下图所示:(实际上,直接生成的语句有一个小错误,但在运行时,可以很方便的修改过来, 真的只需要那么一丁点儿的编程基础知识)(每次问他,回答都有稍微有点不同实现的方法或者排版等...,但程序并没有大问题,如果有问题,那就再刷新一次,哈哈)第二轮,稍微加大难度,来增加用户自定义尺寸和界面,在对话框输入:在Abaqus中创建GUI界面,要求用户输入立方体的长宽高。...这一次任务相对复杂一些,直接Copy运行的话,虽然能实现用户界面,但无法绘制出立方体。...除了Abaqus以外,实际上我们还测试了其他一些不那么热门的仿真软件,但效果就差很多,代码逻辑虽然对,但AI写出来的大部分函数压根就不存在,当然,这主要是因为软件自身的API函数库可供使用的函数太少。

    1.2K20

    【Story】《嵌入式开发中的Bug故事:挑战、解决与成长》

    系统的硬件设计早已完成,而我的任务是编写系统软件,驱动硬件并实现功能。 问题: 在系统开始运行时,虽然程序能够顺利启动并进入初始化阶段,但在运行一段时间后,系统突然死机,无法响应任何输入。...硬件设计中使用的外部晶振并没有正确配置在软件中,而软件默认使用的是内部时钟源,导致了时钟的频率不匹配。当系统运行到需要精确计时的部分时,时钟不稳定导致了死机。...由于我们使用了动态内存分配,但在某些情况下,分配的内存没有正确释放,导致了内存泄漏。在长时间运行后,系统的内存被耗尽,最终导致崩溃。...此外,系统还需要进行实时控制,确保电机在一定的时间范围内完成预定任务。 问题: 系统运行时,虽然大部分任务都按预期执行,但在某些情况下,电机控制出现了延迟,导致控制失败。我们发现问题出在实时性上。...具体而言,I2C总线的传输过程中,由于没有对传输的结果进行足够的错误检查和重试机制,部分传输失败的情况没有被捕获,从而导致数据丢失。

    12410

    流畅的 Python 第二版(GPT 重译)(七)

    Monkey Patching:在运行时实现协议 Monkey patching 是在运行时动态更改模块、类或函数,以添加功能或修复错误。...³在动态类型语言中,“快速失败”是更安全、更易于维护的程序的极好建议。快速失败意味着尽快引发运行时错误,例如,在函数体的开头立即拒绝无效参数。...我考虑延迟对协议的所有覆盖,直到本章,但决定最初在函数中的类型提示的介绍中包括协议,因为鸭子类型是 Python 的一个重要部分,而没有协议的静态类型检查无法很好地处理 Pythonic API。...但在typeshed上对complex.__float__进行类型提示不会解决这个问题,因为 Python 的运行时通常会忽略类型提示,并且无法访问typeshed存根文件。...但是在 Python 3.8 添加静态协议之前,Python 标准库有许多函数无法正确注释。我通过使用协议添加类型提示来帮助修复了 typeshed 中的一些错误。

    20010

    TypeScript 中的 any、unknown、never 和 void

    // 编译不会报错 const a: any = 6; a(); a.key1 = true; any 相当于抛弃了类型系统,会让代码变得不可预测和难以维护,需要程序员小心维护,一有不慎会造成运行时的错误...但在引入一些没有提供类型的第三方纯 JS 库时,还是得将它们标为 any,这个确实没啥办法。...(1)一个无法走到 return 返回值的函数,比如一定会抛出错误或死循环: // 这里的 never 表示无法执行到函数返回它的返回值 function foo(): never { throw...; } 当然在实际 JS 运行时,还是会返回一个默认的 undefined 的。但 TS 给返回值设置为 void,语义更好些。...never 是无法观测的类型,比如不会执行完的函数的返回值,合并结果不存在的交叉类型。在类型编程中非常活跃,常用于丢弃一些子类型。 void 就比较简单,只是代表函数没有返回值,没有其他的场景了。

    1.3K20

    【C语言指南】assert宏 使用详解

    一、assert简介 assert是一个在C语言中用于调试的宏 ,用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行。...如果该表达式为真(返回值非零), assert() 不会产生任何作用,程序继续运行; 如果该表达式为假(返回值为零), assert() 就会报错,在标准错误流 stderr 中写入⼀条错误信息,显示没有通过的表达式...,程序崩溃 并且会在标准错误流中输出错误的语句和行号 2.5 assert的打开与关闭 assert的关闭 如果已经确认程序没有问题,不需要再做断⾔,就在 #include 语句的前...三、注意事项 3.1 运行效率问题 由于assert引入了额外的检查,降低了程序运行效率,如果上述一段代码拿到编译器中运行就会发现运行时间大大增加,并且过度使用可能降低代码可读性和维护性,应在必要时谨慎使用...四、总结 assert是一个强大的调试工具,可以大大提高程序开发效率,但在实际项目中应根据实际情况合理使用,并结合其他健壮的错误处理机制以确保程序在所有环境下的稳定性和可靠性。

    21710

    Java的异常处理

    如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行。...运行时异常只有当代码在运行时才发行的异常,编译时不需要try catch。Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。...对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。 Exception类表示程序可以处理的异常,可以捕获且可能恢复。...Exception表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让...(2) finally: 异常处理语句结构的一部分,表示总是执行。

    65520

    【Java】认识异常

    ,使程序继续执行; Error:指虚拟机无法解决的严重问题,比如:JVM的内部错误,资源耗尽等。...根据发生的时机不同分类: 异常的分类根据发生时机的不同,分为编译时异常和运行时异常。...特点:必须进行显示处理,可以通过try—catch进行捕获并处理,或者使用throws声明可能抛出的异常,将异常上移交给调用者。如果不处理,程序编译就无法通过。...示例: 不支持克隆异常: ☀️运行时异常(非受查异常) 运行时异常:在程序运行时期间发生的异常,也称为非受检查异常。 特点:无需显示处理,也可以和编译时异常处理一样。...,但在运行时异常时还是需要处理异常; 声明的异常可以是Throwable类,以及其子类Expcetion或者Error及其子类。

    9010

    JavaSE面试深度剖析 第三讲

    如果程序没有处理 Checked 异常,该程序在编译时就会发生错误无法编译。这体现了 Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。...运行时异常只有当代码在运行时才发行的异常,编译时不需要 try catch。...对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。 Exception 类表示程序可以处理的异常,可以捕获且可能恢复。...Exception 表示程序还能够克服和恢复的问题,其中又分为系统异常和普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让...2)finally:异常处理语句结构的一部分,表示总是执行。

    45420

    装上后这 14 个插件后,PyCharm 真的是无敌的存在!

    表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。 点击表头上的小三角可以升序或降序排列表格。...以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7% 点击 Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图。...右上角的4个按钮表示放大、缩小、真实大小、合适大小; 箭头表示调用关系,由调用者指向被调用者; 矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数; 矩形中间显示运行时间和时间百分比; 矩形的颜色表示运行时间或者时间百分比大小的趋势...那对于 Python 这种解释型的语言来说,代码是边运行边翻译的,不需要经过编译这个过程。很多肉眼无法一下子看出的错误,通常都是跑一下(反正跑一下这么方便)才能发现。...如果你的编码能力还没有很成熟,代码中可以有许许多多的隐藏bug,由于 Python 是运行到的时候才解释,导致一次运行只能发现一个错误,要发现100个bug,要运行100次,数字有点夸大,其实就是想说,

    2.6K31

    pycharmhtml插件_pycharm使用技巧

    表头Name显示被调用的模块或者函数;Call Count显示被调用的次数;Time(ms)显示运行时间和时间百分比,时间单位为毫秒(ms)。 点击表头上的小三角可以升序或降序排列表格。...以fun4这一行举例:fun4被调用了一次,运行时间为1000ms,占整个运行时间的16.7% 点击 Call Graph(调用关系图)界面直观展示了各函数直接的调用关系、运行时间和时间百分比,见下图...右上角的4个按钮表示放大、缩小、真实大小、合适大小; 箭头表示调用关系,由调用者指向被调用者; 矩形的左上角显示模块或者函数的名称,右上角显示被调用的次数; 矩形中间显示运行时间和时间百分比...那对于 Python 这种解释型的语言来说,代码是边运行边翻译的,不需要经过编译这个过程。很多肉眼无法一下子看出的错误,通常都是跑一下(反正跑一下这么方便)才能发现。...如果你的编码能力还没有很成熟,代码中可以有许许多多的隐藏bug,由于 Python 是运行到的时候才解释,导致一次运行只能发现一个错误,要发现100个bug,要运行100次,数字有点夸大,其实就是想说,

    1.2K30

    第34节:Java当中的异常

    异常是一种对象,是靠虚拟机产生的,异常中断了正常指令流(程序靠着一个又一个指令)的事件,异常是运行时出现的。...在Java中编译上出现的错误为所谓的语法上等的错误,而异常是编译通过的,但在运行时产生的,和编译是没有什么关系的。...(代表所谓异常,Exception还有很多子类,如:RuntimeException),Error(错误,一旦产生错误,虚拟机关闭,一旦产生Error,虚拟机退出) Exception分为两大类,运行时异常和编译时异常...(); }finally{ // 这里的代码这么样都运行,出不出异常都运行 } 异常分Error和Exception两大类,程序员对Error是没有办法的,只能改代码,但对Exception是可以处理的...// 如果年龄为负数,创建异常对象 RuntimeException e = new RuntimeException("年龄不能为负数"); // 会在运行时抛出这个异常对象,显示 年龄不能为负数

    40240

    Excel编程周末速成班第26课:处理运行时错误

    学习Excel技术,关注微信公众号: excelperfect 主要内容: 理解运行时错误及其原因 如何在过程中启用错误捕获 使用Err对象 编写错误处理代码 延迟错误处理 使用错误作为编程工具 运行时错误是在程序运行时发生的错误...,除非处理该错误,否则它可以使程序在运行时停止。...本课讲解什么是运行时错误以及如何在程序中处理它们。 什么是运行时错误?...在程序运行时发生的程序错误称为运行时错误,重要的是要理解运行时错误(或只是错误)与在VBA程序中可能发生的其他两类问题之间的区别: bug是程序逻辑中的缺陷,会导致程序产生不正确的结果。...但是,如果没有打开,则会发生错误。程序可以在无法提前知道是否打开特定工作簿的情况下使用此功能。清单26-3展示了一个函数,该函数在打开时返回对工作簿的引用,或者在没有打开时返回Nothing。

    6.8K30

    编写数据迁移的14个规则

    如果您为最大查询运行时间设置了阈值(我希望您这样做),它很可能达到该限制并失败。如果没有,它将占用大量内存并且很有可能窒息您的数据库服务器。 我们很多时候都想从其他资源中获取数据。...9.写出大量的日志 一旦我们在生产环境中运行,就会发生奇怪的事情。可以显示各种不需要的案例和神秘数据值。...但在数据迁移中,我们应该考虑另一个方面。 哪些错误会导致我们完全停止我们的脚本?哪些错误是坏的,但我们可以将它们写为对我们日志的警告,稍后修复它们并再次为那些损坏的记录重新运行我们的脚本?...通常,如果错误表明我们的脚本中存在可能导致下一条记录的错误迁移值的错误,我们应该停止我们的脚本。 另一个原因可能是导致所有脚本无法运行的错误。...如果没有,它可能是地狱,但仍然可行。 无论如何,记住这一点。提前计划并在开发环境中进行测试。确保在作为第二个回滚计划之前备份您的数据。 如果发生灾难,良好的回滚可以挽救您的数据。

    2.2K30
    领券