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

Python 工匠:让函数返回结果的技巧

除了通过 return 语句返回内容,在函数内还可以使用抛出异常(raise Exception)的方式来“返回结果”。 接下来,我将列举一些与函数返回相关的常用编程建议。 编程建议 1....抛出异常,而不是返回结果与错误 我在前面提过,Python 里的函数可以返回多个值。基于这个能力,我们可以编写一类特殊的函数:同时返回结果与错误信息的函数。...():从函数名来看,代表基于一个名字来构建用户,并不能读出一种 可能返回、可能不返回的含义。...所以不适合返回 None 对于那些不能从函数名里读出 None 值暗示的函数来说,有两种修改方式。第一种,如果你坚持使用 None 返回值,那么请修改函数的名称。...合理使用“空对象模式” 我在前面提到函数可以用 None 值或异常来返回错误结果,但这两种方式都有一个共同的缺点。

1.8K10

Python 工匠:让函数返回结果的技巧

一切都由一个函数 get_users 来搞定。这样的设计似乎很合理。然而在函数的世界里,以编写具备“多功能”的瑞士军刀型函数为荣不是一件好事。...抛出异常,而不是返回结果与错误我在前面提过,Python 里的函数可以返回多个值。基于这个能力,我们可以编写一类特殊的函数:同时返回结果与错误信息的函数。...():从函数名来看,代表基于一个名字来构建用户,并不能读出一种 可能返回、可能不返回的含义。...所以不适合返回 None对于那些不能从函数名里读出 None 值暗示的函数来说,有两种修改方式。第一种,如果你坚持使用 None 返回值,那么请修改函数的名称。...合理使用“空对象模式”我在前面提到函数可以用 None 值或异常来返回错误结果,但这两种方式都有一个共同的缺点。

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

    Python 工匠:让函数返回结果的技巧

    除了通过 return语句返回内容,在函数内还可以使用抛出异常(raise Exception)的方式来“返回结果”。 接下来,我将列举一些与函数返回相关的常用编程建议。 编程建议 1....抛出异常,而不是返回结果与错误 我在前面提过,Python 里的函数可以返回多个值。基于这个能力,我们可以编写一类特殊的函数:同时返回结果与错误信息的函数。...():从函数名来看,代表基于一个名字来构建用户,并不能读出一种 可能返回、可能不返回的含义。...所以不适合返回 None 对于那些不能从函数名里读出 None 值暗示的函数来说,有两种修改方式。第一种,如果你坚持使用 None 返回值,那么请修改函数的名称。...合理使用“空对象模式” 我在前面提到函数可以用 None 值或异常来返回错误结果,但这两种方式都有一个共同的缺点。

    2.2K30

    Python 工匠:让函数返回结果的技巧

    除了通过 return 语句返回内容,在函数内还可以使用抛出异常(raise Exception)的方式来“返回结果”。 接下来,我将列举一些与函数返回相关的常用编程建议。 编程建议 1....抛出异常,而不是返回结果与错误 我在前面提过,Python 里的函数可以返回多个值。基于这个能力,我们可以编写一类特殊的函数:同时返回结果与错误信息的函数。...():从函数名来看,代表基于一个名字来构建用户,并不能读出一种 可能返回、可能不返回的含义。...所以不适合返回 None 对于那些不能从函数名里读出 None 值暗示的函数来说,有两种修改方式。第一种,如果你坚持使用 None 返回值,那么请修改函数的名称。...合理使用“空对象模式” 我在前面提到函数可以用 None 值或异常来返回错误结果,但这两种方式都有一个共同的缺点。

    2.2K40

    详解javascript中的即时函数,内部函数,能重写自身的函数即时函数内部函数返回函数的函数能重写自己的函数小结

    在上篇谈到匿名函数和回调函数的基础上,我们接着介绍javascript中的即时函数,内部函数,返回函数的函数,能重写自身的函数等几种常见的函数类型及使用方法。...(); 粗看一下,这段代码似乎很奇怪,其实仔细分析不难发现这就是定义了一个匿名函数,并且立即就调用执行了这个匿名函数。...所以,我们自然就可以在一个函数内部定义另外一个函数,这样的函数就叫做内部函数。...我们知道内部函数只能在定义它的函数内部调用它,不能再外部调用它。所以有时候也叫它私有函数。 使用私有函数有什么好处呢?...请注意,返回值中是不带括号的,因此该结果仅仅是一个函数的引用,并不会产生函数的调用。 由于这里执行语句是以var a = 开头的所以我们这里也使用了能重写自己的函数

    1.6K11

    java内部类的作用(一)----解决函数参数返回的问题

    我们知道一个函数只有一个返回值,如果当返回很多数据的时候,这个返回值是需要处理的,也就是返回值的类型(数组或者自定义类来解决) 当我们要处理做一个处理的时候,需要返回两个以上的参数的时候...,就可以用内部类解决这个问题 而如果此时这个作为返回值的内部类不需要引用外围类对象的话,就可以加上STATIC  静态内部类  取消产生内部类的作用 因为内部类对象总有一个隐式引用,它指向了创建它的外部对象...也就是有这样一个特性: 静态内部类的对象除了没有对生成它的外围类对象的引用特权外,与其他所有内部类完全一样 接下来我们看看java技术核心提供的代码: 内部类: package org.innerclass.operate...,因为外部类对象是在静态方法中构造这个内部类的对象的。...如果没有static,表示这个内部类是静态内部类,那么编译器将会给出错误报告: 没有可用的隐式ArrayAlg类型对象初始化内部类对象

    1.5K20

    VFP的过程或函数如何接收数组参数或返回一数组结果?

    一、给过程或函数传递一个数组参数。 LOCAL ARRAYabc[5] abc[1]="A" abc[2]="B" abc[3]="C" abc[4]="D" abc[5]="E" CLEAR ?...sendarr(@abc) Function sendarr Lparameters ltarray_b RETURN ltarray_b[3] Endfun 这里的传值,我们注意一个@,这个小老鼠...数据传值,使用的是地址引用传值。 二、过程或函数传递返回一个数组。 LOCAL ARRAY abc[5] abc=returnarr() ?abc[1] ?abc[2] ?abc[3] ?...也是地址引用返回值。 三、过程或函数传递返回几个数组。 LOCAL ARRAY a[5] LOCAL ARRAY b[3] returnarr_more(@a,@b) ?a[1] ?a[2] ?...ENDFUNC 上面的代码,其实是引用址传递,过程或函数直接改变传递参数的值,而已。所以我们也可以看到有些函数的参数,有一个是返回值参数。就是上面的用法。 好了。总结这些,为狐友们参考!

    3.3K30

    我的数据访问函数库的源代码(三)——返回结构数组

    /* 2008 4 25 更新 */ 我的数据访问函数库的源码。整个类有1400行,原先就是分开来写的,现在更新后还是分开来发一下吧。 第三部分:返回结构 数组,这个是专门针对网页来设计的。...//新增加的部分,返回结构数组用于绑定控件                  #region 函数实现 — — RunSqlStructBaseTitle         ///          /// 返回BaseTitle结构的数组。...ID 传入查询语句,返回第一条记录的第一的字段的值             SetCommand(SQL,);        //设置command             SqlDataReader...ID 传入查询语句,返回第一条记录的第一的字段的值             SetCommand(SQL,);        //设置command             SqlDataReader

    1.4K60

    如何在 Go 中优雅的处理和返回错误(1)——函数内部的错误处理

    ---- 问题提出 在后台开发中,针对错误处理,有三个维度的问题需要解决: 函数内部的错误处理: 这指的是一个函数在执行过程中遇到各种错误时的错误处理。...这是一个语言级的问题 函数/模块的错误信息返回: 一个函数在操作错误之后,要怎么将这个错误信息优雅地返回,方便调用方(也要优雅地)处理。...首先本文就是第一篇:函数内部的错误处理 ---- 高级语言的错误处理机制   一个面向过程的函数,在不同的处理过程中需要 handle 不同的错误信息;一个面向对象的函数,针对一个操作所返回的不同类型的错误...这里也催生出了集中解决方案 defer 函数   笔者采用的方法,是将需要返回的 err 变量在函数内部全局化,然后结合 defer 统一处理: func SomeProcess() (err error...原文标题:《如何在 Go 中优雅的处理和返回错误(1)——函数内部的错误处理》 发布日期:2021-09-18 原文链接:https://cloud.tencent.com/developer/article

    9.3K151

    【C++】C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量 “ 的引用或指针 | 函数内的 “ 局部变量 “ 的引用或指针做函数返回值无意义 )

    一、函数返回值不能是 " 局部变量 " 的引用或指针 1、引用通常做右值 之前使用 引用 时 , 都是作为 右值 使用 , 引用只在 声明 的 同时 进行初始化时 , 才作为左值 , // 定义变量 a...2、函数返回值特点 函数 的 返回值 几乎很少是 引用 或 指针 ; 函数 的 计算结果 经常是借用 参数中的 地址 / 引用 进行返回的 , 函数 的 返回值 一般返回一个 int 类型的值 , 如果...int 为 0 就是成功 , int 为其它数值 , 就是错误码 ; 3、函数内的 " 局部变量 " 的引用或指针做函数返回值无意义 如果 想要 使用 引用 或 指针 作 函数的计算结果 , 一般都是将...引用 是 谁的 , 如果 是 在 函数内部 栈内存 中创建的 变量的 地址 / 引用 , 那么 函数执行结束 , 返回时 , 该 栈内存直接被回收了 , 地址 / 引用 指向的内存空间可能就是随机值 ;...如果 是 外部的 main 函数中的 变量 的 地址 / 引用 , 那么 肯定是从 参数中 传入的 , 那么这个 地址 / 引用 就不需要返回 , 函数内部修改 , 直接体现在了外部的变量中 ; 因此

    60320

    再说this

    似乎没有它我也可以做好所有的工作。 而且我是对的。 在某种意义上 。也许你可以只专注于一种结构并且完全忽略另一种,但这样你只能是一个 JavaScript 开发者。...你说没有“在对象的上下文中调用”……难道它不是从 initializeFriend 返回的内部调用的吗?如果这还不叫“在对象的上下文中调用”,那我就不知道什么才算了。...: 在定义箭头函数时,不管 this 指向谁,箭头函数内部的 this 永远指向同一个东西。...箭头函数是在 greeting 中定义的。我们知道,在 greeting 内部的 this 指向对象本身。因此,箭头函数内部的 this 也指向对象本身,这正是我们需要的结果。 9. ...我建议你首先问问自己在这些情况下的 this,然后在浏览器中执行代码来检验你的结果。

    58820

    让你分分钟学会 javascript 闭包

    因此,本文不会对闭包的概念进行大篇幅描述,直接上干货,让你分分钟学会闭包! 1 闭包–爱的初体验 在接触一个新技术的时候,我首先会做的一件事就是:找它的demo code。...这是史上最简单的闭包,不能再简单了,再简单就不是闭包了! 有了初步的认识后,我们简单分析一下它和普通函数有什么不同,这样我们才能从“茫茫人海”中一眼认出“她”。...上面代码翻译成自然语言如下: (1)定义了一个普通函数A (2)在A中定义了普通函数B (3)在A中返回B(确切的讲,在A中返回B的引用) (4)执行A(),把A的返回结果赋值给变量 c (5)执行 c...() 把这5步操作总结成一句扯淡的话就是: 函数A的内部函数B被函数A外的一个变量 c 引用 把这句扯淡的话再加工一下就变成了闭包的定义: 当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。...,但 f 中没有任何返回值,似乎不具备闭包的条件,注意这句代码: JavaScript 1 window.jView = obj; obj 是在 f 中定义的一个对象,这个对象中定义了一系列方法, 执行

    50840

    伙计们,Go 并没有那么简单

    但就像我说的,我不是在抱怨 Go,我真的不介意接受者参数的观点(如果我忍受不了 C++ 的怪异,我可以忍受 Go 的)。 3. 函数返回值 如果接收参数不够,函数甚至能够通过各种形式的返回值来声明。...通常语言允许你通过 return 语句返回函数中的一个值。而在 Go 语言中,你可以返回多个值(我认为可以用更优雅的方式通过元组来解决,但是就这样吧)。除此之外,还有命名返回值。...当内嵌一个类型时,该类型的方法会成为外部类型的方法,但当它们被调用时,该方法的接收者是内部类型,而非外部的。 有差别吗?继承通常以相同的方式工作,继承的方法也对内部类型起作用。...这是 C++ 的类似的代码,你可以看到,它编译不通过,因为存在歧义。 结果会如何?首先,我认为具有多重继承功能,几乎不能在描述该编程语言时使用“简单”一词。...多个返回值的特征不能使事情变得简单,这意味着不能返回一个错误或成功的结果,你可以返回所有值或者都不返回(CS 术语,你可以说这个问题是一个产品类型而不是总和式的用法)。

    80160

    C++ 智能指针详解

    所有智能指针都重载了“operator->”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来的方法则使用“.”操作符。 访问智能指针包含的裸指针则可以用 get() 函数。...(5)    …… 使用一个 std::auto_ptr 的限制还真多,还不能用来管理堆内存数组,这应该是你目前在想的事情吧,我也觉得限制挺多的,哪天一个不小心,就导致问题了。...并且没有 release() 函数。关键的一点,boost::shared_ptr 内部维护了一个引用计数,由此可以支持复制、参数传递等。...boost::shared_ptr 提供了一个函数 use_count() ,此函数返回 boost::shared_ptr 内部的引用计数。...查看执行结果,我们可以看到在 TestSharedPtr2 函数中,引用计数为 1,传递参数后(此处进行了一次复制),在函数TestSharedPtr 内部,引用计数为2,在 TestSharedPtr

    2K10

    如何优化尾调用

    我们事先想一想传统的递归,典型的就是首先执行递归调用,然后根据这个递归的返回值并结算结果,那么传统的递归缺点有哪些呢? 效率低,占内存。...如果在函数A的内部调用函数B,那么在A的调用帧上方,还会形成一个B的调用帧。等到B运行结束,将结果返回到A,B的调用帧才会消失。如果函数B内部还调用函数C,那就还有一个C的调用帧,以此类推。...我在网上看到一个不错的方案,采用的是蹦床函数?..., 这个函数的作用就是放回一个新的函数,我们将它们俩结合起来的话,栈溢出的问题似乎就可以解决了?...// 可以试一试噢 trampoline(fibonacci (10000)) 这里的蹦床函数,我是参考别人的写法,似乎这样子写的话,不太行,我个人觉得这样子可以避免调用栈溢出,实际情况下,这样子是行不通的

    90930

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券