北龙建设集团有限公司企业网站,庐江网站建设,天齐建设集团有限公司,太原软件开发定制看代码#xff1a;
a 1 # 初始化变量a#xff0c;赋值为1
b a # 变量b被赋值为变量a的值#xff0c;此时b的值也为1
b 2 # 变量b被重新赋值为2
print(a) # 打印变量a的值
执行过程如下#xff1a;
a 1#xff1a;变量a被赋值为1。b a#xff1a;变量b被赋值为… 看代码
a 1 # 初始化变量a赋值为1
b a # 变量b被赋值为变量a的值此时b的值也为1
b 2 # 变量b被重新赋值为2
print(a) # 打印变量a的值
执行过程如下
a 1变量a被赋值为1。b a变量b被赋值为变量a的值即1。b 2变量b被重新赋值为2覆盖了之前a的值。print(a)打印变量a的值此时a的值仍然是1因为它没有被重新赋值。
再看
a [1] # 初始化变量a赋值为包含一个元素1的列表
b a # 变量b被赋值为变量a的引用即指向相同的列表对象
b[0] 2 # 通过变量b修改列表的第一个元素为2
print(a) # 打印变量a引用的列表 执行过程如下
a [1]变量a被赋值为一个包含一个元素1的列表。b a变量b被赋值为变量a的引用即它们指向相同的列表对象。b[0] 2通过变量b修改了列表的第一个元素为2。由于a和b引用的是同一个列表对象因此a的内容也会被修改。print(a)打印变量a引用的列表此时列表的第一个元素已经变成了2。
因此最终的输出结果是
[2]这是因为列表是可变对象当你通过一个引用修改了列表的内容时所有指向该列表的引用都会反映出这些修改。
利用这个原理可以灵活实现一些功能。比如字典或者JSON数据我们有时候需要修改字典的值如果字典的结构层次很深修改起来就很繁琐。如果直接将字典的值定义为变量通过修改变量直接修改字典的值就会很方便。
字典的demo
dict1 {person: {name: {tom: {phone number: {first number: 123456,second number: 234567}},jack: {phone number: {first number: 666666,second number: 888888}}}}}
dict1[person][name][tom][phone number][first number] 999999
在这个代码中对字典的一个值的修改很不简洁。那么如果定义一个变量到字典的值呢
dict1 {person: {name: {tom: {phone number: {first number: 123456,second number: 234567}},jack: {phone number: {first number: 666666,second number: 888888}}}}}tom_num_1 dict1[person][name][tom][phone number][first number]
tom_num_1 999999print(dict1) # 输出{person: {name: {tom: {phone number: {first number: 123456, second number: 234567}}, jack: {phone number: {first number: 666666, second number: 888888}}}}}
并没有实现预期的功能原因与文章开头的第一段代码相同变量只是被重新赋值无法将变量的改变传递到字典的值。
再来
dict1 {person: {name: {tom: {phone number: {first number: [123456],second number: [234567]}},jack: {phone number: {first number: [666666],second number: [888888]}}}}}tom_num_1 dict1[person][name][tom][phone number][first number]
tom_num_1[0] 999999
print(dict1) # 输出{person: {name: {tom: {phone number: {first number: [999999], second number: [234567]}}, jack: {phone number: {first number: [666666], second number: [888888]}}}}}
由于变量和字典的值同时指向了同一个列表这是因为列表是可变对象当你通过变量修改了列表的内容时所有指向该列表的引用都会反映出这些修改字典的值得到了预期的修改。 json的demo
原始json文件的内容如下
{ person: { name: { tom: { phone number: { first number: [123456], second number: [234567] } }, jack: { phone number: { first number: [666666], second number: [888888] } } } } }
# encoding: utf-8
import jsonwith open(../JSON/setting.json, r, encodingutf-8) as file:json_data json.load(file)print(json.dumps(json_data, indent4))tom json_data[person][name][tom] # 定义变量
tom_1st_phone tom[phone number][first number] # 定义变量
print(tom_1st_phone)
tom_1st_phone[0] 000000 # 改变变量
print(json.dumps(json_data, indent4))with open(../JSON/setting.json, w) as file: # 保存文件json.dump(json_data, file, indent4)
执行结果
{person: {name: {tom: {phone number: {first number: [123456],second number: [234567]}},jack: {phone number: {first number: [666666],second number: [888888]}}}}
}
[123456]
{person: {name: {tom: {phone number: {first number: [000000],second number: [234567]}},jack: {phone number: {first number: [666666],second number: [888888]}}}}
}