首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >验证函数中的返回语句

验证函数中的返回语句
EN

Stack Overflow用户
提问于 2019-10-12 15:42:01
回答 1查看 254关注 0票数 0

我在浏览https://github.com/python/cpython/blob/master/Lib/datetime.py,偶然发现了一些类型检查函数(我简化了它们,最初是_check_int_field)

代码语言:javascript
运行
AI代码解释
复制
def foo(year, month, day):
    year = check_int(year)
    month = check_int(month)
    day = check_int(day)

check_int返回输入的值(如果它是整数),如果不是,则引发ValueError。让我缩短他们使用的函数:

代码语言:javascript
运行
AI代码解释
复制
def check_int(value):
    if isinstance(value, int):
        return value
    if not isinstance(value, int):
        raise TypeError('integer argument expected, got %s' % type(value))

我的问题是: return语句背后的含义是什么?当然,您可以将其实现为

代码语言:javascript
运行
AI代码解释
复制
def check_int(value):
    if not isinstance(value, int):
        raise TypeError('integer argument expected, got %s' % value)

这会将foo函数更改为(其中您不必定义变量,只需使用foo参数)

代码语言:javascript
运行
AI代码解释
复制
def foo(year, month, day):
    check_int(year)
    check_int(month)
    check_int(day)

如果输入类型错误,这将引发TypeError -如果输入类型不正确,则简单地继续使用函数参数,而不必定义任何变量。那么,如果他们不修改输入变量,而只是简单地检查它,为什么还要返回输入变量呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-12 15:50:18

一般来说,我同意纯验证函数也可以是void的,即不返回任何内容,并在需要时引发异常。

但是,在这种特殊情况下,_check_int_field函数实际上是这样使用的:

代码语言:javascript
运行
AI代码解释
复制
year = _check_int_field(year)

这是有意义的,因为在_check_int_field中他们这样做:

代码语言:javascript
运行
AI代码解释
复制
try:
    value = value.__int__()
except AttributeError:
    pass
else:
    if not isinstance(value, int):
        raise TypeError('__int__ returned non-int (type %s)' %
                        type(value).__name__)
    return value

所以这个函数实际上做的不仅仅是验证。在这种情况下,函数返回值是有意义的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58355772

复制
相关文章
python中函数的返回值详解
在本小节刚开始的时候,说过的“买烟”的例子中,最后儿子给你烟时,你一定是从儿子手中接过来 对么,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存
Python学习者
2023/03/27
3.5K0
JavaScript 函数中带有参数并返回值的函数
document.getElementById("demo").innerHTML=myFunction(4,3);
好派笔记
2021/09/18
6K0
python函数中 return语句 之
return语句用于退出函数,向调用方返回一个表达式。return在不带参数的情况下(或者没有写return语句), 默认返回None。None是一个特殊的值,它的数据类型是NoneType。NoneType是Python的特殊类型,它只有一个取值None。 它不支持任何运算也没有任何内建方法,和任何其他的数据类型比较是否相等时永远返回false,也可以将None赋值给任何变量。。。
py3study
2020/01/06
9350
Python中如何构造返回函数以及怎么使用返回函数
Python返回函数即当一个函数的返回结果是另一个函数的时候,这样的函数就是返回函数。
python自学网
2021/12/05
2.9K0
Python中如何构造返回函数以及怎么使用返回函数
C 和 C++ 中 main 语句应该返回什么
到底是用 void main() 还是 int main()?main() 的返回值是 0 还是 1 有什么区别?
ClearSeve
2022/02/11
4270
Java赋值语句的返回值
今天阅读ArrayList的迭代器实现Itr的next方法的时候,突然发现一个平时开发的时候没有注意,没有用过的方式。
明明如月学长
2021/08/27
1.4K0
golang 中函数使用值返回与指针返回的区别,底层原理分析
Go 程序会在两个地方为变量分配内存,一个是全局的堆上,另一个是函数调用栈,Go 语言有垃圾回收机制,在Go中变量分配在堆还是栈上是由编译器决定的,因此开发者无需过多关注变量是分配在栈上还是堆上。但如果想写出高质量的代码,了解语言背后的实现是有必要的,变量在栈上分配和在堆上分配底层实现的机制完全不同,变量的分配与回收流程不同,性能差异是非常大的。
田飞雨
2021/10/19
5.6K0
golang 中函数使用值返回与指针返回的区别,底层原理分析
Laravel 中 validation 验证 返回中文提示 全局设置
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/113141.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/07
6210
包验证返回的错误代码
程序集标识的某些部分(名称、公钥令牌、区域性、可重定目标属性或版本)对于比较的双方都不匹配。
用户4268038
2022/01/09
1.9K0
【说站】python函数中返回值的作用
1、函数并不总是直接显示输出,相反,可以处理一些数据,返回一个或一组值。函数返回的值称为返回值。在函数中,可以使用return语句将值返回调用函数的代码行。
很酷的站长
2022/11/23
2.4K0
【说站】python函数中返回值的作用
Linux中system函数返回值详解
system()库函数使用fork(2)创建一个子进程,该子进程使用execl(3)执行指定的shell命令,
程序手艺人
2019/02/21
11.7K0
Vue中data为何以函数形式返回
在使用Vue构建组件化应用时,每个组件的data属性都是以函数形式返回的,这主要是在组件化实现的时候,每个实例可以维护一份被返回对象的独立的拷贝,而不是共享同一个对象的引用。
WindRunnerMax
2020/08/27
9210
函数返回指针
先写一个例子,运行一下看看 #include <stdio.h> int add(int a, int b) { printf("a = %d b = %d\n", &a, &b);
用户7272142
2023/10/11
1870
函数返回指针
返回函数
一个函数可以返回一个计算结果,也可以返回一个函数 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回 返回一个函数时,牢记该函数并未执行,返回函数中不要引用任何可能会变化的变量
py3study
2020/01/17
1.3K0
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
在 Python 函数中 , 通过 return 关键字 , 可以返回一个结果给调用者 , 这个返回结果就是 函数返回值 ;
韩曙亮
2023/10/11
9420
【Python】函数 ③ ( 函数返回值定义语法 | 函数返回多个返回值 | 代码示例 )
【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )
在 Kotlin 协程 Coroutine 中 , 使用 suspend 挂起函数 以异步的方式 返回单个返回值肯定可以实现 , 参考 【Kotlin 协程】协程的挂起和恢复 ① ( 协程的挂起和恢复概念 | 协程的 suspend 挂起函数 ) 博客 ;
韩曙亮
2023/03/30
8.7K0
【Kotlin 协程】Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )
函数基础,函数返回值,函数调用的3中方式,形参与实参
在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。
小小咸鱼YwY
2019/07/24
2.1K0
JS中函数的本质,定义、调用,以及函数的参数和返回值
匿名函数也是函数,当它自执行的时候,会创建自己的函数内部作用域,在执行完毕之后会被销毁,因此在外部无法访问到自执行的匿名函数内部
用户1289394
2021/10/13
17.8K0
JS中函数的本质,定义、调用,以及函数的参数和返回值
点击加载更多

相似问题

if中的返回语句函数

23

嵌套if函数中的返回语句

23

PHP函数中的返回语句

23

递归函数中的返回语句

10

函数中的Python返回语句

410
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档