加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python基础教程第六章 6.3.1 函数改变

发布时间:2020-12-17 17:05:50 所属栏目:Python 来源:网络整理
导读:Python基础教程第六章 6.3.1 函数改变? ? ? ? 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实际上是个完全不同的变量,具

Python基础教程第六章 6.3.1 函数改变? ? ? ?

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']


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读