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

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

Python 有一项默认的做法,很多编程语言都没有——它的所有函数都会有一个返回值,不管你有没有写 return 语句。...return 语句,但是在函数调用后,都能取到一个返回值。...答案就在解释器中,当 CPython 解释器执行到函数的最后一个代码块时,若发现没有返回值,它就会主动地加上一个 Py_None 值返回(出自:compile.c): 也就是说,如果定义的函数没有返回值...那么,这就会引出新的问题:Python 为什么要求函数都要有返回值呢?为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回值的空函数呢?...本文属于“Python为什么”系列(Python猫出品),该系列主要关注 Python 的语法、设计和发展等话题,以一个个“为什么”式的问题为切入点,试着展现 Python 的迷人魅力。

2.1K40

为什么1000 == 1000返回为False,而100 == 100返回为True?

/1 Integer c = 100, d = 100; System.out.println(c == d);//2 你会得到以下运行结果: false true 我们知道,如果两个引用指向同一个对象...,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的。...如果你查看Integer.java类,你找到IntegerCache.java这个内部私有类,它为-128到127之间的所有整数对象提供缓存。...return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); } 如果值在 -128 到 127 之间,它就会返回该缓存的实例...这就是为什么这段代码的结果为true了: System.out.println(c == d); 现在你可能问,为什么会为-128到127之间的所有整数设置缓存?

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

奇怪的Java题:为什么128 == 128返回为false,而127 == 127返回为true?

奇怪的Java题:为什么128 == 128返回为false,而127 == 127返回为true? 在回答这个问题之前,我们先来看看int和Integer的对比,一步步揭开问题的答案。...Integer i = new Integer(100); int j = 100; System.out.print(i == j); //true 因为包装类Integer和基本数据类型int比较时,java自动拆包装为...Integer k = new Integer(100); } } java在编译Integer x = yyy ;时,翻译成为Integer x = Integer.valueOf...而java API中对Integer类型的valueOf的定义如下,对于-128到127之间的数,进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127...5.2 Integer源码解析 给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,源码如下: public static Integer valueOf(String

2.2K31

Mybatis查询结果为时,为什么返回值为NULL或空集合?

开始前我们先看一个问题: 你是否曾经在学习 Mybatis 的时候跟我有一样的疑问,什么情况下返回 null,什么时候是空集合,为什么会是这种结果?那么你觉得上述这种回答能说服你嘛?...看完这篇你就知道查询结果为时候为什么集合会是空集合而不是 NULL,而对象为什么会是 NULL 了。 PS:对过程不感兴趣的可以直接跳到最后看结论。...当返回行的所有列都是时,MyBatis 默认返回 null。当开启这个设置时,MyBatis返回一个实例。 请注意,它也适用于嵌套的结果集(如集合或关联)。...如果返回值是 Java 集合类型,如 List、Map,先初始化(new 一个集合对象),再把结果添加进去;如果返回值是普通对象,查询不到时,返回值是 null。...所以不管是集合类型还是普通对象,Mybatis 都会先初始化一个 List 存储结果,然后返回值为普通对象且查为的时候,selectOne 判断然后直接返回 NULL 值。

4.9K20

2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。 给你一个整数数组 nums ,返回 nums 的所有非序列 的 宽度之和

2023-04-29:一个序列的 宽度 定义为该序列中最大元素和最小元素的差值。...给你一个整数数组 nums ,返回 nums 的所有非序列 的 宽度之和由于答案可能非常大,请返回对 109 + 7 取余 后的结果。...子序列 定义为从一个数组里删除一些(或者不删除)元素,但不改变剩下元素的顺序得到的数组例如,3,6,2,7 就是数组 0,3,1,6,2,2,7 的一个序列。输入:nums = 2,1,3。...答案2023-04-29:解题思路:排序首先对数组进行排序,这样我们就可以根据每个子序列的首尾元素来计算它的宽度了。...计算宽度我们使用 A 表示当前子序列的宽度,即末尾元素与首元素的差值,使用 B 表示上一个序列的宽度,即前一次循环中的 A 值。

