假設有乙個檔案sort.py:
def bubblesort_asc(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr)-i):
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# print(arr)
return arr
def bubblesort_des(arr):
for i in range(1, len(arr)):
for j in range(0, len(arr)-i):
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
arr.reverse()
# print(arr)
return arr
在另乙個檔案裡進行單元測試:
from sort import bubblesort_asc,bubblesort_des
if __name__ == '__main__':
arr = [5,2,3,7,9]
asc_sorted_arr = [2,3,5,7,9]
des_sorted_arr = [9,7,5,3,2]
a = bubblesort_asc(arr)
b = bubblesort_des(arr)
print(a)
print(b)
print(id(a),id(b),id(arr))
assert bubblesort_des(arr) == des_sorted_arr
assert bubblesort_asc(arr) == asc_sorted_arr
assert b == des_sorted_arr
assert a == asc_sorted_arr
結果如下:
[9, 7, 5, 3, 2]
[9, 7, 5, 3, 2]
4797941872 4797941872 4797941872
assertionerror : assert b == des_sorted_arr
即函式bubblesort_asc或者bubblesort_des返回的結果,是乙個位址。賦值給外面的變數的時候,那個變數相當於是個指標。就會指向這個位址。相當於一開始的那個變數arr已經發生了改變。這和python的語言特性是分不開的。 python返回 python 返回函式
返回函式 1.高階函式除了能夠接收函式作為引數外,還能把函式作為結果返回 2.例如乙個求和函式,通常情況下的定義以及呼叫 def sum nums x 0for n in nums x x n return x sum 1,2,3,4,5 不返回求和的結果,而是返回求和的函式 def sum 1 n...
函式區域性變數的返回
昨天看到一道程式設計糾錯題,在網上看到乙個講解非常詳細的文章,這裡拿來和大家分享一下 一般的來說,函式是可以返回區域性變數的。區域性變數的作用域只在函式內部,在函式返回後,區域性變數的記憶體已經釋放了。因此,如果函式返回的是區域性變數的值,不涉及位址,程式不會出錯。但是如果返回的是區域性變數的位址 ...
函式的變數 函式的返回值
區域性變數 在函式中定義的變數一般只能在該函式內部使用,這種變數稱為區域性變數 全域性變數 在乙個檔案頂部定義的變數可以供檔案中的任何函式呼叫,這種變數稱為全域性變數 注意,函式只能對全域性變數做 print 操作,如果要做其他操作要用 global 宣告是全域性變數,同理,如果要在函式外部使用函式...