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

關(guān)于Python作用域自學(xué)總結(jié)

 更新時間:2019年06月10日 11:26:42   投稿:laozhang  
在本文里我們給大家整理了關(guān)于python自學(xué)作用域的相關(guān)知識點以及實例代碼,需要的朋友們跟著學(xué)習(xí)下。

作用域:顧名思義,作用的范圍。

如果你是自學(xué)者,而且已經(jīng)進軍到函數(shù)這一部分了,那么就應(yīng)當(dāng)了解下Python的作用域。否則你可能會像我一樣,總是對一個變量名同時存在函數(shù)內(nèi)和函數(shù)外且有不同值搞的暈頭轉(zhuǎn)向。

在這里就總結(jié)一下,在本人的知識范圍內(nèi)所了解到的作用域是什么樣的,LEGB規(guī)則到底規(guī)定了什么。

全局范圍的產(chǎn)生(global):

我們創(chuàng)建一個xxx.py文件,就是一個模塊,這時一個作用域就產(chǎn)生了。這個范圍是整個模塊,稱作Global ,全局范圍。

例如:創(chuàng)建一個文件demo.py。

聲明一個變量,bd="百度"。

變量bd就是個全局變量。

bd="百度"

if True:
  print(bd)
#==============
def function_1():
  print(bd)
function_1()

bd在函數(shù)內(nèi)和函數(shù)外都能被使用。

本地范圍的產(chǎn)生(Local):

當(dāng)函數(shù)被定義后,一個屬于這個函數(shù)的小天地就產(chǎn)生了??梢栽趦?nèi)部定義變量,也可以在它的內(nèi)部嵌套函數(shù)。這個范圍就是局部范圍。在局部范圍的變量只能局部范圍內(nèi)使用。

def locals():
  x=100
  print("local_x = ",x+20)
locals()

輸出:local_x =  120

如果在全局范圍內(nèi)打印x就會報錯:

def locals():
  x=100
  print("local_x = ",x+20
print(x)

提示名字錯誤:x沒有被定義(NameError: name 'x' is not defined)

所以局部變量x僅在函數(shù)內(nèi)使用。在其他地方調(diào)用時錯誤的。

嵌套范圍的產(chǎn)生(Enclosed ):

這個范圍在函數(shù)嵌套時產(chǎn)生,介于全局和局部范圍之間。

比如一個函數(shù)嵌套了另一個函數(shù),這個函數(shù)的作用域就是嵌套的范圍,被嵌套的就是本地范圍,如果有更多層的嵌套,那就有多層的嵌套范圍。

x=20
def local_out():
  y=30
  def local_in():
    z=40
    print('本地變量z:',z)
  print('嵌套變量y:',y)
  local_in()
print("全局變量x:",x)
local_out()

輸出:

全局變量x: 20

嵌套變量y: 30

本地變量z: 40

python的內(nèi)建函數(shù):(Built-in)內(nèi)建函數(shù)是天生就有的,你在那個作用域都可以以調(diào)用。用的最多的莫過于print()關(guān)于內(nèi)建函數(shù)你可以在python的documentation內(nèi)找到。python的內(nèi)建函數(shù):(Built-in)內(nèi)建函數(shù)是天生就有的,你在那個作用域都可以以調(diào)用。用的最多的莫過于print()關(guān)于內(nèi)建函數(shù)你可以在python的documentation內(nèi)找到。

LEGB規(guī)則:

LEGB是Local,Enclosed ,Global,Built-in首字母的縮寫聯(lián)合。

它們的范圍是有小到大是這樣排列的,Local----Enclosed----Global----Built-in,而且上層套下層:

2、python腳本運行時找名稱的順序:

1)從它本身所在的層級找名;

2)如果沒有就向外層找;

3)不會向內(nèi)找,也不會從和它同級的層內(nèi)找。

3、如果在某個層內(nèi)找到,就停止尋找,即使外面有同名的。

def max(s):
  m=min(s)
  return m

numList=[1,2,4,5,7,8,9]
maxNun=max(numList)
print('最大值=',maxNun)

輸出:最大值= 1

