当前位置: 首页 > 知识库问答 >
问题:

如何在不破坏遗留代码的情况下增加函数的返回值?

墨阳羽
2023-03-14
def foo(a): 
    return a
amount = 4 + foo(a)
def foo(a)
   return a, a + 5

当我这样做的时候,变量'amount'不是正确的答案,因为a现在是,用pylint的话说是'tuple',所以amount将从返回a+4,变为返回(a,a+5)+4

我如何将'a+5'添加到foo中,同时仍然允许amount是单个标量值,而不是元组?

共有1个答案

景星光
2023-03-14

也许这样的方法可以奏效:

def foo(a, new_usage=False):
    if not new_usage:
        return a

    return a + 5

然后针对所有新的使用情况,这样调用您的函数:

foo(a, True)

例如,您的旧代码仍然可以工作:

In [40]: amount = 4 + foo(4)

In [41]: amount
Out[41]: 8
In [42]: amount = 4 + foo(4, True)

In [43]: amount
Out[43]: 13
 类似资料:
  • 我最近通过从源代码编译在CentOS机器上安装了Python 2.7.3。Python 2.7.3安装在/opt/python2.7上,当我安装它时,我只需更改/usr/bin/Python以指向新版本。这显然是错误的,因为当我这样做的时候,它打破了百胜。我会得到以下内容。 我更改了/usr/bin/python以指向python 2.6.6,但现在2.6.6是python的默认版本。你知道怎么解

  • 假设我有两个类叫做ad。 它们都实现了。 对于只有两种方法,分别称为和。 一切都很好。但是,虽然这似乎很好地利用了s,但我认为如果我需要向这个添加方法,实现就会中断,即我需要去实现这些类中的新方法,这打破了“封闭-开放原则”。 所以我想,除了,如果将来需要添加新方法,我还会使用类。 例如,。 这听起来是个好计划(如果不是,请纠正我)。 但问题是,如果这些类已经有其他类了怎么办?在这种情况下,我不能

  • 问题内容: 我正在使用使用react-native- firebase 的应用程序。我已经在travis上建立了CI构建,目的是拥有可复制的构建,并且突然停止了工作,如下所示: 之前:4天前,构建成功 after:今天,完全相同的构建被破坏,失败并显示以下消息: Android依赖项“ com.google.android.gms:play-services- base”对于编译(16.0.1)和

  • 我已经创建了一个在视觉上类似于一张卡(游戏卡)的对象-一张顶部有图像的卡,下面有一些关于该卡的信息,包括文本和符号。页面上可以有许多卡片。 单击一张卡片会将用户带到一个新页面。这是通过使用href将所有卡片元素包装在一个div中完成的。每张卡都有一个带有一些选项的下拉菜单。最初的问题是,单击下拉菜单时,卡也会被单击。 我想在单击下拉菜单时阻止卡被单击。单击下拉菜单时,下拉菜单本身应正常运行。 hr

  • 问题内容: 我有各种HTML字符串可以切成100个字符(已剥离内容的内容,而不是原始内容),而不剥离标签且不破坏HTML。 原始HTML字符串 (288个字符): 标准修剪: 修剪至100个字符和HTML中断,剥离的内容约40个字符: 剥离的HTML: 输出正确的字符数,但显然失去了格式设置: 局部解决方案: 使用HTML Tidy或Purifier关闭标签可输出干净的HTML,但100个字符的H

  • 为了记录请求和响应,我添加了一个LoggingRequestInterceptor,它实现了ClientHTTPPrequestinterceptor。。。 响应主体是一个流,如果我将其读取到我的拦截器中,TestRestTemplate将无法将其反序列化到我的对象模型中。换句话说,当我调用testRestTemplate时。获取…我将始终获取空对象(即使我看到对象我的响应)。 要解决RestTe