溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Python中使用嵌套函數

發布時間:2021-05-12 17:19:14 來源:億速云 閱讀:331 作者:Leah 欄目:開發技術

這篇文章給大家介紹怎么在Python中使用嵌套函數,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

內嵌函數(嵌套函數):

  • 意思:在函數里面再定義一個新的函數

  • 如果在函數體內不調用內嵌的函數,那么無法在外部調用

def my_pr1():
  print("第一層打印")
  def my_pr2():
    print("第二層打印")
  my_pr2()#如果在函數體內不調用內嵌的函數,那么無法在外部調用
my_pr1()

作用域:

local(局部作用域)  -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)

代碼塊級別的作用域: Python沒有劃分代碼塊作用域

  • 代碼塊里的變量,外部可以調用

if 1>0:
  name="automan"
print(name)

上述代碼運行結果:

automan

函數基本的作用域:

  • 局部作用域:

    • 函數內部定義的變量是局部變量,外部無法訪問

a=50
def change(x):
  x=6
change(a)
print("after change:",a)

上述代碼運行結果:

after change: 50

def func3():
  superman="automan"
print(superman)

運行結果:

NameError: name 'superman' is not defined

  • 內嵌關系的函數的作用域:

    • 對于內嵌關系的函數的作用域依然遵循local(局部作用域)  -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)

  1. 如果自身函數有目標變量,則使用自身函數內的變量的值;

  2. 如果沒有,會向上找父函數中是否存在目標變量,如果有,則使用父函數中的該變量的值;【如果父函數還有父函數,也會一直向上查找】

  3. 直到離開最外層的函數體,那么會在全局范圍內找該變量

  4. 如果再沒有,會到內建對象作用域找

  5. 都沒有就報錯,拋出異常

def func4():
  superman="automan"
  def haha():
    print(superman)
  haha()
func4()

運行結果:

automan

  • 非內嵌關系的函數的作用域:

    • 非內嵌關系的函數作用域依然遵循local(局部作用域)  -->enclosing(函數范圍作用域)-->global(全局作用域)--->build-in(內建對象作用域)

    • 但由于不是父子關系的嵌套函數,當自身函數范圍區域內找不到時,會直接到全局作用域找

aotuman='金甲戰士'
def f5():
  print(aotuman)
def f4():
  aotuman='max'
  f5()
f4()

運行結果:

金甲戰士

偏函數:

  • 默認填寫某個函數的某些參數,返回一個新的函數

  • 避免了參數的重復輸入

import functools
print_t=functools.partial(print,end='\t')
print_t(1)
print_t(1)
print_t(1)

上述代碼結果:

1    1    1   

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

關于怎么在Python中使用嵌套函數就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女