久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      全局變量報錯:UnboundLocalError: local variable ‘l’ referenced before assignment


      總結(jié):

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

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

      如果內(nèi)部函數(shù)有引用外部函數(shù)的同名變量或者全局變量,并且對這個變量有修改.那么python會認為它是一個局部變量,又因為函數(shù)中沒有sum的定義和賦值,所以報錯。

      從下面兩個程序看單獨的訪問或者修改全局變量,并不報錯~

      訪問全局變量:

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

      輸出結(jié)果為:

      4 8  5  5

      修改同名的全局變量,則認為是一個局部變量:

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

      輸出結(jié)果為:

      4 8  12

      下面的程序就會因為”如果內(nèi)部函數(shù)有引用外部函數(shù)的同名變量或者全局變量,并且對這個變量有修改。那么 python 會認為它是一個局部變量,又因為函數(shù)中沒有 sum 的定義和賦值,所以報錯:

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

      報錯信息:

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

      遇到在程序中訪問全局變量并且要修改全局變量的值的情況可以使用: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號-2    滬公網(wǎng)安備31011702889846號