67800

面试:什么是序列化,怎么序列化,为什么序列化,反序列遇到什么问题,如何解决?

) 三、如何实现序列化 实现Serializable接口即可 上面这些理论都比较简单,下面实际代码看看这个序列化到底能干啥,以及产生的bug问题。...,把得到的字节序列写到一个目标输出流中。...ObjectInputStream代表对象输入流: 它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。 具体怎么看运行情况。...那么,我该怎么赋值,eclipse可能自动给你赋值个一长串数字。这个是没必要的。 可以简单的赋值个 1L,这就可以啦。。这样可以确保代码一致时反序列化成功。...不同的serialVersionUID的值,影响到反序列化,也就是数据的读取,你写1L,注意L大些。

29920

为什么平稳序列的自相关系数很快的衰减于零

平稳时间序列 时间序列必须是平稳的才可以做后续分析,差分和log都是为了使时间序列平稳。...一个时间序列,如果均值和方差没有系统变化或周期性变化(均值无变化:没有明显趋势,方差无变化:波动比较稳定),就称之为平稳的。 ?...自相关系数 平稳序列的自相关系数快速收敛,从哪一阶开始快速收敛(忽然从一个较大的值降到0附近)就说明是哪一阶模型,例如自相关函数图拖尾,偏自相关函数图截尾,n从2或3开始控制在置信区间之内,因而可判定为...自回归方程本质就是一个差分方程,解这个方程的根就可得到xt随着t的变化的解,如果根的模大于1,xt就是爆炸或趋于无穷的,不收敛。当自相关系数约等于1,就是单位根,也是不收敛。...这叫长期记忆,即一个小小的扰动,一直影响到很远的范围。所以,你需要找本书看看,关键是概念和定义。就看最常见的本科教材,李子奈的就足够了。

2.4K30

支付宝面试:什么是序列化,怎么序列化,为什么序列化,反序列遇到什么问题,如何解决?

) 三、如何实现序列化 实现Serializable接口即可 上面这些理论都比较简单,下面实际代码看看这个序列化到底能干啥,以及产生的bug问题。...,把得到的字节序列写到一个目标输出流中。...ObjectInputStream代表对象输入流: 它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。 具体怎么看运行情况。...那么,我该怎么赋值,eclipse可能自动给你赋值个一长串数字。这个是没必要的。 可以简单的赋值个 1L,这就可以啦。。这样可以确保代码一致时反序列化成功。...不同的serialVersionUID的值,影响到反序列化,也就是数据的读取,你写1L,注意L大些。

69430

字节二面:DNS 解析一个地址的时候返回多个 IP 吗?

一个域名对应多个 IP 从理论上讲,一个域名是可以对应多个 IP 的,在这种情况下,当不同的用户访问该域名时,就会访问到不同的 IP 地址。...一般情况下,一个域名对应一个 IP 地址,也就只需添加一条解析记录即可。...,但访问的 IP 地址并不相同,而是根据 DNS 事先配置的「解析策略」将解析得到的那个 IP 地址返回给对应的访客。...每次域名解析请求都会解析出一个不同的 IP 地址返回给访客,这样就构成了一个服务器集群,并实现负载均衡的效果。...DNS 解析策略 常见的 DNS 解析策略包括: 轮询(Round Robin):DNS 服务器按顺序返回多个IP地址,实现请求的轮流分发到不同的服务器上。

86820

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

这个是一个有意思的问题,所以我在这里记录一下。 首先字节正好是8位,所以使用8位的char类型数据来与字节数据相互一一对应是最好的选择?...但是为何方法InputStream#read()需要返回int类型值呢?...首先,我们要完成一个EOF(End of File)判断,在Java中就是以-1来表示数据读完了,但是如果返回的char类型值,那么根本没有-1这个数值;如果换种方式,返回一个特殊的char值,比如char...其次,既然只是如上的需求,那么为什么返回short值呢? 实际上在Java内存模型中,对于short以及int类型值,都是占据32位的内存空间的。...因此,当您将局部变量或对象字段声明为(例如)一个字节时,变量/字段将像int一样存储在32位单元中。