在全局范圍內(nèi),調(diào)用max()函數(shù),因為有個自定義函數(shù)和內(nèi)建的函數(shù)max()同名,所以它調(diào)用了,自定義的函數(shù)max(),就停止向外層查找。

同一作用域內(nèi)兩個名稱是獨立的,互不干擾。

比如兩個同一級別的函數(shù)內(nèi),可以定義同名的變量,或嵌套同名的函數(shù)。

a=3
def add_1():
  a=30
  print('add_1的 a =',a)

def add_2():
  a = 3000
  print('add_2的 a =', a)

add_1()
add_2()
print('全局變量的 a =', a)

輸出:

add_1的 a = 30

add_2的 a = 3000

全局變量的 a = 3 

結(jié)束語以上就是關(guān)于,作用域的一些規(guī)則。個人認(rèn)為,盡管作用域是獨立的,但避免寫同名的函數(shù),和變量。可起的名字很多,何必給自己找麻煩。以上就是關(guān)于,作用域的一些規(guī)則。個人認(rèn)為,盡管作用域是獨立的,但避免寫同名的函數(shù),和變量。可起的名字很多,何必給自己找麻煩。

相關(guān)文章

  • pytorch中關(guān)于backward的幾個要點說明

    pytorch中關(guān)于backward的幾個要點說明

    這篇文章主要介紹了pytorch中關(guān)于backward的幾個要點說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python Pandas 刪除列操作

    Python Pandas 刪除列操作

    這篇文章主要介紹了Python Pandas 刪除列操作,主要操作使用del和drop方法刪除DataFrame中的列,使用drop方法一次刪除多列,需要的朋友可以參考一下
    2022-03-03
  • 使用C#配合ArcGIS Engine進行地理信息系統(tǒng)開發(fā)

    使用C#配合ArcGIS Engine進行地理信息系統(tǒng)開發(fā)

    這篇文章主要介紹了使用C#配合ArcGIS Engine進行地理信息系統(tǒng)開發(fā),ArcGIS Engine是Windows系統(tǒng)上可以讓程序員創(chuàng)建自定義的GIS桌面程序,需要的朋友可以參考下
    2016-02-02
  • 盤點提高 Python 代碼效率的方法

    盤點提高 Python 代碼效率的方法

    本人用 Python 快兩年了,平時只是用它來寫點小小的分析腳本,以方便快捷為主,也沒怎么考慮代碼效率問題。最近想給自己升升級,提高一下代碼的檔次。于是找了一堆效率相關(guān)的文章,做了些實驗,總結(jié)一下。
    2014-07-07
  • python爬取抖音視頻的實例分析

    python爬取抖音視頻的實例分析

    在本篇內(nèi)容里小編給大家整理一篇關(guān)于python爬取抖音視頻的實例分析的相關(guān)內(nèi)容,有興趣的朋友可以測試下實例內(nèi)容。
    2021-01-01
  • Django中g(shù)et()和filter()返回值區(qū)別詳解

    Django中g(shù)et()和filter()返回值區(qū)別詳解

    在django中,我們查詢經(jīng)常用的兩個API中,會經(jīng)常用到get()和filter()兩個方法,兩者的區(qū)別是什么呢?本文就一起來了解一下
    2021-05-05
  • pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解

    pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解

    這篇文章主要為大家介紹了pandas數(shù)據(jù)探索之合并數(shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • python中28種極坐標(biāo)繪圖函數(shù)總結(jié)

    python中28種極坐標(biāo)繪圖函數(shù)總結(jié)

    這篇文章主要為大家詳細(xì)介紹了python中28種極坐標(biāo)繪圖函數(shù)的用法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • python實現(xiàn)連連看輔助(圖像識別)

    python實現(xiàn)連連看輔助(圖像識別)

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)連連看輔助程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python項目管理工具Rye的工作原理

    Python項目管理工具Rye的工作原理

    在開發(fā)Python項目時,有時會在一臺電腦上,同時存在多個python項目,而且每個項目的python版本和依賴可能都不一樣,此時需要使用python項目管理工具來進行管理,rye是一個python項目管理工具,本文簡單介紹rye的工作原理
    2023-07-07

最新評論