Python中的Function定義方法第1/2頁
更新時間:2009年09月25日 14:57:30 作者:
Python中,函數(shù)是可被重用的程序段。對于函數(shù)的定義,可以使用def關(guān)鍵字。
下面就先定義一個函數(shù):
def foo():
print('function')
foo()
在上述代碼中,定義了一個名為foo的函數(shù),這個函數(shù)沒有參數(shù)。最后一行代碼的功能是調(diào)用這個函數(shù)。這是一個函數(shù)的最簡單形式。下面來介紹一下有參數(shù)的函數(shù):
def foo():
print('function')
def foo1(a,b):
print(a+b)
foo()
foo1(1,2)
foo1就是一個有參數(shù)的函數(shù),使用foo1(1,2)就可以調(diào)用這個有參的函數(shù)了。
在程序中,有變量存在,就會涉及到變量的作用域的問題。在Python中,變量的作用域分三個等級:global、local和nonlocal。
global:顧名思義,表示全局變量。即這個變量在python中處于最高層次上,也就是這個變量的定義層次最高,而不是在函數(shù)或類中。
local:局部變量,被定義在函數(shù)之中。
nonlocal:這是一個相對的概念。在python中,函數(shù)內(nèi)部可以嵌套定義內(nèi)部函數(shù),這樣函數(shù)內(nèi)部的變量相對于函數(shù)內(nèi)部的內(nèi)嵌函數(shù)來講就是nonlocal的。
下面,給出相關(guān)的程序來說明,首先看一下全局和局部變量:
x = 1
y = 2
def foo(x):
print(x)
print(y)
print('***********')
x = 3
global y
y = 3
print(x)
print(y)
print('***********')
foo(x)
print(x)
print(y)
#************************
#運(yùn)行結(jié)果
1
2
***********
3
3
***********
1
3
在上述程序中,定義了兩個全局變量x和y, 在函數(shù)foo內(nèi)部,也定義了一個局部變量x。根據(jù)運(yùn)行結(jié)果可知,在foo內(nèi)部,變量x是真正的局部變量。因?yàn)閷ζ渌龅男薷牟]有對全局變量x產(chǎn)生影響。另外,如果在foo內(nèi)部需要使用全局變量,則需要使用global關(guān)鍵字。global y的意圖就是聲明變量y為外部聲明過的全局變量y。所以,在foo內(nèi)部對y進(jìn)行修改后,在foo外部仍然有影響。因?yàn)閒oo修改的是全局變量。
再來看一下nonlocal:
def out():
z = 3
def inner():
nonlocal z
z = 4
print('inner function and z = {0}'.format(z))
inner()
print('out function and z = {0}'.format(z))
out()
#**********
#運(yùn)行結(jié)果
inner function and z = 4
out function and z = 4
復(fù)制代碼 代碼如下:
def foo():
print('function')
foo()
在上述代碼中,定義了一個名為foo的函數(shù),這個函數(shù)沒有參數(shù)。最后一行代碼的功能是調(diào)用這個函數(shù)。這是一個函數(shù)的最簡單形式。下面來介紹一下有參數(shù)的函數(shù):
復(fù)制代碼 代碼如下:
def foo():
print('function')
def foo1(a,b):
print(a+b)
foo()
foo1(1,2)
foo1就是一個有參數(shù)的函數(shù),使用foo1(1,2)就可以調(diào)用這個有參的函數(shù)了。
在程序中,有變量存在,就會涉及到變量的作用域的問題。在Python中,變量的作用域分三個等級:global、local和nonlocal。
global:顧名思義,表示全局變量。即這個變量在python中處于最高層次上,也就是這個變量的定義層次最高,而不是在函數(shù)或類中。
local:局部變量,被定義在函數(shù)之中。
nonlocal:這是一個相對的概念。在python中,函數(shù)內(nèi)部可以嵌套定義內(nèi)部函數(shù),這樣函數(shù)內(nèi)部的變量相對于函數(shù)內(nèi)部的內(nèi)嵌函數(shù)來講就是nonlocal的。
下面,給出相關(guān)的程序來說明,首先看一下全局和局部變量:
復(fù)制代碼 代碼如下:
x = 1
y = 2
def foo(x):
print(x)
print(y)
print('***********')
x = 3
global y
y = 3
print(x)
print(y)
print('***********')
foo(x)
print(x)
print(y)
#************************
#運(yùn)行結(jié)果
1
2
***********
3
3
***********
1
3
在上述程序中,定義了兩個全局變量x和y, 在函數(shù)foo內(nèi)部,也定義了一個局部變量x。根據(jù)運(yùn)行結(jié)果可知,在foo內(nèi)部,變量x是真正的局部變量。因?yàn)閷ζ渌龅男薷牟]有對全局變量x產(chǎn)生影響。另外,如果在foo內(nèi)部需要使用全局變量,則需要使用global關(guān)鍵字。global y的意圖就是聲明變量y為外部聲明過的全局變量y。所以,在foo內(nèi)部對y進(jìn)行修改后,在foo外部仍然有影響。因?yàn)閒oo修改的是全局變量。
再來看一下nonlocal:
復(fù)制代碼 代碼如下:
def out():
z = 3
def inner():
nonlocal z
z = 4
print('inner function and z = {0}'.format(z))
inner()
print('out function and z = {0}'.format(z))
out()
#**********
#運(yùn)行結(jié)果
inner function and z = 4
out function and z = 4
您可能感興趣的文章:
相關(guān)文章
python利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理
這篇文章主要為大家詳細(xì)介紹了Python如何利用pyttsx3 API實(shí)現(xiàn)文本轉(zhuǎn)語音處理,文中有詳細(xì)的示例代碼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)中文數(shù)字轉(zhuǎn)換為阿拉伯?dāng)?shù)字的方法,涉及Python字符串遍歷、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
django Model層常用驗(yàn)證器及自定義驗(yàn)證器詳解
這篇文章主要介紹了django Model層常用驗(yàn)證器及自定義驗(yàn)證器詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
python正則表達(dá)式完成車牌號檢驗(yàn)的代碼實(shí)例
這篇文章主要給大家介紹了關(guān)于python正則表達(dá)式完成車牌號檢驗(yàn)的相關(guān)資料,在Python中正則表達(dá)式是一種用于匹配和操作字符串的強(qiáng)大工具,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
python入門while循環(huán)語句理解學(xué)習(xí)
這篇文章主要介紹了python入門while循環(huán)語句理解學(xué)習(xí),文中附含詳細(xì)圖文示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
pygame實(shí)現(xiàn)井字棋之第三步邏輯優(yōu)化
這篇文章主要介紹了pygame實(shí)現(xiàn)井字棋之第三步邏輯優(yōu)化,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們也有非常好的幫助,需要的朋友可以參考下2021-05-05
Python設(shè)計(jì)模式結(jié)構(gòu)型享元模式
這篇文章主要介紹了Python享元模式,享元模式即Flyweight Pattern,指運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對象,下面和小編一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧2022-02-02

