Python混淆功能参考

Python混淆功能参考,第1张

概述任何人都可以向我解释为什么a和b下面的两个函数表现不同.函数a在本地更改名称,b更改实际对象. 我在哪里可以找到这种行为的正确文档? def a(names): names = ['Fred', 'George', 'Bill']def b(names): names.append('Bill')first_names = ['Fred', 'George']print 任何人都可以向我解释为什么a和b下面的两个函数表现不同.函数a在本地更改名称,b更改实际对象.

我在哪里可以找到这种行为的正确文档?

def a(names):    names = ['Fred','George','Bill']def b(names):    names.append('Bill')first_names = ['Fred','George']print "before calling any function",first_namesa(first_names)print "after calling a",first_namesb(first_names)print "after calling b",first_names

输出:

before calling any function ['Fred','George']after calling a ['Fred','George']after calling b ['Fred','Bill']
解决方法 函数a创建一个新的本地变量名称并为其分配列表[‘Fred’,’George’,’Bill’].所以现在这是与全局first_names不同的变量,正如您已经发现的那样.

您可以阅读有关修改函数here中的列表的信息.

使函数a的行为与函数b相同的一种方法是使函数成为修饰符:

def a(names):    names += ['Bill']

或者你可以做一个纯粹的功能

def c(names):    new_List = names + ['Bill']    return new_List

并称之为:

first_names = c(first_names)print first_names# ['Fred','Bill']

纯函数意味着它不会改变程序的状态,即它没有任何副作用,例如改变全局变量.

总结

以上是内存溢出为你收集整理的Python混淆功能参考全部内容,希望文章能够帮你解决Python混淆功能参考所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1206523.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存