Python 基礎之返回值與函數使用與局部變量和全局變量locals() 和 globals()
一:函數的返回值 return
return: 自定義返回值,返回到哪裏? 返回到函數的[調用處]
1.return 後面可以跟上六個標準數據類型,除此之外,可以跟上 類對象,函數,如果不寫return,默認返回None
2.return 如果執行了return,意味著,return後面的所有代碼,通通不執行,函數終止了
#(1)return 後面的數據類型
#例:
def func():
#return 1 #整型
#return 3.14 #浮點型
#return True #bool類型
#return 4j #復數
#return [1,2,3,4] #列表
return {"a":1,"b":2} #字典
res = func() # res = {"a":1,"b":2}
print(res)
#(2)如果不寫return,默認返回None
def func():
a = 1
res = func()
print(res) #None
#(3) 執行完return之後,函數立刻終止,後面的代碼不執行
#例:
def func():
print("執行到1")
print("執行到2")
return 1
print("執行到3")
print("執行到4")
return 2
res = func()
print(res)
執行到1
執行到2
1
#(4)計算器
#例:
print("<------------------->")
def calc(sign,num1,num2):
if sign == "+":
res = num1 + num2
elif sign == "-":
res = num1 - num2
elif sign == "*":
res = num1 * num2
elif sign == "/":
if num2 == 0:
return "大兄弟,除數不能為0"
res = num1 / num2
return "不會,別問我!!!!!!你是個有趣的靈魂."
return res
res2 = calc("^",5,0)
print(res2)
print("=============")
res3 = calc("+",5,32)
printf(res)
結果為:
不會,別問我!!!!!!你是個有趣的靈魂.
=============
37
二:函數的使用
#python中的函數可以像變量一樣,動態創建,銷毀,當參數傳遞,作為返回值,叫第一類對象,其他語言功能有限
#例:
def func():
print(1)
#輸出:1
#1.函數名是個特殊的變量,可以當做變量賦值
#變量的賦值操作
func2 = func
func2() #func()
#動態的銷毀變量
del func2 #del 關鍵字 用來刪除變量的
#func2() #error
#2.函數名可以作為容器類型數據的元素
print("<=============>")
def func1():
print(1)
def func2():
print(2)
def func3():
print(3)
def func4():
print(4)
#也可以這樣:法一:
#lst = [func1(),func2(),func3(),func4()]
#for i in lst:
# i
結果為:
1
2
3
4
#法二:
lst = [func1,func2,func3,func4]
for i in lst:
#print(i)
i() #函數的調用
結果為:
1
2
3
4
#3.函數名可以作為函數的參數
#例1:
def func(a): #a = func2
res = a()
print(res)
def func2():
return 123
func(func2)
#結果解析:
#func2 => 123 => res = 123
#4.函數名作為函數的返回值
#例:
def func(a): #a =>
return a
def func2():
return 456
#函數的調用
res = func(func2) #func2是一個函數地址
print(res) #的地址
total = res() #res() ==> func2()
print(total)
結果為:
<function func2 at 0x00000000027310D0>
456
#__doc__或者help查看文檔
#(1)help
#help (print)
#(2)__doc__魔術屬性
res = print.__doc__
print(res)
#(3)自定義函數文檔
print("-==================")
def kao_qiezi(qimin):
‘‘‘
功能:告訴你如何做茄子
參數:是一個器皿
返回值:返回燒烤狀態
‘‘‘
print("從中間拋開,扔到燒烤架子上面")
print("扔胡椒面,扔孜然,扔蒜蓉,扔香菜")
print("用一個%s來盛放" %(qimin))
return "這個茄子做好了"
kao_qiezi("盤")
print("====-------=======")
help(kao_qiezi)
print(‘4567==============‘)
res =kao_qiezi.__doc__
print(res)
結果為:(第一個輸出函數的結果,第二和第三輸出都是幫助文檔內容)
從中間拋開,扔到燒烤架子上面
扔胡椒面,扔孜然,扔蒜蓉,扔香菜
用一個盤來盛放
====-------=======
Help on function kao_qiezi in module __main__:
kao_qiezi(qimin)
功能:告訴你如何做茄子
參數:是一個器皿
返回值:返回燒烤狀態
==================
功能:告訴你如何做茄子
參數:是一個器皿
返回值:返回燒烤狀態
三:局部變量 與 全部變量
局部變量:在函數內部聲明的變量就是局部變量
全局變量:在函數外部聲明的變量或用global關鍵字在函數內部聲明的變量
作用域:作用的範圍
局部變量:作用範圍在函數的內部
全局變量:作用範圍橫跨整個文件
#(1) 局部變量的獲取和修改
def func():
a = 1
#獲取局部變量
print(a)
#修改局部變量
a = 2
print(a)
func()
#(2)全局變量的獲取和修改
#例1:
c = 15
#獲取
#修改
c = 78
print(c)
#在函數內部通過global 修改全局變量
def func():
#如果不加global c 只能獲取 不能修改
#加了global c 告訴系統在函數內部允許修改全局變量c
global c
print(c)
c = 90
func()
print("======全局變量=====")
print(c)
結果:
78
78
======全局變量=====
90
#例2:
#在函數內部通過global 定義全局變量
def func():
global ff
ff = 908
print(ff)
func()
print(ff)
輸出:
908
908
python特有:
如果外部存在該全局變量,那麽利用golbal關鍵字,可以允許在函數內部修改全局變量
如果外部不存在該全局變量,那麽利用global關鍵字,可以允許在函數內部定義全局變量
在使用global 關鍵字的時候,一般寫在函數內部的第一行
四:locals() 和 globals()
#locals 和 globals
#(1)locals 獲取當前作用域的所有變量
locals 如果在函數外面,獲取locals()返回值打印之前,所有的內容
locals 如果在函數的裏面,獲取locals調用之前,所有的內容
#例1:
#獲取打印返回值之前的所有內容
a = 10
b = 20
res = locals()
c = 20
print(res)
d = 30
運行後可知d沒有被存到locals()的內存中c是有的,如下截圖:
#例2:
#獲取locals調用之前的所有的內容
def func():
f1 = 11
f2 = 12
res = locals()
f3 = 13
print(res)
func()
輸出的結果:(f3沒有到res內存中的)
{‘f2‘: 12, ‘f1‘: 11}
#(2)globals 只獲取全局變量(無論在函數內外都只獲取全局變量)
globals 如果在函數的外面,獲取globals() 返回值打印之前,所有內容
globals 如果在函數的裏面,獲取globals調用之前,所有的內容
#例1:
a = 15
b = 15
res = globals()
c = 26
print(res)
d =27
#res的結果中,有c 沒有d
#例2:
z1 = 5
z2 = 6
def func():
f1 = 1
f2 = 2
f3 = 3
res = globals()
f4 = 6
print(res)
z4 = 8
func() #res = globals()
z3 = 7
#因為f1,f2,f3,f4是局部變量所以都沒有,然後是獲取打印之前的所以沒有z3
#(3)globals 動態創建全局變量
globals 返回的是系統的 全局命名空間的字典 在空間裏面放的全局變量
#例:
dic = globals()
print(dic,type(dic))
dic[‘wangwen‘] = 188
print(dic[‘wangwen‘])
#已經在dic字典中了
#例2:
#globals 可以批量創建全局變量
def func():
res = globals()
for i in range(5):
res["a%d" % (i)] = i
‘‘‘
"a%d" % (i) #字符串的格式化
res[‘a0‘] = 0
res[‘a1‘] = 1
res[‘a2‘] = 2
res[‘a3‘] = 3
res[‘a4‘] = 4
‘‘‘
func()
print(a0)
print(a1)
print(a2)
print(a3)
print(a4)
Python 基礎之返回值與函數使用與局部變量和全局變量locals() 和 globals()