首页
学习
活动
专区
工具
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。

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

相关·内容

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

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

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连接。

2K10

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

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

1.7K41

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.

13710

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

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

1.6K10

为什么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.4K20

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

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

68720

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

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

67110

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

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

1.3K20

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

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

41720

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

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

77420

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

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

70610

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

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

10310

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

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

55840

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

React 函数式组件性能优化指南

,变就是 onClick 了,为什么传递给 onClick callback 函数会发生改变呢?...(callback, [a, b]) 把函数以及依赖项作为参数传入 useCallback,它将返回该回调函数 memoized 版本,这个 memoizedCallback 只有依赖项有变化时候才会更新...: useMemo 这个例子功能很简单,就是点击 +1 按钮,然后会将现在(num) 与 计算函数 (expensiveFn) 调用后相加,然后将和设置给 num 并显示出来,控制台会输出 49995000...} const memoizedValue = useMemo(computeExpensiveValue, [a, b]); useMemo 第一个参数就是一个函数,这个函数返回会被缓存起来...,同时这个会作为 useMemo 返回,第二个参数是一个数组依赖,如果数组里面的有变化,那么就会重新去执行第一个参数里面的函数,并将函数返回缓存起来并作为 useMemo 返回

2.3K10
领券