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

为什么我的函数在中途改变了我的b值?

函数在中途改变变量b的值可能是因为函数内部对变量b进行了修改操作。在函数中,如果b是一个可变类型的变量(如列表、字典等),则函数内部对b的修改会影响到函数外部的b。这是因为可变类型的变量在函数传参时是按引用传递的,函数内部对b的修改实际上是对同一块内存地址中的数据进行的操作。

如果希望避免函数内部修改b的值影响到函数外部的b,可以将b进行拷贝操作,传递给函数的是拷贝后的变量。这样函数内部对b的修改只会影响到拷贝后的变量,不会影响到原始的b。

以下是一个示例代码:

代码语言:txt
复制
def modify_b(b):
    # 对b进行修改操作
    b.append(3)
    return b

b = [1, 2]
modified_b = modify_b(b.copy())
print(b)  # 输出 [1, 2]
print(modified_b)  # 输出 [1, 2, 3]

在上述代码中,通过b.copy()对变量b进行拷贝,然后将拷贝后的变量传递给函数modify_b()。函数内部对b的修改只会影响到拷贝后的变量modified_b,不会影响到原始的b。

需要注意的是,如果b是一个不可变类型的变量(如整数、字符串等),则无法在函数内部直接修改b的值。在函数内部对b进行赋值操作只会创建一个新的局部变量,并不会影响到函数外部的b。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么我改变了对区块链的看法

我大学时学习密码学,而比特币作为一个新颖且非常规的概念出现。在我的一门课程中,我们分析了与比特币非常类似的加密货币的密码学构建模块。尽管我钦佩算法和协议的精妙,但我对 区块链技术 并不特别感兴趣。...我的主要保留意见是,尽管其设计创新,但它并没有解决我个人认为重要的任何问题。 我对区块链的怀疑一直持续到几个月前,当时我与 Aerospike 的一位新客户合作, BSV 协会。...在平行宇宙中 在过去十年中,我帮助多家金融机构扩展其系统以适应新的用例,例如移动银行和 开放银行 等监管合规举措。这些项目中反复出现的主题是实施解决方案以提高底层系统的吞吐量限制。...在 前一篇文章 中,我详细阐述了为什么这种方法非常低效。 通常,这些解决方案采用可扩展数据库,通过复杂的数据提取、转换、加载 (ETL) 流程从不可扩展的 RDBMS 中检索数据。...没有不断升级的复杂性。没有耗时数年、耗资数十亿美元的项目来启动一个应用程序。 正是这种愿景改变了我对区块链的看法。