1.2K20

一个真实问题,搞定三个冷门pandas函数

最近有一个粉丝问过我一个问题,觉得挺有意思,分享给大家。经过简化后大概就是有一个长这样的时间序列数据?...可以看到,一共有15行数据,其中有一些行的value是值, 现在想在不改变原数据的情况下取出从第一个不是值的行之后的全部数据?...pd.date_range 其实在pandas中生成时间序列数据比其他方法要方便很多,使用.date_range一行代码即可,该函数使用方法为 pandas.date_range(start=None,...: ['','','','','',1,6,1,2,'',2,1,6,0,1]} ) 接下来我的思路是 判断value列的每个值是否为值,返回Ture/False 找到第一个为False的索引,取后面全部的数据...可以使用idxmax/idxmin,这个函数不难,直接看一个简单的例子 它可以返回最大值/最小值第一次出现的位置索引!

73920

一个真实问题,搞定三个冷门pandas函数

最近有一个粉丝问过我一个问题,觉得挺有意思,分享给大家。经过简化后大概就是有一个长这样的时间序列数据?...可以看到,一共有15行数据,其中有一些行的value是值, 现在想在不改变原数据的情况下取出从第一个不是值的行之后的全部数据?...pd.date_range 其实在pandas中生成时间序列数据比其他方法要方便很多,使用.date_range一行代码即可,该函数使用方法为 pandas.date_range(start=None,...: ['','','','','',1,6,1,2,'',2,1,6,0,1]} ) 接下来我的思路是 判断value列的每个值是否为值,返回Ture/False 找到第一个为False的索引,取后面全部的数据...可以使用idxmax/idxmin,这个函数不难,直接看一个简单的例子 它可以返回最大值/最小值第一次出现的位置索引!

66210

​时间序列&日期学习笔记大全(上)

,传统的做法是在一个序列或DataFrame的索引中表示时间成分,这样就可以对时间元素执行操作。...Time Spans 时间戳数据是时间序列数据的最基本类型,它将值与时间点关联起来。对于panda对象,它意味着使用时间点。 时间跨度是指一个时期,period。..., None])) # 传进列表,返回的是一个DatetimeIndex pd.to_datetime(['2005/11/23', '2010.12.31']) # 传入dayfirst=True,设置解析日期时的格式是日...pd.to_datetime(['2009/07/31', 'asd'], errors='ignore') # 无法解析的返回 值 pd.to_datetime(['2009/07/31', 'asd...# 指定开始、结束和周期,将生成一个从开始到结束均匀间隔的日期范围 pd.date_range('2018-01-01', '2018-01-05', periods=5) pd.date_range(

1.5K20

一个真实问题,搞定三个冷门pandas函数

↑ 关注 + 星标 ,每天学Python新技能 后台回复【大礼包】送你Python自学大礼 最近有一个粉丝问过我一个问题,觉得挺有意思,分享给大家。经过简化后大概就是有一个长这样的时间序列数据?...可以看到,一共有15行数据,其中有一些行的value是值, 现在想在不改变原数据的情况下取出从第一个不是值的行之后的全部数据?...pd.date_range 其实在pandas中生成时间序列数据比其他方法要方便很多,使用.date_range一行代码即可,该函数使用方法为 pandas.date_range(start=None,...: ['','','','','',1,6,1,2,'',2,1,6,0,1]} ) 接下来我的思路是 判断value列的每个值是否为值,返回Ture/False 找到第一个为False的索引,取后面全部的数据...可以使用idxmax/idxmin,这个函数不难,直接看一个简单的例子 它可以返回最大值/最小值第一次出现的位置索引!

1.1K10
领券