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

Python 函数为什么会默认返回 None

不管有没有写 return,它们都会执行 return 的逻辑,而且默认的返回值就是 None。 那么,问题来了:Python 的函数为什么能默认返回 None 呢?它是如何实现的呢?...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...,Python 解释器就会(强行地)默认给我们注入一段返回逻辑!...那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢?...2、Python 的缩进是不是反人类的设计? 3、Python 为什么不用分号作语句终止符? 4、Python 为什么没有 main 函数?为什么我不推荐写 main 函数?

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

为什么 useState 返回的是 array 不是 object?

,那么为什么是返回数组不是返回对象呢?...为什么是返回数组不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...,那么使用者可以对数组中的元素命名,代码看起来也比较干净 如果 useState 返回的是对象,在解构对象的时候必须要和 useState 内部实现返回的对象同名,想要使用多次的话,必须得设置别名才能使用返回值...array 不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState 返回的是 array...不是 object?

2.1K20

Python 递归函数返回值为 None 的解决办法

在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。 下面来举一个例子: >>> def fun(i): ... ...return i ... >>> r = fun(0) >>> print(r) 比如上面这段代码,乍一看没什么问题,但返回值并不是我们期望的 5,而是 None。...>>> print(r) None 要解决这个问题也简单,就是在执行递归调用的时候,加上 return 语句。 修改之后的代码如下: >>> def fun(i): ... ...---- 推荐阅读: 计算机经典书籍 技术博客: 硬核后端开发技术干货,内容包括 Python、Django、Docker、Go、Redis、ElasticSearch、Kafka、Linux 等。...面试题汇总: 包括 Python、Go、Redis、MySQL、Kafka、数据结构、算法、编程、网络等各种常考题。

67100

python递归调用中的坑:打印有值, 返回None

今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有值, 返回None问题。...输出结果让我百思不得其解, 为什么明明上一步输出有值, return出去后就变成了None??...return right_shift(s, n) s = right_shift(s1, 4) print(s) # 成功输出 "efgabcd" 知识点补充:python 递归返回None 解决 今天写了一个递归...return 之前答应出来都是有值的, 调用时候返回值都是None ,很是纳闷 后来找到原因 现在来看下返回None 的代码 def get_end_parent_ele(self, obj):...None 总结 到此这篇关于python递归调用中的坑:打印有值, 返回None的文章就介绍到这了,更多相关python递归打印有值返回none内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

2.4K31

为什么特征工程要用 SQL 不是 Python

