久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      全局變量報(bào)錯(cuò):UnboundLocalError: local variable ‘l’ referenced before assignment


      總結(jié):

      • 內(nèi)部函數(shù),不修改全局變量可以訪問(wèn)全局變量
      • 內(nèi)部函數(shù),修改同名全局變量,則python會(huì)認(rèn)為它是一個(gè)局部變量
      • 在內(nèi)部函數(shù)修改同名全局變量之前調(diào)用變量名稱(如print sum),則引發(fā)Unbound-LocalError

      在程序中設(shè)置的 sum 屬于全局變量,而在函數(shù)中沒(méi)有 sum 的定義,根據(jù)python訪問(wèn)局部變量和全局變量的規(guī)則:當(dāng)搜索一個(gè)變量的時(shí)候,python先從局部作用域開(kāi)始搜索,如果在局部作用域沒(méi)有找到那個(gè)變量,那樣python就在全局變量中找這個(gè)變量,如果找不到拋出異常(NAMEERROR或者Unbound-LocalError,這取決于python版本。)

      如果內(nèi)部函數(shù)有引用外部函數(shù)的同名變量或者全局變量,并且對(duì)這個(gè)變量有修改.那么python會(huì)認(rèn)為它是一個(gè)局部變量,又因?yàn)楹瘮?shù)中沒(méi)有sum的定義和賦值,所以報(bào)錯(cuò)。

      從下面兩個(gè)程序看單獨(dú)的訪問(wèn)或者修改全局變量,并不報(bào)錯(cuò)~

      訪問(wèn)全局變量:

        #!/usr/bin/python  # -*- coding: UTF-8 -*-    import sys    sum=5  def add(a=1,b=3):      print a,b      print sum   #僅僅訪問(wèn)   add(4,8)  print sum

      輸出結(jié)果為:

      4 8  5  5

      修改同名的全局變量,則認(rèn)為是一個(gè)局部變量:

        #!/usr/bin/python  # -*- coding: UTF-8 -*-    import sys  sum=5  def add(a=1,b=3):      print a,b       #內(nèi)部函數(shù)有引用外部函數(shù)的同名變量或者全局變量,并且對(duì)這個(gè)變量有修改.那么python會(huì)認(rèn)為它是一個(gè)局部變量      sum=b+a #在函數(shù)內(nèi)部修改      print sum  add(4,8)

      輸出結(jié)果為:

      4 8  12

      下面的程序就會(huì)因?yàn)?#8221;如果內(nèi)部函數(shù)有引用外部函數(shù)的同名變量或者全局變量,并且對(duì)這個(gè)變量有修改。那么 python 會(huì)認(rèn)為它是一個(gè)局部變量,又因?yàn)楹瘮?shù)中沒(méi)有 sum 的定義和賦值,所以報(bào)錯(cuò):

      #!/usr/bin/python  # -*- coding: UTF-8 -*-    import sys  sum=5  def add(a=1,b=3):      print a,b      print sum  #內(nèi)部函數(shù)引用同名變量,并且修改這個(gè)變量。python會(huì)認(rèn)為它是局部變量。因?yàn)樵诖颂巔rint之前,沒(méi)有定義sum變量,所以會(huì)報(bào)錯(cuò)(建議與情況一比較,備注:此處只是比上例先print sum)      sum=b+a      print sum  add(4,8)  print sum

      報(bào)錯(cuò)信息:

      4 8  Traceback (most recent call last):  ...  ...  ...  UnboundLocalError: local variable 'sum' referenced before assignment

      遇到在程序中訪問(wèn)全局變量并且要修改全局變量的值的情況可以使用:global 關(guān)鍵字,在函數(shù)中聲明此變量是全局變量。

      #!/usr/bin/python  # -*- coding: UTF-8 -*-    import sys    sum=5  print '改變之前:sum=',sum  def add(a=1,b=3):      global sum      print 'add 函數(shù)中:sum=',sum      sum=b+a      print '函數(shù)中改變之后:sum= ',sum  add(4,8)  print '改變之后 sum=',sum

      輸出結(jié)果為:

      改變之前:sum= 5  add 函數(shù)中:sum= 5  函數(shù)中改變之后:sum=  12  改變之后 sum= 12

      原文地址:https://blog.csdn.net/my2010sam/article/details/17735159

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)