ex16.py
from sys import argv
script,filename=argv
t=open(filename,'w')
line1=input('line1:')
t.write(line1)
t.close()
运行后
py ex16.py test.txt
hello world
文本test.txt被成功写入'hello world'
以上是过程,我想问的是:
t.write(line1) 只是把line1内input的字符串赋予t,而变量t只是指向入参的内存地址,为什么修改了变量t的内容,就可以同时改变变量t指向的文本?
比如
> b=3
> a=b
> id(b)
199634
> id(a)
199634
> a=2
> id(a)
199531
> id(b)
199634
你可能对赋值操作存在误解,变量不是盒子。
变量
a
和b
引用同一个列表,而不是那个列表的副本。可以把变量理解为标注,对象上面可以贴很多个这样的标注。当b = 2
时,只是把标注b贴到了对象2
上面,a标注和a标注下的对象都没有变化。再来说下这个,这里并不是把
line1
内input
的字符串赋予t
,这个不是赋值操作,是对象操作。t
是一个文件操作对象的标注,用.write
就是对这个对象进行操作了,比如把一段文本写到文件对象里面。