在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python argv open函數(shù)入?yún)①x值問題

python argv open函數(shù)入?yún)①x值問題

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內(nèi)input的字符串賦予t,而變量t只是指向入?yún)⒌膬?nèi)存地址,為什么修改了變量t的內(nèi)容,就可以同時改變變量t指向的文本?

比如

> b=3
> a=b
> id(b)
199634
> id(a)
199634
> a=2
> id(a)
199531
> id(b)
199634

抱歉我為了理解open函數(shù)所做的變量比喻真的很糟糕,把問題弄的更亂了。謝謝大家對我的解答。

還是回到原來的問題上,open函數(shù)打開打文件為什么會被它賦予的變量改變?

我問了一個老師,他只是籠統(tǒng)的說: open之后的操作就是會影響file文件本身。 python會在人為close或腳本自然關(guān)閉后,將磁盤緩存中的數(shù)據(jù)寫入‘入?yún)⑽募?/h2>

回答
編輯回答
尕筱澄

抱歉我為了理解open函數(shù)所做的變量比喻真的很糟糕,把問題弄的更亂了。謝謝大家對我的解答。

2017年9月6日 03:49
編輯回答
做不到
  1. open會返回一個<class '_io.TextIOWrapper'>類的實例對象,該對象的write方法會把line1寫到對應(yīng)的文本中。
  2. 這里牽扯到小整數(shù)對象池的問題:http://blog.csdn.net/wangyunf...
2017年12月16日 20:54
編輯回答
我以為

Int and object are different.
You misunderstand a lot of things of object.

>>> class F:
...     a = 2
... 
>>> x = F()
>>> print(x.a)
2
>>> y = x
>>> y.a = 4
>>> print(x.a)
4
>>>
2018年3月14日 23:47
編輯回答
假灑脫

你可能對賦值操作存在誤解,變量不是盒子。

>>> a = [1, 2, 3]
>>> b = a
>>> a.append(4)
>>> b
[1, 2, 3, 4]

變量不是盒子

變量 ab 引用同一個列表,而不是那個列表的副本。可以把變量理解為標(biāo)注,對象上面可以貼很多個這樣的標(biāo)注。當(dāng) b = 2 時,只是把標(biāo)注b貼到了對象 2 上面,a標(biāo)注和a標(biāo)注下的對象都沒有變化。

t.write(line1) 只是把line1內(nèi)input的字符串賦予t,而變量t只是指向入?yún)⒌膬?nèi)存地址,為什么修改了變量t的內(nèi)容,就可以同時改變變量t指向的文本?

再來說下這個,這里并不是把 line1 內(nèi)input的字符串賦予 t,這個不是賦值操作,是對象操作。t 是一個文件操作對象的標(biāo)注,用 .write 就是對這個對象進(jìn)行操作了,比如把一段文本寫到文件對象里面。

2018年2月26日 08:25