真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python函數(shù)默認(rèn)值和全局變量遇到的一些問題-創(chuàng)新互聯(lián)

  元組(tuple)、數(shù)值型(number)、字符串(string)均為不可變對象,而字典型(dictionary)和列表型(list)的對象是可變對象。

員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。成都創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡單”。公司專注于為企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、微信公眾號開發(fā)、電商網(wǎng)站開發(fā),微信平臺小程序開發(fā),軟件按需網(wǎng)站建設(shè)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。

  1、在函數(shù)外部定義一個x=1,在函數(shù)內(nèi)部可以進(jìn)行引用打印出來

  x=1

  def test():

  print(x)

  test()

  結(jié)果

  2、在函數(shù)外部定義一個x=1,在函數(shù)內(nèi)部再定義一個x=2,這種情況等于定義了兩個內(nèi)存空間不同的x變量,所以的值也就不同。

  x=1

  def test():

  x=2

  print(x)

  test()

  print(x)

  結(jié)果

  3、如果在函數(shù)內(nèi)對函數(shù)外定義的不可變對象進(jìn)行修改的話,會有報(bào)錯

  4、如果在函數(shù)內(nèi)對函數(shù)外定義的全局不可變對象進(jìn)行修改的話,同樣也會報(bào)錯

  5、但是,如果在函數(shù)內(nèi)將函數(shù)外定義的不可變對象設(shè)為全局變量的話,可以修改函數(shù)外部變量,因?yàn)樵诤瘮?shù)內(nèi)將外部變量定義為全局的了。

  x=1

  def test():

  global x

  x=x+1

  print(x)

  test()

  print(x)

  結(jié)果

  6、如果函數(shù)外部函數(shù)是一個可變對象的話,在函數(shù)內(nèi)部可以引用它的值,也可以對它進(jìn)行改變。

  x=[]鄭州婦科醫(yī)院 http://www.ytsgfk120.com/

  print(x)

  def test():

  x.append(1)

  print(x)

  test()

  print(x)

  結(jié)果:

  7、今天發(fā)現(xiàn)之前用的一種錯誤的使用方法,就是我把函數(shù)的默認(rèn)參數(shù)設(shè)成了一個不可變對象,但是函數(shù)的默認(rèn)變量是在函數(shù)初始化時就綁定了了內(nèi)存地址的,對于不可變對象,改變的時候其實(shí)已經(jīng)改變了內(nèi)存地址,所以函數(shù)里的默認(rèn)值還是一開始定義的不可變對象的值。

  token=1

  def test(token=token):

  print(token)

  test()

  token=token+1

  test()

  結(jié)果:

  8、如果把函數(shù)的默認(rèn)參數(shù)設(shè)為一個可變對象的話,內(nèi)存地址是同一個,那么每次使用該默認(rèn)參數(shù)的時候,其實(shí)更改的是同一個變量,函數(shù)里的默認(rèn)值會發(fā)生改變。

  token=[]

  def test(token=token):

  print(token)

  test()

  token=token.append(1)

  test()

  總結(jié):函數(shù)的默認(rèn)值最好是一個固定不會發(fā)生變化的值,如果在函數(shù)內(nèi)要改變外部定義的不可變對象的話,需要使用global將改對象定義為全局的。我自己都繞暈了,反正默認(rèn)值最好是不會變的就好了,會變的值就不要設(shè)為默認(rèn)值了,用全局變量吧。。這個問題我在用token的時候遇到了,我把token設(shè)為了函數(shù)的默認(rèn)值,但是token是字符串是不可變對象,所以即使全局的token值定時更新了,函數(shù)默認(rèn)值的那個token還是一開始那個,時間到就過期不能用了,我真是個憨批。。


網(wǎng)站題目:python函數(shù)默認(rèn)值和全局變量遇到的一些問題-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/ipois.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部