1、Python函數(shù)
函數(shù)是Python為了代碼最大程度的重用和最小化代碼冗余而提供的基本程序結(jié)構(gòu),用于將相關(guān)功能打包并參數(shù)化
Python中可以創(chuàng)建4種函數(shù):
1)、全局函數(shù):定義在模塊中,每個(gè)模塊都是一個(gè)全局作用域,因此,全局作用域的范圍僅限于單個(gè)程序文
2)、局部函數(shù):嵌套在其它函數(shù)中
3)、lambda函數(shù):表達(dá)式
4)、方法:與特定數(shù)據(jù)類型關(guān)聯(lián)的函數(shù)表,并且只能與數(shù)據(jù)類型關(guān)聯(lián)一起使用
Python提供眾多內(nèi)置函數(shù)
Python創(chuàng)建、改變、查找變量名都是在名稱空間中進(jìn)行,在代碼中變量名被復(fù)制的位置決定了其能被訪問(wèn)到的范圍
Python函數(shù)執(zhí)行環(huán)境
如圖,函數(shù)可以通過(guò)多種方法獲得輸入以及產(chǎn)生輸出:
創(chuàng)建函數(shù),語(yǔ)法格式:
def funcName(arg1,arg2, ...):
suite
語(yǔ)法說(shuō)明:
1)、def是一個(gè)可執(zhí)行語(yǔ)句,可以出現(xiàn)在任何能夠使用語(yǔ)句的地方,甚至可以嵌套在其它語(yǔ)句中,例如if或while語(yǔ)句。
2)、def創(chuàng)建一個(gè)對(duì)象并將其賦值給一個(gè)變量名(即函數(shù)名)
3)、return用于返回結(jié)果對(duì)象,為可選參數(shù),無(wú)return語(yǔ)句時(shí)函數(shù)自動(dòng)返回none對(duì)象。返回對(duì)個(gè)值時(shí),使用逗號(hào)隔開(kāi),并組合稱一個(gè)元組對(duì)象返回
4)、def語(yǔ)句運(yùn)行之后,可以在程序中使用函數(shù)后附加括號(hào)進(jìn)行調(diào)用,每次對(duì)函數(shù)的調(diào)用都會(huì)創(chuàng)建一個(gè)新的本地作用域,賦值的變量除非聲明為全局變量,否則均為本地變量
5)、所有的變量名都可以歸納為本地、全局或內(nèi)置的(由__builtin__模塊提供)
python函數(shù)用法示例
例1:交互式模式下創(chuàng)建并調(diào)用函數(shù)
In [1]: def printname():
...: raw_input('Please Inputyour name:')
...:
In [2]: printname()
Please Input your name:Fieldyang
例2:編輯test.py,測(cè)試全局變量和函數(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 #調(diào)用函數(shù)產(chǎn)生的輸出,函數(shù)內(nèi)變量
27 #print產(chǎn)生的輸出,本地變量
例3:編輯test.py,測(cè)試全局變量和函數(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
print y
NameError: name 'y' is not defined
#函數(shù)內(nèi)部可以使用全局變量,局部同名變量不影響全局變量,并且全局變量無(wú)定義時(shí)無(wú)法自行使用函數(shù)內(nèi)同名變量。
#函數(shù)內(nèi)部賦值的變量可以使用global聲明為全局變量,則全局中均會(huì)調(diào)用該變量值。
例4:編輯test.py,定義全局變量
[root@test 0527]# vim test.py
#!/usr/bin/python27
x = 27
y = 66
#本地變量,函數(shù)內(nèi)部聲明“global y”后該參數(shù)不會(huì)被調(diào)用
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
變量名引用分三個(gè)作用域進(jìn)行
首先是本地、之后是函數(shù)內(nèi)、接著是全局、最后是內(nèi)置,作用域越小,優(yōu)先級(jí)越高
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ù)和變量名解析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