9810
  • Scala如何改变了我的编程风格:从命令式到函数式

    尽管在C++里面这种编程风格是有可能的,但在我使用C++的日子里,我却没有考虑用这种方式进行多重继承,而我在C++设计中也不怎么使用抽象基类。...然而,一旦我开始进行Java编程,我就开始一直使用这种风格了。学习Java—尤其是它的接口构造—改变了我OO设计的方法。...但 Scala 还让我以简洁和类型安全的方式获得某些通常是动态语言的好处,例如在已有类上增加新方法的能力,或者将类型传递给没有共同继承关系的方法。 Scala 是怎样改变了我对编程的看法的呢?...这样有助于 Scala 的学习曲线变缓,但随着对 Scala 越来越熟悉,你就会发现自己会更喜欢函数式的。我就是这样。为什么?因为我发现函数型风格往往要比命令式风格的代码更简洁,且更不易出错。...通常将输入值称做函数的参数,将输出值称做函数的值。

    1.1K30

    为什么我在公司里访问不了家里的电脑?

    上篇文章「为什么我们家里的IP都是192.168开头的?」提到,因为IPv4地址有限,最大42亿个。...那这么说只有用到端口的网络协议才能被NAT识别出来并转发? 但这怎么解释ping命令?ping基于ICMP协议,而ICMP协议报文里并不带端口信息。我依然可以正常的ping通公网机器并收到回包。...其实他们都是同一个数值,只不过大小端不同,读出来的值不一样。就好像同样的数字345,反着读就成了543。这是为了兼容不同操作系统(比如linux和Windows)下大小端不同的情况。...为什么我在公司里访问不了家里的电脑? 那是因为家里的电脑在局域网内,局域网和广域网之间有个NAT路由器。由于NAT路由器的存在,外网服务无法主动连通局域网内的电脑。...step11: 注意,之前我们都是用的UDP数据包,目的只是为了在两个局域网的NAT上打个洞出来,实际上大部分应用用的都是TCP连接,所以,这时候我们还需要在A主动向B发起TCP连接。

    2.1K10

    聊一聊我在 B站 上自学编程的经历吧

    众所周知,B 站是一所大学 今天在 b 站看视频的时候,看到了一句话 众所周知,b 站是用来搞学习的。...对于我们学习编程的童鞋来说,b 站有着非常多的学习资源,当年俺也是在B站上各种搜资源学习,但是有一些质量并不是很好,看了之后不容易理解,这也是写这一篇文章的原因,为大家集中分享一些质量比较高的计算机基础的自学视频...p=1 在计算机网络方面,我还想推荐的一位老师就是方老师,也是一位小姐姐老师。她的视频配套的教材也是谢老师的网络教材,在线看的小伙伴也超多,弹幕都是对方老师的评价。 ?...p=1 整体看了一遍,个人觉得是 b 站上很不错的操作系统课程了(经典课程如 mit6.828 在 b 站上的似乎都没有字幕而且拍摄角度实数刁钻)。...在最后 所以今天就先推荐这些吧,在b站我总能发现很多不错的视频,不过有的视频可能不一定都符合大家的口味,如果你有更好的学习资源,还请大家一起分享交流哦,众人拾柴火焰高!

    1.8K41

    OpenCV论道:为什么我的伽马校正函数只有一行?

    大家好,又见面了,我是你们的朋友全栈君。...最近在用 OpenCV 识别棋盘棋子,基本的思路是这样的:先转灰度,再做高斯模糊和二值化,此时棋盘格上有的有棋子,有的无棋子;通过迭代腐蚀,消去棋子,再迭代膨胀回来,就得到了一个纯净的棋盘;识别棋盘,标定位置...奇怪的是,我在网上搜到的伽马校正函数看起来都很复杂,即便是 python 写的,也都得十几行甚至几十行,可我写的伽马校正函数只有一行。为什么会这样呢?是我理解的不对吗?...return (np.power(im.astype(np.float32)/255, 1/gamma)*255).astype(np.uint8) 下图是原始灰度棋盘、未经伽马校正的灰度二值化效果...、伽马校正(gamma=2)的灰度二值化效果、伽马校正(gamma=3)的灰度二值化效果: 对于彩色图片,这个伽马校正函数依然有效。

    1.1K20

    我的C++奇迹之旅:内联函数和auto关键推导和指针空值

    此时,你肯定在想到C语言中的宏来在代码进行预处理解决 #define ADD(a, b) ((a) + (b)) 当然你也要注意括号问题,在使用宏定义时需要格外小心,因为宏定义是在编译时进行替换的,如果定义不当可能会导致一些意料之外的行为...inline 关键字来告诉编译器这个函数为内联函数: inline int Add(int a, int b) { return a + b; } 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开...,大家可思考下为什么?...(关于迭代器这个问题,以后会讲,现在提一下,没办法讲清楚,现在大家了解一下就可以了) 指针空值nullptr(C++11) C++98中的指针空值 在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值...在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。 2.

    17910

    我在B站学知识之小米手机如何查看曾经所有连接过的Wifi密码

    ---- 我在B站学知识之小米手机如何查看曾经连接过WIFI的密码 描述: 在使用小米、红米手机的童鞋,有两种方式获取连接过的WiFi密码: 第一种方式,是非常的简单但是只能查看当前连接到的WIFI密码...第二种方式,是在您想要查看曾经连接过的所有WIFI集齐对应的密码。...B站视频实践操作: https://www.bilibili.com/video/BV1D34y1q7yX 温馨提示: 视频配合本文档食用更佳哟!...分享当前连接到的WIFI密码 方式2.备份导出手机中所有连接过WIFI的密码 我们可以通过手机自带的备份功能来备份手机的WALN数据,以查看手机中连接过WIFI的所有密码。...具体操作流程如下所示: 点击设置 点击我的设备 点击数据与恢复 (PS: 也可在设置中直接搜索备份与恢复) 选择手机备份恢复 1-4 输入锁屏密码 取消默认勾选只选择其他系统应用数据中的

    1.7K10

    为什么我的Spring Boot自定义配置项在IDE里面不会自动提示?

    一、背景 官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的呢...二、提示原理 IDE是通过读取配置信息的元数据而实现自动提示的,而元数据在目录META-INF中的spring-configuration-metadata.json 或者 additional-spring-configuration-metadata.json...三、实现自动提示 以我这个自己开发的starter中的自定义配置文件为例,如果自己手动创建这些元数据的话工作量比较大,使用IDEA的话有自动生成功能 3.1....引入依赖spring-boot-configuration-processor 在zlt-swagger2-spring-boot-starter工程中添加以下jar包 ...重新编译项目 项目在重新编译后就会自动生成spring-configuration-metadata.json文件 四、测试 自定义的swagger配置已经能自动提示了 参考资料 https:/

    2.7K20

    MySQL实战第二十一讲-为什么我只改一行的语句,锁这么多?

    在上一篇文章中,我和你介绍了间隙锁和 next-key lock 的概念,但是并没有说明加锁规则。间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上犯错。...根据原则 2 ,只有访问到的对象才会加锁,这个查询使用覆盖索引,并不需要访问主键索引,所以主键索引上没有加任何锁,这就是为什么 session B 的 update 语句可以执行完成。...如下 图11 所示为案例八的操作序列: 现在,我们按时间顺序来分析一下为什么是这样的结果。...我把题目重新描述和简化一下:还是我们在文章开头初始化的表 t,里面有 6 条记录,图 12 的语句序列中,为什么 session B 的 insert 操作,会被锁住呢?...对于那些你自己无法解释的结果,可以发到评论区里,后面我争取挑一些有趣的案例在文章中分析。 重点总结: 1.

    73120

    谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?

    我在本地跑明明成功的,为什么在你平台跑就报错? 用户在 Jenkins 上跑构建时,失败了,把日志截图给我看,如下图: ?...这样的日志,我通常回:请检查你们的依赖,是不是有依赖没有上传到咱们的 Nexus 仓库。验证方法是先在本地删除你的 .m2 目录,然后再执行一次构建。...当用户业务开发比较急的时候,他们还会说本文标题中的那句话。有些抱怨的意思。我都已经习惯了。 出现这样的情况,我总结大概会有以下原因: 用户对于 Maven 这类构建工具不熟悉。...我觉得 DevOps 平台是不是可以直截了当地告诉用户: xxx 依赖在 Nexus 仓库(maven.abc.com)中没有找到,请您先 deploy 该依赖到 Nexus 仓库后,再执行此任务。...同时,我们将这些数据(依赖管理失误)统计起来,就可以看出一个团队在依赖管理方面的能力表现了,进而可以有效的对团队进行培训,以提高相应的能力。

    71010

    为什么我建议在复杂但是性能关键的表上所有查询都加上 force index

    对于 MySQL 慢 SQL 的分析 在之前的文章,我提到过 SQL 调优一般通过下面三个工具: EXPLAIN:这个是比较浅显的分析,并不会真正执行 SQL,分析出来的可能不够准确详细。...但是不能直观的看出来为啥会走错索引,需要通过 OPTIMIZER TRACE 进行进一步定位。但是在进一步定位之前,我想先说一下 MySQL 的 InnoDB 查询优化器数据配置。...这也引出了一个新的可能大家也会遇到的问题,我在原有索引的基础上,加了一个复合索引(举个例子就是原来只有 idx_user_id,后来加了 idx_user_status_pay),那么原来的只按照 user_id...所以在表的数据量很大的时候,这个统计数据很难非常准确。...所以最好一开始就能估计出大表的量级,但是这个很难。 结论和建议 综上所述,我建议线上对于数据量比较大的表,最好能提前通过分库分表控制每个表的数据量,但是业务增长与产品需求都是不断在迭代并且变复杂的。

    1.4K20

    世界首个红石人工智能引爆B站!UP主在我的世界搭建,LeCun转发

    耗时半年,B站UP主终于在「我的世界」实现了首个红石人工智能。 可以说,这是世界上第一个纯红石神经网络。 不仅可以实现15×15手写数字识别,最重要的是,准确率能够达到80%!...因此,在我的世界中,能够被红石控制的机械类别几乎覆盖了你能够想象到的极限。 小到最简单的机械(如自动门与光开关),大到占地巨大的电梯、自动农场、小游戏平台,甚至游戏内建的计算机。...也就是说,想要扩大在我的世界中可游玩的深度,对红石电路的玩转一定要了如指掌。 UP主@辰占鳌头创建的世界首个红石神经网络就是个典例。...神经元会将每个输入加权求和实现「线性分割」,再经过激活函数进行「维度提升」。此处使用tanh作为激活函数。 在实际的神经元电路中,输入部分为加权求和,输出便是激活函数。...最后一层的输出使用一个模电计数器,这个计数器的容量可以达到1024。 在输出层,计数器的高四位会被连接到计数板上,电路随后选取最大的值并显示到输出面板上。 一项震惊眼球的工程便得以实现!

    46120

    MySQL深入学习第二十一篇-为什么我只改一行的语句,锁这么多?

    在上一篇文章中,我和你介绍了间隙锁和 next-key lock 的概念,但是并没有说明加锁规则。间隙锁的概念理解起来确实有点儿难,尤其在配合上行锁以后,很容易在判断是否会出现锁等待的问题上犯错。...优化 2:索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock 退化为间隙锁; 5. 一个 bug:唯一索引上的范围查询会访问到不满足条件的第一个值为止。...根据原则 2 ,只有访问到的对象才会加锁,这个查询使用覆盖索引,并不需要访问主键索引,所以主键索引上没有加任何锁,这就是为什么 session B 的 update 语句可以执行完成。...我把题目重新描述和简化一下:还是我们在文章开头初始化的表 t,里面有 6 条记录,图 12 的语句序列中,为什么 session B 的 insert 操作,会被锁住呢?...对于那些你自己无法解释的结果,可以发到评论区里,后面我争取挑一些有趣的案例在文章中分析。

    82020

    重读十年经典论文,我在b站竟磕起“大神”李沐的深度学习“系列剧”

    莫非我已经掌握了你的输出节奏!新一期的视频预计在3天后,前排蹲起!...撑起计算机视觉半边天的:ResNet 为什么网络越深,效果越差? 残差连接在做什么? 从当下最热火的深度学习问题入手,再重读经典深度学习论文,经典还能回应时代之声吗?...原来大佬的的论文也被喷过! 看李老师做过的视频讲解,真真是读书“破”万卷! 怎么老师您的笔法越邪魅狂狷,我心越踏实!这样的论文结构解析和技术分析,一眼就能把论文读“薄”!...当然这十年里重要的工作太多了,不可能每篇都过。在选取的时候会偏向一些之前直播课中没讲到过的。欢迎大家在讨论区里提供(点)建议(歌)。 现在的候选论文已经列出,将持续更新(数字不代表讲析顺序)。...链接:https://arxiv.org/pdf/2110.07641.pdf 为什么超大的模型泛化性好 链接:https://cacm.acm.org/magazines/2021/3/250713-

    80510

    为什么我在客户端发送信息的时候按发送按钮无法发到服务器端?

    一、前言 前几天在Python白银交流群【无敌劈叉小狗】问了一个Python通信的问题,问题如下:大家能帮我看看为什么我在客户端发送信息的时候按发送按钮无法发到服务器端?...具体的表现就是点了发送但服务器收不到,如下图所示: 二、实现过程 这里【啥也不懂】给了一个指导,他当时在赶车,电脑不太方便,让粉丝截图了代码,直接看图的。这里提出来了几个怀疑的点。...顺利地解决了粉丝的问题。 如果你也有类似这种Python相关的小问题,欢迎随时来交流群学习交流哦,有问必答! 三、总结 大家好,我是Python进阶者。...这篇文章主要盘点了一个Python库下载失败的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。...最后感谢粉丝【无敌劈叉小狗】提出的问题,感谢【啥也不懂】给出的思路,感谢【莫生气】等人参与学习交流。

    14310

    在我的世界中,B站UP主搭建世界首个纯红石神经网络,图灵奖得主Yann LeCun转赞

    机器之心报道 编辑:杜伟 神奇的红石,神奇的我的世界,不可思议的 UP 主。 在我的世界(Minecraft)中,红石是一种非常重要的物品。...因此,在我的世界中,红石能够控制的机械类别极其多,小到简单机械如自动门、光开关和频闪电源,大到占地巨大的电梯、自动农场、小游戏平台甚至游戏内建的计算机。...近日,B 站 UP 主 @辰占鳌头等人在我的世界中实现了真正的「红石人工智能」,他们耗时六个月,构建了世界上首个纯红石神经网络,任务是识别 15×15 手写数字。...就连图灵奖得主 Yann LeCun 也在 Facebook 上转发了该视频,表示「一位非常有耐心且坚持不懈的人使用红石在我的世界中实现了 LeNet-5。」...最后在输出层,计数器的高 4 位被连接到计数板上,然后电路选取最大的值并在输出面板上显示。 ‍视频最后,作者展示了最终的网络结构,如下图所示。

    62540

    php递归函数返回值返回不出的问题

    ,到return的时候只能打印一个null,一直改都没法解决 后来想到了存session,存session的确解决了,但感觉非常不好 直到我度娘到了&$这个东西, 百度一下释义,说是引用变量 $b=&...$a时,当$a变了$b值也会变,$b值变了$a也会变,所以经过改进 //分类递归查找上级分类 function get_cat_pid($cat_id,&$data){     $sql = "select...,但我至今还不知道为什么return不出值........经过了大神的教诲,现在终于明白为什么会返回null了 函数的return是返回给调用这个函数的值,当循环两次值为0时,会返回给循环第一次的本身函数,然后再返回给调用函数的... 大神原话 ?...这样我懂了两个知识点: 1,函数不管是if还是else都得写个return; 2,加强基础啊!!!! 顺便把前面没有return的地方改下

    4.5K20
    领券