基于Python函數(shù)和變量名解析
1、Python函數(shù)
函數(shù)是Python為了代碼最大程度的重用和最小化代碼冗余而提供的基本程序結構,用于將相關功能打包并參數(shù)化
Python中可以創(chuàng)建4種函數(shù):
1)、全局函數(shù):定義在模塊中,每個模塊都是一個全局作用域,因此,全局作用域的范圍僅限于單個程序文
2)、局部函數(shù):嵌套在其它函數(shù)中
3)、lambda函數(shù):表達式
4)、方法:與特定數(shù)據(jù)類型關聯(lián)的函數(shù)表,并且只能與數(shù)據(jù)類型關聯(lián)一起使用
Python提供眾多內(nèi)置函數(shù)
Python創(chuàng)建、改變、查找變量名都是在名稱空間中進行,在代碼中變量名被復制的位置決定了其能被訪問到的范圍
Python函數(shù)執(zhí)行環(huán)境
如圖,函數(shù)可以通過多種方法獲得輸入以及產(chǎn)生輸出:

創(chuàng)建函數(shù),語法格式:
def funcName(arg1,arg2, ...):
suite
語法說明:
1)、def是一個可執(zhí)行語句,可以出現(xiàn)在任何能夠使用語句的地方,甚至可以嵌套在其它語句中,例如if或while語句。
2)、def創(chuàng)建一個對象并將其賦值給一個變量名(即函數(shù)名)
3)、return用于返回結果對象,為可選參數(shù),無return語句時函數(shù)自動返回none對象。返回對個值時,使用逗號隔開,并組合稱一個元組對象返回
4)、def語句運行之后,可以在程序中使用函數(shù)后附加括號進行調用,每次對函數(shù)的調用都會創(chuàng)建一個新的本地作用域,賦值的變量除非聲明為全局變量,否則均為本地變量
5)、所有的變量名都可以歸納為本地、全局或內(nèi)置的(由__builtin__模塊提供)
python函數(shù)用法示例
例1:交互式模式下創(chuàng)建并調用函數(shù)
In [1]: def printname():
...: raw_input('Please Inputyour name:')
...:
In [2]: printname()
Please Input your name:Fieldyang
例2:編輯test.py,測試全局變量和函數(shù)內(nèi)本地變量
[root@test 0527]# vim test.py #!/usr/bin/python27 x = 27 def f1(): x= 52 print x f1() print x [root@test 0527]# chmod +x test.py [root@test 0527]# ./test.py
52 #調用函數(shù)產(chǎn)生的輸出,函數(shù)內(nèi)變量
27 #print產(chǎn)生的輸出,本地變量
例3:編輯test.py,測試全局變量和函數(shù)內(nèi)變量的作用域
[root@test 0527]# vim test.py #!/usr/bin/python27 x = 27 def f1(): y= 52 print "def y = %d,global x = %d" % (y,x) f1() print "global x = %s." %x print y [root@test 0527]# ./test.py def y = 52,global x = 27 global x = 27. Traceback (most recent call last): File "./test.py", line 9, in <module> print y NameError: name 'y' is not defined
#函數(shù)內(nèi)部可以使用全局變量,局部同名變量不影響全局變量,并且全局變量無定義時無法自行使用函數(shù)內(nèi)同名變量。
#函數(shù)內(nèi)部賦值的變量可以使用global聲明為全局變量,則全局中均會調用該變量值。
例4:編輯test.py,定義全局變量
[root@test 0527]# vim test.py #!/usr/bin/python27 x = 27 y = 66 #本地變量,函數(shù)內(nèi)部聲明“global y”后該參數(shù)不會被調用 def f1(): global y y= 52 print "global y = %d,global x = %d" % (y,x) f1() print "global x = %s." %x print "global y = %s." %y [root@test 0527]# ./test.py global y = 52,global x = 27 global x = 27. global y = 52.
2、變量名解析
1)、LEGB原則:
Local-->Enclosing functionlocals-->Global-->Built-in
變量名引用分三個作用域進行
首先是本地、之后是函數(shù)內(nèi)、接著是全局、最后是內(nèi)置,作用域越小,優(yōu)先級越高
2)、變量名解析示例
例1:函數(shù)嵌套的使用
[root@test 0527]# vim test2.py
#!/usr/bin/python27
#
z = "From global :"
m = 666
def f1():
x= "From function f1 :"
y= 222
print "%s y = %d" % (x,y)
print "%s m = %d" % (z,m)
def f2():
x = "From function f2 :"
print "%s y = %d" % (x,y)
f2()
f1()
print "%s m = %d" % (z,m)
[root@test 0527]# chmod +x test2.py
[root@test 0527]# ./test2.py
From function f1 : y = 222
From global : m = 666
From function f2 : y = 222
From global : m = 666
以上這篇基于Python函數(shù)和變量名解析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python區(qū)分不同數(shù)據(jù)類型的方法
這篇文章主要介紹了python區(qū)分不同數(shù)據(jù)類型的方法實例以及相關知識點,需要的朋友們學習下。2019-10-10
完美解決python中ndarray 默認用科學計數(shù)法顯示的問題
今天小編就為大家分享一篇完美解決python中ndarray 默認用科學計數(shù)法顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進行分析
這篇文章主要給大家介紹了關于利用Python榮國采集兩萬條貓眼數(shù)據(jù),對《無名之輩》影評進行分析的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-12-12
python使用自定義user-agent抓取網(wǎng)頁的方法
這篇文章主要介紹了python使用自定義user-agent抓取網(wǎng)頁的方法,涉及Python使用urllib2模塊操作網(wǎng)頁的技巧,需要的朋友可以參考下2015-04-04

