oracle leg函数,032-函数的嵌套与LEGB原则
函數的嵌套
函數也是可以嵌套的。
也就是可以在一個函數內部定義和運行另一個函數。舉個例子:
>>> def funa():
print('funa()正在被調用')
def funb():
print('funb()正在被調用')
funb()
>>> funa()
funa()正在被調用
funb()正在被調用
在上述舉例中,我們先定義了一個函數funa(),定義的內容包括幾個部分:
打印'funa()正在被調用'
定義funb()函數
2.1 funb()的內容是打印'funb()正在被調用'
運行funb()函數
因此,最終執行的結果是:
funa()正在被調用——對應1
funb()正在被調用——對應3
注意:在嵌套函數中,內部變量可以引用外部變量,但外部變量不能引用內部變量。這就好比國家的法律在河南省好使,河南省的法規在洛陽市也好使,但洛陽市的條例在鄭州就不管用,在北京更不管用。
>>> def funa():
x = 88
def funb():
print(x)
funb()
>>> funa()
88 # 內部函數funb()引用了外部函數funa()定義的變量x
>>> def funa():
print(y)
def funb():
y = 66
funb()
>>> funa()
Traceback (most recent call last):
File "", line 1, in
funa()
File "", line 2, in funa
print(y)
NameError: name 'y' is not defined # 當外部函數funa()嘗試調用內部函數funb()的變量y時,系統報錯,提示y這個變量未被定義。
LEGB原則
先看示例:
x = 66
print('x在global中的值是:',x,',id是:',id(x))
def funa():
x = 88
print('x在外層函數中的值是:',x,',id是:',id(x))
def funb():
x = 99
print('x在內層函數中的值是:',x,',id是:',id(x))
funb()
funa()
----------執行結果如下----------
x在global中的值是: 66 ,id是: 2960384610704
x在外層函數中的值是: 88 ,id是: 2960384611408
x在內層函數中的值是: 99 ,id是: 2960384611760
我自認為我這個距離比教科書上的舉例更優雅,更完整。(^_^)
總結
以上是生活随笔為你收集整理的oracle leg函数,032-函数的嵌套与LEGB原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 喝红豆薏米出汗正常吗,注意事项有哪些
- 下一篇: oracle日志文件大小规则,在线重做O