首页
学习
活动
专区
圈层
工具
发布

为什么我的递归函数返回None

问: 我有一个调用自己的函数: def get_input(): my_var = input('Enter "a" or "b": ') if my_var !...: Type "a" or "b": a got input: a 但是,如果我输入别的东西,然后输入 "a" 或 "b",我会得到这样的结果: Type "a" or "b": purple You...Type "a" or "b": a got input: None 我不明白为什么 get_input() 函数返回的是 None,因为它本应只返回 my_var。这个 None 是从哪里来的?...我该如何修复我的函数呢? 答: 它返回 None 是因为当你递归调用它时: if my_var != "a" and my_var !...因此,尽管递归确实发生了,但返回值却被丢弃了,然后你会从函数末尾退出。在函数末尾退出意味着 Python 会隐式地返回 None,就像下面这样: >>> def f(x): ...

1.9K10

感谢 compose 函数,让我的代码屎山💩逐渐美丽了起来~

我都能遇见它会充斥着各种判断,变量赋值、引用飞来飞去,最终成为一坨,没错,代码屎山的 我摸了摸左胸的左心房,它告诉我:“饶了接盘侠吧~” 于是乎,本瓜尝试引进了之前吹那么 nb 的函数式编程!...它的能力就是让代码更可读,这是我所需要的!来吧!!展示!! compose 函数 我们在 《XDM,JS如何函数式编程?看这就够了!(三)》 这篇讲过函数组合 compose!...我们不需关注黑盒子里面做了什么,只需关注:这个东西(函数)是什么!它需要我输入什么!它的输出又是什么!...借助上面 composePromise 函数,我们更加有信心用函数式编程 composePromise 重构 我们的代码了。...至此,我们可以认为:借助 compose 函数,借助函数式编程,咱把业务需求流程进行了封装,明确了输入输出,让我们的代码更加可读了!可扩展性也更高了!这不就是高内聚、低耦合?!

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

    OpenCV论道:为什么我的伽马校正函数只有一行?

    大家好,又见面了,我是你们的朋友全栈君。...实践中发现,光线的强弱、方向对于识别率影响很大,因此打算再增加高光消除、阴影补偿两项。高光消除尝试了很多算法,效果都不是很理想,倒是阴影补偿,使用伽马校正很轻松就搞定了。什么是伽马校正呢?...就是提升图像的暗部细节。这与加曝处理是不一样的,加曝一般不区分图像的暗部和亮部。...奇怪的是,我在网上搜到的伽马校正函数看起来都很复杂,即便是 python 写的,也都得十几行甚至几十行,可我写的伽马校正函数只有一行。为什么会这样呢?是我理解的不对吗?...、伽马校正(gamma=2)的灰度二值化效果、伽马校正(gamma=3)的灰度二值化效果: 对于彩色图片,这个伽马校正函数依然有效。

    1.5K20

    我研究了V神的黄皮书,发现EVM里竟然藏着函数手册,虐哭你别怪我

    那么,关于纯粹性,我能想到最好的定义是:如果给予足够的执行gas和相同的交易数据,一个合约能够总是返回相同的结果,则认为这个合约是「纯粹」的。...非纯粹性操作码的3种类型 定义了「纯粹」之后,我们就来看看什么是「非纯粹」(Impurity),我梳理了一张以太坊合约中非纯粹操作码(opcode)的列表(带*的操作码表示还尚未实现,但今后会予以实现)...因此,为了在一个以太坊交易中允许纯粹性检查,找到地址的方法应该是简单的,并且能在误报时做出反应。 基于此,我总结的方法有以下几个。...地址检测函数法 简单来说,如果在处理调用类型的操作码之前发现了特定的操作码模式,现在声明四个函数来返回地址。如果所有这些函数都返回None,那么该合约则被认为是非纯粹的。...首先,每个函数都输入一个c,作为有问题调用类型操作码的索引。四个函数的运行结果如下。 结果1 ? 结果2 ? 结果3 ? 结果4 ?

    32210

    JQuery第二节

    操作 设置单个属性 //第一个参数:需要设置的属性名 //第二个参数:对应的属性值 attr(name, value); //用法举例 $(“img”).attr(“title”,”哎哟,不错哦”);...【演示动画例子】 三组基本动画 显示(show)与隐藏(hide)是一组动画:滑入(slideUp)与滑出(slideDown)与切换(slideToggle),效果与卷帘门类似淡入(fadeIn)与淡出...//callback(可选):执行完动画后执行的回调函数 【案例:下拉菜单动画版.html】【案例:京东轮播图(呼吸灯).html】 自定义动画 animate: 自定义动画 $(selector).animate...:执行效果,默认为swing(缓动) 可以是linear(匀速) // callback:动画执行完后立即执行的回调函数(可选) 动画队列与停止动画 在同一个元素上执行多个动画,那么对于这个动画来说,...//stop方法:停止动画效果 stop(clearQueue, jumpToEnd); //第一个参数:是否清除队列 //第二个参数:是否跳转到最终效果 【案例:手风琴特效】【案例:音乐导航】 jQuery

    1.4K20

    Fusionapp基础文档

    Fusionapp小文档.jpg 最近又重构了下博客的套壳app,还是用的FusionApp制作的,为了避免忘记特此写一些基础文档。...sidebar 侧滑栏显示图标 pgsBar 进度条 sideLvw 侧滑图标 menu_button 菜单图标 menuBtn...(1) --点击事件,这个点击事件不会取消原本加载的网址 end --0为序号,0是第一个标签,1是第二个标签以此类推 --自定义标签栏点击事件 tabBar.getChildAt(0).onClick...=function() --点击事件 end --0为序号,0是第一个标签,1是第二个标签以此类推 所有标签网站下加入js for i=1,#AllWebView do AllWebView[i]....然后写两个函数分别设置夜间模式和默认模式的控件配色,这样就可以根据数据库的值来执行不同函数进而设置控件颜色了。

    2.4K10

    用VSCode写python的正确姿势

    基本操作 在编辑器中,如果自动提示代码和错误提示,是再好不过的了,Python插件自带的Pylint功能会提示你。 ? 在vscode中,Tab都默认是4个空格。...F9:切换断点 ? 左侧Debug窗口显示调试所用的模式,变量(局部变量,监视),调用堆栈,断点等。 ?...这里需要提醒一下的是,左上角的下拉选择调试模式中,常用的两个是Python和Integrated Terminal/Console,第一个就是在插件自带的环境中调试运行,第二个就是集成的控制台中。...隐藏菜单栏 这个属于个人习惯,如果你也感觉菜单栏很碍眼,可以点击查看->切换菜单栏,即可隐藏菜单栏。...我这边只修改了复制一行和删除一行的快捷键。 ?

    2.8K20

    java swing开发窗体程序开发(一)GUI编程

    大家好,又见面了,我是你们的朋友全栈君。...: 其的双参构造方法:第一个是菜单项名字,第二个是菜单项图标 /** * 创建一个带菜单条,菜单项,子菜单的窗口 */ public class MainForm extends JFrame...即通过选项卡可以切换不同的组件(也可以是子面板JPanel),相当于,第一个选项卡点击 显示第一个界面,第二个选项卡点击,不开新窗口,就在该窗口上显示第二个界面。...JavaSwing中总共就定义了5层,从低到高,分别是 DEFAULT_LAYER,PALETTE_LAYER,MODAL_LAYER,POPUP_LAYER,DRAG_LAYER 同一位置,高层的会覆盖显示底层的...这些组件层叠的放在一起,只有最前面可以显示。 顺序并不是栈,而是队列,即第一个添加进去的组件,显示在最前面,后面的一次往后排。

    4.4K30

    什么是Linux平铺窗口管理器,你应该使用它吗?

    你想在第二个应用程序和你打开的第三个应用程序之间分割显示器的右半部分,因此你打开第三个应用程序并将其拖到显示器的右下角。 这就是窗口贴靠。 现在,想象一下,如果你的窗口管理器可以自动为你执行此操作。...打开第二个应用程序,窗口管理器将缩小第一个应用程序以适应屏幕的左半部分,而第二个应用程序占据右半部分。打开第三个应用程序,它将继续垂直分割屏幕。 一旦这些应用程序打开,你就可以使用键盘移动它们。...如果你真的想创建一个非常高效的工作流程,那么平铺窗口管理器是一个不错的选择,因为它限制了你必须在键盘和鼠标之间切换的次数。当你必须不断地将手从键盘移动到鼠标时,一切都会暂时停止。...你可能认为我会建议从最流行的平铺窗口管理器 i3 开始,但我不会这么说。相反,我强烈建议你使用 Pop!_OS 并使用其平铺窗口管理器扩展。有了这个,你可以在传统桌面和瓷砖桌面之间来回切换。...在同一个下拉菜单中,您可以配置例外以允许某些窗口浮动、更改快捷方式、显示或隐藏窗口平铺、显示活动提示、更改活动边框半径和活动提示颜色,以及增加/减少窗口之间的间隙。 Pop!

    83000

    vs单步调试及断点调试基本介绍(入门版详细图文介绍)

    大家好,又见面了,我是你们的朋友全栈君。...// // // // 如上图 停止在断点行 解释:此时有两个断点,停在第一个断点处,前面的运行完,输出hello // 而下方窗口显示局部变量i的值是468,因为此时停在断点,还没有进入...和3 6 9) // //意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期(预期:输出hello和3 6 9) // //意义:此时可以确定程序从第一个断点一直运行到第二个断点都完全符合预期...// // //上图按了一次f11(别的软件类似)(逐语句运行),此时,运行一行,运行for(int i=0;i的468变为0 // //注,下面的窗口也能显示变量的内存地址相关信息...// // // 另,f10是逐过程调试,不会进入函数块(本文就不测了,自己写个函数调用实践一下)。

    4.2K40

    0基础开发小程序游戏

    单击“开始”按钮后,会快速切换“锤子”、“剪刀”和“布”,直到按“停止”按钮,会显示“锤子”、“剪刀”和“布”中的一个,该游戏可以双方或多方进行,猜拳的规则就不多说了,大家都清楚。...我们不需要管 logs,在这个例子中只修改和 index 页面相关的文件,index 是小程序第一个显示的页面,其中 index.wxml 文件是 index 页面的布局文件,现在打开该文件,并按下面的内容修改代码...5 控制剪子、石头、布的快速切换 猜拳游戏的核心就是快速切换剪子、石头、布三个图像,当单击“停止”按钮后,会停到其中一个图像上,这里涉及到如下两个动作: 用定时器快速切换图像。...图像下方的按钮,当一开始单击时,文本变成了“停止”,当再次单击该按钮后,按钮文本又变成了“开始”,即一个按钮同时负责开始和停止图像快速切换两个动作。...现在可以通过左侧的模拟器来测试成果了。单击“开始”按钮,看图像是否会快速切换,再单击“停止”按钮,看是否会停止在某个图像上。

    5.5K50

    为什么要学jquery

    为什么要学jquery 使用javascript开发过程中,有许多的缺点: 查找元素的方法单一,麻烦。 遍历数组很麻烦,通常要嵌套一大堆的for循环。 有兼容性问题。...jquery的入口函数 使用jQuery的三个步骤: 引入jQuery文件 入口函数 功能实现 关于jQuery的入口函数: //第一种写法 $(document).ready(function() {.../*3.切换滑入滑出*/ $('li').slideToggle(); 对应案例:​​案例-《下拉菜单》​​ 淡入淡出 /*注意:动画的本质是改变容器的透明度*/ /*1.淡入动画*/...不支持动态事件绑定 delegate注册委托事件 // 第一个参数:selector,要绑定事件的元素 // 第二个参数:事件类型 // 第三个参数:事件处理函数 $("...使用jQueryUI功能 使用jquery.ui.js手风琴菜单 制作jquery插件 原理:jquery插件其实说白了就是给jquery对象增加一个新的方法,让jquery对象拥有某一个功能。

    1K10

    jquery第一次课的案例教程

    为什么要学jquery 使用javascript开发过程中,有许多的缺点: 查找元素的方法单一,麻烦。 遍历数组很麻烦,通常要嵌套一大堆的for循环。 有兼容性问题。...jquery的入口函数 使用jQuery的三个步骤: 引入jQuery文件 入口函数 功能实现 关于jQuery的入口函数: //第一种写法 $(document).ready(function() {...; /*3.切换滑入滑出*/ $('li').slideToggle(); 对应案例:案例-《下拉菜单》 淡入淡出 /*注意:动画的本质是改变容器的透明度*/ /*1.淡入动画...不支持动态事件绑定 delegate注册委托事件 // 第一个参数:selector,要绑定事件的元素 // 第二个参数:事件类型 // 第三个参数:事件处理函数...使用jQueryUI功能 使用jquery.ui.js手风琴菜单 制作jquery插件 原理:jquery插件其实说白了就是给jquery对象增加一个新的方法,让jquery对象拥有某一个功能。

    67810

    第73天:jQuery基本动画总结

    - 元素显示完毕后需要执行的函数。函数内的this指向当前DOM元素。 fadeIn()函数用于显示所有匹配的元素,并带有淡入的过渡动画效果。...- 注释:隐藏的元素不会被完全显示(不再影响页面的布局) 12、jQuery中动画animate(上) 有些复杂的动画通过之前学到的几个动画函数是不能够实现,这时候就需要强大的animate方法了 操作一个元素执行...,第二个第三个继续 - stop(true):停止第一个、第二个和第三个动画 - stop(true ture):停止动画,直接跳到第一个动画的最终状态 15、jQuery中each方法的应用 jQuery...; each就是for循环方法的一个包装,内部就是通过for遍历数组与对象,通过回调函数返回内部迭代的一些参数,第一个参数是当前迭代成员在对象或数组中的索引值(从0开始计数),第二个参数是当前迭代成员(...注意了:在ECMAScript5已经有数据的indexOf方法支持了,但是jQuery保持了版本向下兼容,所以封装了一个inArray方法 jQuery.inArray()函数用于在数组中搜索指定的值,

    4.2K10

    Matlab上位机开发(二)Hello,World

    控件栏 控件栏中提供了13个控件,分别为: 按钮 滑动条 单选按钮 复选按钮 可编辑文本 静态文本 弹出式菜单 列表框 切换按钮 表 坐标轴 面板 按钮组 2.2....属性非常多,可以根据自己的需要进行设置,这里我调整字体大小(fontsize)为28,字体内容(string)为“HelloWorld”: ? 这些属性切换到分类模式下就很好理解了: ?...一些顾名思义的属性不再赘述,只讲述一些matlab中特有的: ① 控件风格和外观 CData:在控件上显示的图像; ② 控件回调函数的执行控制 BusyAction:处理回调函数的中断,有两种选项:即Cancel...其中hObject 为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄,在该回调函数中添加下面的这行代码,来修改静态文本显示控件的属性值: set(handles.text3...,'String','按钮按下啦~'); 第一个参数根据传入的对象句柄和控件的唯一标识来寻找控件,第二个参数为要改哪个属性,第三个参数为改变的属性值,举一反三,其它的操作也是一样。

    2K10

    一个产品级MCU菜单框架设计

    但是对于我来说,菜单代码是一次性的,但是菜单内容,却是会经常改的。 让我用人脑去维护一个包含几十个上百个菜单的树,不容易。 想来想去,这些菜单到底有什么不好?对于我来说,为什么不好用?...得出下面结论: 管得太宽 菜单,你就管菜单切换就行了,到了最低一层,也就是实际的测试功能,就不要管了。 菜单切换是类似的,实际测试都是不同的。比如在菜单中,按键1,是进入第一个菜单。...我想要的却是一个容易维护的菜单结构,至于菜单的代码有多乱多纠结,没关系, 而且,几百上千个菜单,就算用轮询的方法,也不过几百us吧,没关系。...根据需求,我重新设计了一个菜单结构体 /** * @brief 菜单对象 */ typedef struct _strMenu { MenuLel l; ///菜单等级 char...每页最多显示8个菜单(4*4键盘用1-8键) 2 实现了单列菜单,通过上下翻查看菜单,确认键进入菜单。 3 天顶菜单未实现,谁有兴趣可以加上。

    1.3K31
    领券