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

为什么我的递归函数返回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): ...

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

    Python 为什么没有 main 函数?为什么我不推荐写 main 函数?

    本期“Python 为什么”栏目来聊聊 Python 为什么没有 main 函数? 在开始正题之前,先要来回答这两个问题:所谓的 “main 函数”是指什么?...为什么有些编程语言需要强制写一个 main 函数?...函数最多只能有一个,也就是说程序的入口是唯一的 语法格式有一定的要求,具有相对固定的模板 为什么要强制一个main入口函数呢?...为什么要写那行 if 语句呢?可能的话,应该拆分 main 函数,甚至不必封装成一个函数啊! 我个人总结出以下的经验: 打破惯性思维,写出地道的代码。...小结:本文首先解释了什么是 main 入口函数,以及为什么某些语言会强制要求写 main 函数;接着,解释了为什么 Python 不需要写 main 函数;最后则是针对某些人存在的惯性误区,分享了我个人的四点编程经验

    2.5K31

    为什么我坚持使用 JavaScript 函数声明

    ; 这个函数表达式体现了 ES 2015 的最大亮点——箭头函数(Arrow function),精简可爱,简直迷死人。第一次看到它时,我的内心戏是:“憋说话,吻我”!...即使是免费的 Babel(JavaScript编译器),也无法阻挡我对函数声明的喜爱。...我对箭头函数绝对是真爱,但要声明一个顶级函数时,我仍用“土气”的函数声明。 为什么呢?“Uncle Bob” Martin 是这么说的: 花1小时写代码,就要花10小时检查代码。...但我的意见是:代码就是用来交流的。好的代码就是一则精彩的故事。 我会用编译器、转译器、压缩工具等来优化机器的代码。但是优化代码对我来说就是让其更简单易懂。 3 关于箭头函数 是的,箭头函数是真爱啊。...我一般会用箭头函数来通过一个小函数,将其作为更高阶函数的值。使用箭头函数时,还会使用地图、过滤器等,它们都是我的好朋友。

    1.1K80

    在线等,我的 adb 找不到了!

    您若照做,便可能会出现以下内容: command not found: adb (找不到命令: adb) 或者: adb : The term 'adb' is not recognized as the...(adb: 无法将“adb” 项识别为 cmdlet、函数、脚本文件或可运行程序的名称) 如果您下意识地去搜索 "如何安装 adb",最后可能会找到一些通过操作系统的包管理工具或者从手机定制网站上下载一些压缩文件来进行安装的说明... PATH="$ANDROID_SDK_ROOT/platform-tools:$PATH" 在我的电脑上就是: export ANDROID_SDK_ROOT="/Users/martinpatrick...Windows 配置 Windows 稍有不同,我将完全在 PowerShell 中工作。...和前面一样,我可以使用 SDK 管理器找到 SDK 的安装位置: 而且我也能更改目录以找到我的 platform-tools: 要在 PowerShell 中更新 PATH,请输入: $env:PATH

    1.9K20

    vue中组件的data为什么是一个函数

    组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念,组件每复用一次,data数据就应该被复制一次...,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响,如下面这个例子: ?...该组件被复用了三次,但每个复用的地方组件内的count数据相互不受影响,它们各自维护各自内部的count。 ?...能有这样效果正是因为上述例子中的data不是一个单纯的对象,而是一个函数返回值的形式,所以每个组件实例可以维护一份被返回对象的独立拷贝,如果我们将上述例子中的data修改为: ?...那么就会造成无论在哪个组件里改变了count值,都会影响到其他两个组件里的count。 ?

    1.2K20

    网友:那为什么我还找不到好工作?

    但是为什么有很多人,学完了Python还是找不到好工作呢? 这里想先跟大家分享一个事实:企业招聘到合格的程序员很难。 笔者与某大厂的HR请教了大家很关心的一些问题,在这里与大家分享。...应届生可放宽 凡找不到工作的,大概率是编程能力没有达到企业用人的最低标准。 打铁还得自身硬。只有通过企业的面试才有机会当程序员。...还是拿谈恋爱做个类比,大部分女孩都会选择对自己最上心的追求者,更何况是工作赚钱呢? 四、这里划重点!这句话绝对不准说! 千万不要说:“我还在等xx公司的offer。”...我们公司是被挑剩下的吗?那个公司不录用才会选择我们?那我们干脆不要给Offer了,合适的人才一定会找到,为什么要等你的挑拣?...正确说法是:我还在综合看机会,需要衡量哪份工作跟我未来的规划更符合,能够给我更多的成长空间。 (骚年,尊重是相互的。) 说到这里,你还会觉得Python开发者找不到工作,是Python的错吗?

    63600

    Jest单元测试之旅—实践总结

    为什么要写单元测试? 怎么写单元测试? 什么是单元测试? 维基百科对于单元测试的定义:是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。...而针对与我们前端来说,我认为单测就是:UI测试和逻辑测试,逻辑测试包含:工具类/函数、业务相关代码测试。UI测试分为:公共组件和业务组件测试。 为什么要写单元测试?...大部分单测的代码量都大于了实现,那为什么我们还要鼓励写单测呢?...所以在我们决定要写单测时,应该考虑我们的优先级:公共方法 > 核心逻辑 > 公共组件 > 业务组件。...为什么我们需要进行Mock数据呢? 第一:在有些情况下我们没办法在测试环境中使用一些API或全局的方法,此时Jest提供的Mock方法是解决问题该重要手段。

    10.3K20

    为什么Github上找不到Docker的源码

    但Docker公司的做法就比较过分了,相当于把Docker粉丝强行转变成自己的客户。 这也是所罗门一再解释「原Docker用户不受影响」,但没人买账的原因。...放眼业内,开源产品能赚钱的寥寥无几。真要较真也就RedHat这种操作系统刚需技术,即有强大的技术壁垒,也有多年的市场沉淀,还算成功。但和Oracle、IBM这种公司比起来简直九牛一毛了。...Docker的未来 容器是由 Linux 内核所提供的具有特定隔离功能的进程,容器技术能够让你对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。...从而让你在不同环境(如开发、测试和生产等环境)之间轻松迁移应用的同时,还可保留应用的全部功能。 容器化无疑是新VMware的未来和方向。...还不知道怎么找Docker的源码?那这么多字我算是白写了。

    4.1K20

    React Hook测试指南

    在React为什么需要Hook中我们探讨了React为什么需要引入Hook这个属性,在React Hook实战指南中我们深入了解了各种Hook的详细用法以及会遇到的问题,在本篇文章中我将带大家了解一下如何通过为自定义...moduleFileExtensions: 告诉jest在找不到对应文件的时候应该尝试哪些文件后缀。...),组件需要被重新渲染,而这个重渲染是需要React进行调度的,因此是个异步的过程,我们可以通过使用act函数将所有会更新到组件状态的操作封装在它的callback里面来保证act函数执行完之后我们定义的组件已经完成了重新渲染...接着我们使用act函数来调用改变组件状态count的increment函数,act函数完成之后我们的组件也就完成了重渲染,后面就可以判断更新后的count是不是我们想要的结果了。...总结 在本篇文章中我给大家介绍了什么叫做单元测试,为什么我们需要在自己的项目里面引入单元测试以及教大家如何使用Jest和react-hooks-testing-library来测试我们自定义的hook。

    1.7K10

    「React进阶」我在函数组件中可以随便写 —— 最通俗异步组件原理

    不可能的事 我的函数组件中里可以随便写,很多同学看到这句话的时候,脑海里应该浮现的四个字是:怎么可能?因为我们印象中的函数组件,是不能直接使用异步的,而且必须返回一段 Jsx 代码。...1.jpg 那么今天我将打破这个规定,在我们认为是组件的函数里做一些意想不到的事情。接下来跟着我的思路往下看吧。...而这个错误警告,就是 React 内部发出找不到上层的 Suspense 组件的错误。...鬼畜版——我的组件可以写异步 即然直接 throw Promise 会在 React 底层被拦截,那么如何在组件内部实现正常编写异步操作的功能呢?...那么正常情况下组件染是一气呵成的,在 Susponse 模式下的组件渲染就变成了可以先悬停下来。 首先解释为什么悬停? Susponse 在 React 生态中的位置,重点体现在以下方面。

    3.8K30

    函数式组件的崛起

    这些限制决定了函数式组件只能用作非常简单的View Component,担不起重任。...,函数式组件也迎来了“shouldComponentUpdate” 当然,最重要的增强自然是Hooks: Hooks 让函数式组件也能拥有状态、生命周期等 Class 组件特性(如 state, lifecycle...,函数式组件将拥有与 Class 组件几乎相同的表达力,包括各种生命周期、State 等 If you write a function component and realize you need to...,函数式组件的 State 值通过 State Hook 来获取(上例中的count),而不是this.state。...应对 state 需要关联 props 变化的场景 (摘自二.如何理解 getDerivedStateFromProps) 函数式组件中,对于 props 变化引发 state 变化的场景,可以直接通过

    1.7K40

    React 函数组件不是有状态吗,为什么还要说他是纯函数

    React 知命境第 40 篇,原创第 153 篇 许多人在学习 React 时会有这样一个疑问,不断看到 React 官方团队言论,或者说各路大佬都是在说 React 是函数式编程,我们写组件确实写的是组件...,但问题就在于,我们写的组件是有内部状态,这样的函数就不是纯函数了,这怎么能算是函数式编程呢?...今天这篇文章,就来跟大家解释一下,为什么 React 的函数式组件,其实就是纯函数。...每一个函数的状态都被存在了另外一个模块里(Fiber tree)。也就是说,只要 React 允许,我们甚至可以在别的组件访问到任意一个组件里的状态。...当然是因为参数太多了写不下了呀,因此 React 把传参的行为,下放到了函数内部,通过 hook 的方式来实现 3、重新审视 hook 如果 state 是外部传入的参数,那么此时我们就要重新审视一下为什么不能把

    20910

    单元测试

    对 End User 来说,他们只会和 render 函数里的内容有交互,而 Developer 则会和组件传入的 Props 有交互。...所以,我们的测试用例只和传入的 Props 以及输出内容的 render 函数进行交互就够了。...: 分支覆盖率,执行到每个 if 代码块; Functions: 函数覆盖率,调用到程序中的每一个函数; Lines: 行覆盖率,执行到程序中的每一行。...,找不到元素会报错 queryBy* 用于查询我们希望它不存在的元素并进行断言,找不到元素返回null findBy* 用于查询需要等待的异步元素,不需要使用waitFor包裹 批量选择:getAllBy...in UsernameForm import { render, screen, act } from '@testing-library/react'; act 是一个用于处理 React 组件的异步更新和副作用的工具函数

    31310

    为什么软件工程师找不到工作?我想分享四个“恐怖故事”

    首先,这位面试工程师甚至都不能真正告诉我,他为什么拒绝了这个候选人,他给出的理由只不过是说“代码被过度设计了”,尽管实际上这段代买的结构是完全正确的,所有ES6操作符和短函数都是正确的、有效的。...再次,我可以提供一些背景信息来解释了为什么我们的候选人使用了这样一个未知的MVC框架:这家招聘前端的公司是一个寻找可重复流程的机构,而首席工程师(不是前文中的面试者)曾经向我抱怨,他们每次都要“为每个客户重新发明一套机制...因为拒绝这位候选人的面试官没有看我的笔记或我的视频采访记录,他没有考虑到为什么候选人使用这个框架,而只是按下了“拒绝”的按钮。...他和人力资源部都不明白为什么没有人和他进一步保持联系。所以我给所有的相关人士都写了邮件,询问我们是否能完成这个招聘过程。 人力资源部门通常是这样一个存在——薪水底下,缺乏组织。...让我们叫这位面试官“乔恩”吧,我很震惊如此优秀的候选人居然被乔恩拒绝,所以我打了个电话,进行三方会谈。 乔恩在电话里解释了他为什么拒绝那个候选人的原因,不过听起来挺可笑的,我也不知道乔恩是不是认真的。

    47430

    为什么我的BERT不行?

    当然了,bad case分析这块我也聊了很多,多分析能发现其中的端倪,知道模型需要什么,该怎么处理,我再放一遍在这里,希望能好好阅读。...训练层面的分析 BERT的训练其实挺多讲究的,这里的实验效果要保证对参数的有一定的要求,所以大家要多去观察训练过程暴露的问题,训练过程其实就是要观测loss变化、验证集效果等的问题,放置没学到、学飘了之类的问题...类似的思路其实我在这两篇文章里其实都有谈过: 心法利器[44] | 样本不均衡之我见 所以,很多时候你需要的可能是更多地挖掘数据,从日志,从更多渠道去找,这个可能比增强本身要好。...这里背后的逻辑可以参考我这篇文章: 心法利器[45] | 模型需要的信息提供够了吗 训练问题 针对训练问题,其实也就是一个经验的问题了,多弄其实问题就会小很多,大家可以多去看各个论文使用的超参,一般调的差不多基本都不会有的...而文章本身的输出并非是按照这个思路走,而是从一些大家经常问的点深入来讨论,希望能从我的角度和风格来思考和回答问题。

    1.2K20

    React 函数组件和类组件的区别

    三、函数组件与类组件的区别 1、语法上 两者最明显的不同就是在语法上: 函数组件是一个纯函数,它接收一个 props 对象返回一个 react 元素; 类组件需要去继承 React.Component...2、状态管理 因为函数组件是一个纯函数,所以不能在组件中使用 setState(),这也是为什么把函数组件称作为无状态组件。...react 元素,类组件重新渲染将 new 一个新的组件实例,然后调用 render 类方法返回 react 元素,这也说明为什么类组件中 this 是可变的。...分别按下面的顺序来操作 Follow 按钮: 先点击 Follow 按钮 在 3s 之前更改下拉选择项的选项 阅读弹出的警告框内容 这就发现函数组件和类组件是有区别的: 函数组件:按上面所列的三个步骤操作时...中的用户名会立马改变,而 3s 后弹出的警告框中的用户名也会改变 那么,为什么我们的类示例会这样表现呢?

    7.5K32

    我发现了华点:vue规定用普通函数定义方法,为什么react又要我用箭头函数!

    大家好,我是年年! 如果使用过react和vue,应该发现过一个问题:vue告诉我们不应该把方法、生命周期用箭头函数去定义;而在react的类组件中,把方法写成箭头函数的形式却更方便。...在调用时分别打印this,结果如下: 箭头函数中this正确指向了组件实例,但普通函数中却指向了undefined,为什么?...这时就出现了this指向undefined的情况。 但为什么使用箭头函数,this又可以正确指向组件实例呢?...这样就可以解释为什么react组件中,箭头函数的this能正确指向组件实例。...结语 「为什么react中用箭头函数,vue中用普通函数」这是一个挺很有意思的问题,简单来说,这种差异是由于我们写的react是一个类,而vue是一个对象导致的。

    79610

    作为面试官,为什么我推荐组件库作为前端面试的亮点?

    theme: vue-pro 前言 在上一篇作为面试官,为什么我推荐微前端作为前端面试的亮点?...反馈效果不错,我接着出第二篇组件库专题,主要是我选择的方向,前端同学都可以很轻易尝试,这样项目上就增加很多亮点了 大厂面试的时候,我也看到很多候选人写了xx组件的封装,很少见过二次组件库的封装或者维护开源组件库...,其实这些都是项目上的亮点,一般面试官如果看到,都会详细考察 本文将会以antd Element vant等等组件库为例子,会进行分析对比 为什么需要二次封装组件库?...请结合一个组件库设计的过程,谈谈前端工程化的思想 当我们结合一个组件库设计的过程来谈论前端工程化的思想时,需要理清这些要点: 1....点击节点展开折叠,复选框状态切换等 点击展开折叠通过更新节点自身状态、可视状态及ExpandedKeys实现 点击复选框需要递归更新父子节点的状态,及相关keys 计算并保存实时状态,通过回调函数通知外部

    1.4K63
    领券