Python基础教程第六章 6.3.1 函数改变
发布时间:2020-12-17 16:59:30 所属栏目:Python 来源:网络整理
导读:def?try_to_change(n):????n?=?'Mr.Gumby'name?=?'Mrs.Entity'try_to_change(name)print?name 结果: Mrs.Entity ????在try_to_change内,参数n获得新值,但是它没有影响到name变量。n实际上是个完全不同的变量,具体的工作方式类似下面这样: name?=?'Mrs.E
def?try_to_change(n): ????n?=?'Mr.Gumby' name?=?'Mrs.Entity' try_to_change(name) print?name 结果: Mrs.Entity ????在try_to_change内,参数n获得新值,但是它没有影响到name变量。n实际上是个完全不同的变量,具体的工作方式类似下面这样: name?=?'Mrs.Entity' n?=?name n?=?'Mr.Gumby' print?name 结果: Mrs.Entity ????结果显而易见。当变量n改变点时候,变量name不变。同样,当在函数内部把参数重绑定(赋值)的时候,函数外的变量不会受到影响。 ????字符串(以及数字和元组)是不可变,既无法被修改(也就是说只能用新的值覆盖)。 def?change(n): ????n[0]?=?'Mr.Gumby' names?=?['Mrs.Entity','Mrs.Thing'] print?change(names) print?names 结果: None ['Mr.Gumby',?'Mrs.Thing'] 不用函数调用写法: names?=?['Mrs.Entity','Mrs.Thing'] n?=?names n[0]?=?'Mr.Gumby' print?names 结果: ['Mr.Gumby',?'Mrs.Thing'] ????当两个变量同时引用一个列表的时候,它们的确是同时引用一个列表。 names?=?['Mrs.Entity','Mrs.Thing'] n?=?names[:] print?n print?n?is?names print?n?==?names 结果: ['Mrs.Entity',?'Mrs.Thing'] False True 因为n和name包含两个独立(不同)的列表,其值相等。 如果现在改变n(就像在函数change中做的一样),则不会影响到names: names?=?['Mrs.Entity','Mrs.Thing'] n?=?names[:] n[0]?=?'Mr.Gumby' print?n print?names 结果 ['Mr.Gumby',?'Mrs.Thing'] ['Mrs.Entity',?'Mrs.Thing'] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |