函式基礎操作2
阿新 • • 發佈:2022-03-17
目錄
注:函式必須先定義後呼叫
函式的語法結構
def 函式名(引數1, 引數2):
'''函式註釋'''
函式程式碼體
return 返回值
注:函式必須先定義後呼叫
函式的語法結構
def 函式名(引數1, 引數2):
'''函式註釋'''
函式程式碼體
return 返回值
一.名稱空間
1.名稱空間的定義:存放變數名與變數值繫結關係的地方 2.名稱空間分為三大類 2.1內建名稱空間: python直譯器定義好的 2.2全域性名稱空間: 在py檔案中編寫的程式碼執行產生的名字都會存到全域性名稱空間內 neme = 'thn' # name 變數名存入 dae fun(): # 未被呼叫的函式名fun 存入 pass for i in range(5) #for迴圈裡 i 變數名 存入 2.3區域性名稱空間 函式體程式碼執行時產生的都是區域性名稱空間 def fun(): name = 'thn' # neme 存入 """ 注:都是存活週期的 1.內建名稱空間 python直譯器執行 產生 python直譯器關閉 銷燬 2.全域性名稱空間 py檔案開始執行 產生 py檔案執行結束 銷燬 3.區域性名稱空間 函式體程式碼開始執行 產生 函式體程式碼執行結束 銷燬 """
二.名字的查詢順序
怎樣查詢名字呢?
1.在查詢名字的時候要認知自己在哪個空間(內建 全域性 區域性)
1.1在區域性也就是底層
'區域性名稱空間 >>> 全域性名稱空間 >>> 內建名稱空間'
1.2在全域性
全域性名稱空間 >>> 內建名稱空間
實驗讓三個名稱空間中都有同一個名稱
len = 全域性
def fun():
print(' ')
fun()
print(len) = 區域性
# 呼叫函式區域性空間
三.作用域
作用域就是名稱空間可以作用的範圍 1.置名稱空間 程式任意階段任意位置均可使用(全域性有效) 2.全域性名稱空間 程式任意階段任意位置均可使用(全域性有效) 3.區域性名稱空間 一般情況下只在各自區域性名稱空間中有效(區域性有效) '也可以通過其他方法打破這個規則'
四.global與nonlocal關鍵字
1.glonal關鍵字:區域性修改全域性不可改變型別 x = 111 def index(): x = 222 # 並不是在修改全域性的x 而是在區域性名稱空間中建立了一個新的x 如果需要修改 global x x = 666 index() print(x) # 結果是666 如果修改的話是需要用到關鍵字global 1.1如果區域性名稱空間巢狀的情況下 內層如果想要修改外層 資料是不可變型別 需要使用關鍵字nonlocal 資料是可變型別(區域性名稱巢狀 內層修改) 不需要使用關鍵字nonlocal def index(): x = 111 # 在index的區域性產生一個x=111 l1 = [11, 22, 33] def f1(): l1.append(44) index() 結果是: l1 = [11, 22, 33,44]
五.函式名的多種用法
1.函式名可以當做變數名進行賦值
def index():
print('from function index')
index()
結果:'from function index'
2.也可以指向函式體程式碼
res = index
print(res)
res()
結果:from function index
3.函式名還可以當成函式的實參
def index():
print('from index')
def func(a):
print('from func')
print(a)
a()
func(index)
結果:
from func
<function index at 0x00000000025CC400>
from index
4.還可以當函式的返回值
def func():
print('from func')
return func
func()
結果:from func
5.可以作為容器型別(列表:元組:字典等)的元素
def index():
print('from index')
l1 = [11, 22, 33, 44, index]
print(l1)
結果:
[11, 22, 33, 44, <function index at 0x00000000025CC400>]
六.函式的鑲嵌
x = 111
def f1():
x = 222
def f2():
x = 333
def f3()
x = 444
print(x)
f3()
f2()
f1()
結果是:444 由上往下呼叫 由下往上查