python 怪谈

python 怪谈

今天在学习 python 的时候, 发现了很怪的现象, 那就是一个函数有返回值, 我调用的时候不去接收返回值, 但是依然可以获取返回值.
有点绕, 那具体是什么意思呢? 写个例子开整:

题干: 做一个加法运算, 调用一个函数执行相加操作, 然后改变我的 加数2 的值. 怎么做的?

看下面的代码

import numpy as np


def add_one(a, b):
    b = a + b
    return b


def add_two(a, b):
    b += a
    return b

def add_three(a, b):
    b += a


if __name__ == '__main__':
    a = 1
    b = 10
    add_one(a, b)
    print("b1: %s" % b)  # ??

    add_two(a, b)
    print("b2: %s" % b)  # ??

    aa = np.array([1, 2])
    bb = np.array([10, 20])
    cc = add_one(aa, bb)
    print("bb1: %s" % bb)  # ??

    aaa = np.array([1, 2])
    bbb = np.array([10, 20])
    ccc = add_two(aaa, bbb)
    print("bbb1: %s" % bbb)  # ??
    print("ccc == bbb 1: %s" % (ccc == bbb))

    ccc = add_two(aaa, bbb)
    print("bbb2: %s" % bbb)  # ??
    print("ccc == bbb 2: %s" % (ccc == bbb))

    ccc = add_three(aaa, bbb)
    print("bbb3: %s" % bbb)  # ??
    print("ccc == bbb 3: %s" % (ccc == bbb))

b1: 10
b2: 10
bb1: [10 20]
bbb1: [11 22]
ccc == bbb 1: [ True  True]
bbb2: [12 24]
ccc == bbb 2: [ True  True]
bbb3: [13 26]
ccc == bbb 3: [False False]

结论: 可以看到, add_two() 这个函数执行完相加的操作之后, 发现 bb 这个加数的值发生了改变, 好神奇啊. 不过, 需要注意的是:

  1. 参数需要保证是: 数组 这类传入地址类型的参数;
  2. 加法操作执行的是 += 操作;

留疑: 不知道这样的操作有没有专业的术语…

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

或许,这就是梦想吧!

如果对你有用,欢迎打赏。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值