1.什麼是返回值
def add(x, y):
print(x, y) #輸出:10 20
return x + y # 返回值, return以後的語句將不會再執行
print(x)
print(y)
add(10,20)
def add(x, y):
print(x, y) # 輸出:1 2
return x + y # 函式體內,碰到return語句,函式執行完畢,之後的語句將不會再執行
return x - y # 不會再次執行
add(1,2)
2.函式的隱式返回和顯示返回
3.函式多值返回
def get_data(x,y,z):
return x + 1, y + 1, z + 1
print(get_data(1,2,3)) # 得到的是乙個元組(2, 3, 4)
def get_data(x,y,z):
return [x + 1, y + 1, z + 1]
print(get_data(1,2,3)) # 得到的是乙個列表[2, 3, 4]
4.什麼是巢狀函式def outer_function():
# 內部函式
def inner_function():
print("inner_function") # 輸出:inner_function
print("outer_function") # 輸出:outer_function
# 內部呼叫
inner_function()
outer_function()
# 注意:inner_function函式只能在outer_function函式內部呼叫,無法再outer_function函式外部被呼叫
5.函式作用域def add(x, y):
z = 100
print(x, y , z) #輸出:1 2 100
add(1,2)
print(z) #報錯:nameerror: name 'z' is not defined
z = 100
def add(x, y):
print(x, y, z)# 輸出:1 2 100
add(1, 2)
print(z) # 輸出:100
6.函式的閉包# 例1
x=5def add():
y = x + 1
print(y) #輸出:6
add()
# 例2
x=5def add():
x = x + 1 # 報錯:local variable 'x' referenced before assignment
add()
# 報錯原因分析:
# 在例1中,函式內部引用的x為函式外部的x, 因此x的值為5
# 在例2中,函式內部重新定義了x的值,那麼整個函式內部都會使用這個內部x,
# 因此在運算x + 1的時候,x還沒有完成定義就被引用了,這裡的x引用的一定是內部正在定義的 x,不是函式外部的 x=5這個x;
# 例3:
x=5def add():
print(x) # 這裡的x引用的是x = 1的x,但是執行print(x)時,x還沒有被定義,所以報錯:local variable 'x' referenced before assignment
x = 1
add()
# 例4:
def outer_function():
x = 100
def inner_function():
print(x) # 內部函式引用了外部函式的自由變數 輸出:100
return inner_function
ret = outer_function()
ret()
7.關鍵字x=1
def add():
global x # 使用global關鍵字,指定x的引用全域性的x變數
x = x + 1
print(x) #輸出:2
add()
x = 100
def foo():
global x # x被宣告了全域性變數
x = 10
x += 1
print(x) # x的值為11
foo()
print(x) # 輸出x的值為:11,原本這裡應該引用的是全域性變數x = 100 的,因此global關鍵字汙染了全域性變數 x
def outer_function():
x = 100
def inner_function():
x = x + 1 # 這樣會報錯,函式內部重新定義了x的值,但是還沒有完成定義就被引用了
print(x)
return inner_function
ret = outer_function()
ret()
def outer_function():
x = 1
def inner_function():
nonlocal x # 使用nonlocal關鍵字宣告x 為外層函式的x的值
x = x + 1 #所以這裡使用的x 是外層函式的x
print(x) #輸出:2
return inner_function
ret = outer_function()
ret()
8.函式預設值的作用域def add(lst = ):
print(lst)
add() # 輸出:['hello']
print('id={}'.format(id(add))) # 函式物件的id值不變,呼叫的是同乙個函式 id=1837000
add() # 輸出['hello', 'hello']
print('id={}'.format(id(add))) # 函式物件的id值不變,呼叫的是同乙個函式 id=1837000
# 檢視函式的位置引數的預設值
print(add.__defaults__) #輸出:(['hello', 'hello'],)
# 檢視函式的關鍵字引數的預設值
print(add.__kwdefaults__) #輸出:none
def add(lst = ):
lst = lst[:]
print(lst)
add() # 輸出:['hello']
add() # 輸出:['hello']
def add(lst=none):
if lst is none:
lst =
print(lst)
add() # 輸出:[1]
print(add.__defaults__) # 輸出: (none,)
add([1, 2, 3]) # 輸出: [1, 2, 3, 1]
print(add.__defaults__) # 輸出:(none,)
add([4, 5, 6]) # 輸出:[4, 5, 6, 1]
print(add.__defaults__) # 輸出:(none,)
9.函式銷毀def add():
print('add')
del add
add()
參考:俠課島(9xkd.com)python同學計畫 then 返回值的深層巢狀
在promise.then 裡面不停地return乙個新的promise,巢狀再巢狀,就這樣不知不覺給自己出了個題目,暈暈,覺得挺好玩地 感興趣地可以看一下 let p2 newpromise resolve,reject then value then r then r err error rea...
day10 函式的返回值
返回值就是從函式內部傳遞到函式外部的資料 預設情況下函式內部產生的新資料,在函式外部不能使用 1 python中每個函式都有返回值,返回值是什麼就看執行函式體的時候遇到的return關鍵字後面的資料是什麼 如果沒有遇到return,返回值就是none 希望作為返回值的資料在函式結束的時候放在retu...
主函式的返回值返回給誰 主函式返回值
responsebody報406 原因是 要返回的物件沒有setget方法sdfsdf 自定義視 析器和缺省視 析器需同時使用才好用 如果以redireci或forward字首,那麼 走缺省視 析器 return redirect index.jsp return forward index 需寫全...