欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python命名空間及作用域原理實例解析

 更新時間:2020年08月12日 08:31:11   投稿:yaominghui  
這篇文章主要介紹了Python命名空間及作用域原理實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Python命名空間和作用域

總結(jié)

emmm,這一塊講了2個內(nèi)容,一個是命名空間,一個是作用域。一個一個說吧

命名空間

A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries

上邊這段是官方文檔定義的,簡單來說就是名字到對象的映射,我們知道,python的一切都是對象,你所定義的變量名其實只是個引用。這樣就好理解了。python的命名空間由python數(shù)據(jù)結(jié)構(gòu)字典實現(xiàn)。
python的命名空間細分的話有三種。如圖所示。

這一部分沒什么好說的,重要的是理解其概念

作用域

A scope is a textual region of a Python program where a namespace is directly accessible. "Directly accessible" here means that an unqualified reference to a name attempts to find the name in the namespace.

由官方文檔可以看出,作用域就是可以直接訪問的區(qū)域。就是全局到局部。這里舉個代碼例子就行了。

#demo.py
global_var='haha'  #定義全局變量

def tool():
  local_var='local'  #局部變量
  print(local_var)  #訪問局部變量,可以訪問
print(global_var)  #訪問全局變量,可以訪問
print(local_var)  #訪問局部變量,找不到,無法訪問

這一部分的驚喜知識是跟作用域有關(guān)的。學(xué)到了2個關(guān)鍵字global和nonlocal

global_var='haha'  #定義全局變量
def tool():
  global_var='22'
  print(global_var)
print(global_var)  #訪問全局變量,可以訪問
tool()

這段代碼輸出了2個global_var。輸出結(jié)果是不一樣的。tool函數(shù)里在局部修改了global_var的值,并不影響全局。此時如果你想影響全局,你就需要用到關(guān)鍵字global.

global_var='haha'  #定義全局變量

def tool():
  global global_var
  global_var='22'
  print(global_var)

tool()
print(global_var) 

這樣就好了。

nonlocal作用類似,用來修改嵌套作用域的。

def tool():
  var=1
  def inner():
    nonlocal var
    var=2
    print(var)
  inner()
  print(var)
tool()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論