比如让研发工程师去理解算法工程师的一些思路是很困难的,意味他们不懂机器学习,甚至难以校验自己做的是不是对的。...大的原则是: 使用 SQL 不是 Python 去完成特征工程 尽可能减少 Python 的使用,Python 应该尽可能仅仅用于模型部分 先说这个原则带来的好处,再说说现在这个原则以前为什么没落地,...无需逻辑校验成本 说说落地的困难: SQL 可能无法完成非常复杂的特征处理逻辑 Python 在某些时候在可视化亦或是特征处理上是不可避免的 这里值得注意的是,我们不是拒绝 Python 做特征工程,而是尽可能减少使用...UDF 函数,比如执行如下代码: register ScriptUDF.`` as arrayLast where lang="scala" and code='''def apply(a:Seq[String...函数来完成的,此外 Byzer 可能在这种实时大规模计算上无法保证毫秒级的响应时间,这个时候就可以引入 OpenMLDB了,我们可以封装一个 UDF 函数调用 OpenMLDB 接口来完成特征的获取,不是通过

73520

Python】函数 ④ ( 函数 None 返回值 | None 值应用场景 | 用于 if 判断 | 定义无初始内容变量 | 代码示例 )

一、函数 None 返回值 1、空返回值 在 Python 函数中 , return 返回值是可选的 , 函数可以没有返回值 ; def 函数名(函数参数): """函数文档字符串(可选)"""...# 函数体 # return 返回值 (可选) Python 函数中没有显示定义返回值 , 那么返回的就是 特殊字面量 None , 其类型是 ; None...表示没有实际意义 , 返回空 , 不需要处理返回值信息 ; Python返回 None 相当于 Java / C / C++ 中的 void Kotlin 中的 Unit 等 空返回值 ; 2、代码示例...return 关键字返回 None 在该示例中 , 比上一个示例多了 return None 返回值 , 其执行效果与没有返回值一模一样 ; 代码示例 : """ 接收 函数 None 返回值示例 ""...None 二、None 值应用场景 ---- 1、None 值应用场景简介 函数 None 返回值应用场景 : 函数返回值 : 表示函数没有返回值 ; 用于 if

30820

解决python cv2.imread 读取中文路径的图片返回None的问题

使用cv2读取图片时,输出图片形状大小时出现报错“ ‘NoneType’ object has no attribute shape”,后来排查发现读取图片的返回值image为None, 这就说明图片根本就没有被读取...0 python3.x, cv2.imread()导入图片失败,none 1....有时候改了后缀名,文件仍能被打开(我遇到的情况),是因为文件内容还有文件头,有些应用程序会根据文件头中的信息来判断文件的格式(比如windows自带的照片查看器)不是通过后缀名。...应用python PIL包的Image模块将图片重新转换格式为jpg(彻底转换格式,不是只改后缀) (当然如果只需要几张图的话,直接用画图打开另存jpg格式就好了) img = Image.open...cv2.imread 读取中文路径的图片返回None的问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.6K40

为什么我们的机器学习平台支持Python不是R

前言 免责声明:以下内容是基于作者的观察——不是一个行业的学术调查。 有很多文章比较了Python和R在数据科学方面的相对优点。但是这并不在这篇文章的讨论范围。...有些人可能特别喜欢一种语言的语法,或者可能更喜欢R的默认绘图库(ggplot2),不是Matplotlib或其他Python选项。也有其他人会指出Python比R更具有表现力。...让我们看一个真实的例子: 如果要为您的公司构建一个客户服务机器人,您可能需要将您的模型部署为一个微服务,它将接受客户输入并返回一个响应,该响应将在机器人的前端呈现。...负责它们的人不是数据分析师,而是工程师(就职责而言,不是头衔而言),他们使用的是软件工程师熟悉的工具和语言,比如Python。R始终是生成仪表板和报告的有效工具。...--- Flask,当然来自于Python. 换句话说,我们为机器学习工程师不是数据分析师建立了一个平台,这意味着我们支持Python不是R。 ? ·END·

65410

百度地图---获取当前的位置返回的是汉字显示不是经纬度

这是当前项目的第二个需求,返回当前的位置  这个需求在百度地图里面实现很简单,但是出了一大堆的乱起八糟的错误,错误等到后面的文章再说,先说要获取当前位置怎么做 原理很简单: 第一个需要是的通过  GPS...返回geocode    第二步就是反geo转码得到地址输出来就可以了 实现的时候就三个东西: 1.定位器  百度里面称为  LocationClient 2.返回结果的监听器 百度里面是 一个接口类  ...MyLocationListenner myListener = new MyLocationListenner(); GeoCoder mSearch = null;//反编译地理位置 private String...,当前你也可以用String 来存储了 onCreate()里面加上这些代码:         mLocationClient = new LocationClient(this.getApplicationContext...true);         }     }     /**      * 显示请求字符串      * @param str      */     public void logMsg(String

2.3K40

java – 为什么InputStream#read()返回一个int不是一个字节?

但是为何方法InputStream#read()需要返回int类型值呢?...首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char值,比如char...中的-1值,那么就占用了此字符,如果字节数据恰好对应-1值,那么就无法被正确读出,且会被错误认为i字节数据读好了,这就是返回int类型值的原因,当然,字节数据被转为int表示,需要高24位布零。...其次,既然只是如上的需求,那么为什么不返回short值呢? 实际上在Java内存模型中,对于short以及int类型值,都是占据32位的内存空间的。...换言之,我们没有在这个应用中返回int/short类型的数据是没有区别的,所以我们不妨就使用代表其实际内存模型的int类型值。

1.2K20

一文读懂《Effective Java》第43条:返回零长度的数组或集合,不是null

对于一个返回null 不是零长度数组或者集合的方法,客户端几乎每次用到该方法都可能会忘记写专门处理null 返回值的代码,进而导致NPE。...返回值为null 与性能 有时候会有程序员认为:null 返回值比零长度数组更好,因为它避免了分配数组所需要的开销,但这种观点站不住脚。...在返回值这种级别上担心性能问题是不明智的,除非分析表明这个方法是造成性能问题的真正源头 对于不返回任何元素的调用,每次返回同一个零长度数组是有可能的,因为零长度数组不可变的,不可变对象可能被自由的共享...,没理由返回null,二是返回一个零长度的数组或者集合。...Java 的返回值为null 的做法,很可能是从C 语言沿袭过来的,在C 中,数组长度是与实际的数组分开返回的,如果返回的数组长度为0,再分配一个数组就没有任何好处了。

1.6K20

为什么 C# 的 string.Empty 是一个静态只读字段,不是一个常量呢?

使用 C# 语言编写字符串常量的时候,你可能会发现可以使用 "" 不能使用 string.Empty。...进一步可以发现 string.Empty 实际上是一个静态只读字段,不是一个常量。 为什么这个看起来最适合是常量的 string.Empty,竟然使用静态只读字段呢?...也就是说,string.Empty 字段并不是一个普通的字段,对它的调用会被特殊处理。但是是如何特殊处理呢?...需要是一个静态只读字段不是常量?...String 类的构造函数(注意不是静态构造函数,String 类的静态构造函数是特殊处理不会调用的); 如果这是一个静态字段,那么编译器可以在不做特殊处理的情况下,生成 ldsfld string

1K00

Python为什么要len(array),不是像Java一样array.size()?

知乎上有个问题,关于Python和Java语法的对比,同样是计算数组长度,为什么Python使用len(array),属于内置函数,Java则用array.size(),属于类方法。...比如类型声明,python不需要指定类型,java必须要指定。 比如代码块,python用缩进表示代码块,java用{}表示代码块。...比如异常处理,Python使用 try 和 except 块来处理异常。Java使用 try 和 catch 块,并且必须捕获所有可能的异常。...这是python和Java在语言特性上的差异,没有好坏之分,只有应用场景之别。 python是动态语言,追求简单方便易懂,适合写脚本快速开发,java是静态语言,追求稳定安全快速,适合写网站软件。...所以啊,如果你的需求是写算法、写爬虫,处理数据,就去用python,如果是写网站、写游戏,就去用Java ,讨论谁好谁差,实在没有意义。

7610
领券