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

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

它们执行效果跟直接写 return 语句相比,是完全相同: 这 4 个例子属于两种类型:一种没有写 return,但是都有隐藏 return 返回;一种写了 return,而且实际也有返回。...不管有没有写 return,它们都会执行 return 逻辑,而且默认返回就是 None。 那么,问题来了:Python 函数为什么能默认返回 None 呢?它是如何实现呢?...答案就在解释器中,当 CPython 解释器执行到函数最后一个代码块时,若发现没有返回,它就会主动地加上一个 Py_None 返回(出自:compile.c): 也就是说,如果定义函数没有返回...对于解释器这种附赠服务,大家是觉得很贴心,还是嫌弃它多事呢? 这样做法似乎没多少好处,但似乎也没有坏处? 那么,这就会引出新问题:Python 为什么要求函数都要有返回呢?...为什么它不像某些语言那样,提供一个 void 关键字,支持定义无返回空函数呢? 关于这个问题,我们将在下一期“Python为什么”系列文章中揭晓。

2.1K40

关于socket通信bind()返回错误:10049

前几天偶尔收到一个朋友求救,要编写一个IPV6socket编程 开始以为这个问题很容易,因为socket已经兼容IPV4和IPV6,改下那几个接口就可以了 然后….被卡住了…....修改了参数为IPV6参数以后,在bind时候始终包10049错误. 按照MSDN说法,10049意思表示找不到那个IP....但是我服务器端bind监听socket时候,是不应该出这个问题… 遍历无果,只能通过检视代码来找可能错误....SOCKET_ERROR) { strError.Format("绑定失败:%d ",error=WSAGetLastError()); pDlg->MessageBox(strError,"错误...",MB_ICONSTOP); closesocket(m_hSocket); return; } 检视过程中发现,排除socket配置错误,唯一一个可能地方 定义sockaddr_in6

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

Go错误集锦 | 函数何时使用带参数名返回

其次,在return语句中可以不加任何参数,默认会将同名变量b返回。 02 何时使用带参数名返回 那么,在什么场景下推荐使用带参数名返回呢?...因为通过error类型我们就知道返回一定是一个错误类型。所以,在这种场景下,返回指定了参数名也不会提高可读性,就尽量不要指定参数值名称。...因为在指定了参数名情况下,该参数会被初始化成对应类型,如果不小心就可能产生副作用。 03 返回中命名参数陷阱 在上面的示例中可以看到,在一些场景下,给返回指定参数名称提高可读性。...但同时,返回参数值在函数一开始会被初始化成对应类型。在业务逻辑中如果处理不当,就会造成错误。...大家注意这里,如果ctx.Err()不等于nil,那么在返回err时候,因为err没有被赋值,同时由于在返回中指定了参数名被初始化成对应nil,实际返回err还是nil,不符合要返回具体错误预期

2.6K10

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

奇怪Java题:为什么128 == 128返回为false,而127 == 127返回为true? 在回答这个问题之前,我们先来看看int和Integer对比,一步步揭开问题答案。...实际是对象引用,指向此newInteger对象;int是直接存储数据 ; (4) Integer默认是null;int默认是0。...基本类型(原始数据类型)在传递参数时都是按传递,而封装类型是按引用传递(其实“引用也是按传递”,传递是对象地址)。 由于包装类型都是不可变量,因此没有提供改变它方法。...而java API中对Integer类型valueOf定义如下,对于-128到127之间数,进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127...加大对简单数字重利用,Java定义在自动装箱时对于从–128到127之间,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。 2.

2.2K31

错误 通常函数返回一个error来判断是否出错

go程序使用 error 来表示错误判断。通常函数返回一个 error ,我们用来判断程序运行是否出错。所以在 go 程序中,你总是能见到很多 if err != nil 语句。...type error interface { Error() string } 函数一般判断是否需要错误处理方式。 i, err := strcov.Atoi("42") if err !...= nil { } 我们可以自定义 error 发生时,显示输出格式。...at 2017-08-19 14:14:39.9021933 +0800 CST --> it didn't work 可知,error 为 nil 时表示成功,error 为非 nil 时,表示有错误...前面有一个 Sqrt 函数练习,这里修改一下,可以返回 error 。这样当 Sqrt 接收到一个不支持负数时,就返回非 nil 错误

910130

JS|函数返回

我们先来看一组代码 function kunkun(aru){ console.log(aru)}kunkun('打篮球') 这个看似能输出结果,实则是在逻辑上是不合理,我们函数是做某件事或者实现某种功能...所以,接下来我会介绍一种逻辑更严谨代码。 解决方案 return语句 有的时候,我们希望函数将返回返回给调用者,此时通过使用return语句就可以实现。...函数返回格式 function 函数名(){ return 需要返回结果;}函数名(); 函数只是实现某种功能,最终结果需要返回给函数调用者。是通过return来实现。...只要函数遇到return就会把后面的结果,返回给函数调用者。...num2){ return num1 + num2;}console.log(sum(1,2)) 结果输出为:3 由此可知,不要在函数内部输出结果,应该return给函数调用者。

11.4K10

函数参数&返回

,主要是变量提升引起错误,首先描述一下错误出现条件 1.如果函数中没有声明和全局变量名称一致局部变量,函数中直接使用全局变量,不会出现错误 2.如果函数中,一旦在任意位置定义了和全局变量名称一致局部变量...Python文件然后整合到一起,此时就有可能因为全局变量重名造成变量覆盖情况出现。...、操作函数返回 函数返回通过return关键字来确定 返回语法结构如下: def 函数名称(参数列表): 函数代码块 return 返回 注意:返回可以是任意对象(python...中一切皆对象) 返回,需要在调用函数时候进行接收,否则返回也是没有意义。...,return是开发人员确定返回,如果没有return关键字python函数返回一个None对象。

4K10
领券