如果需要返回值,使用保留字return和返回值列表,函式可以沒有return語句,函式體結束後,會將控制權返回給呼叫者。
函式不能直接執行,必須呼叫
def《函式名》(《非可選引數列表》,《可選引數》,=《預設值》)
.#n的階乘,這裡是4的階乘
def
fac(n)
: s=
1for i in
range(1
,n+1):
s*=i
return s
print
(fac(4)
)
輸出結果為:
24
#return可以返回多個值
>>
> a,b=3,
4>>
> a
3>>
> b
4
在函式中這種賦值同樣也存在
python的區域性變數只在函式內部起作用,出了函式就不起作用了
def
discounts
(price,rate)
: final_price = price * rate
return final_price
old_price =
float
(input
("請輸入原價:"))
rate =
float
(input
("請輸入折扣率:"))
new_price =discounts(old_price,rate)
print
("打折後的**是:"
, new_price)
輸出結果為:
請輸入原價:
100請輸入折扣率:0.8
打折後的**是: 80.0
如果我們想輸出區域性變數final_price,我們試一下
def
discounts
(price,rate)
: final_price = price * rate
return final_price
old_price =
float
(input
("請輸入原價:"))
rate =
float
(input
("請輸入折扣率:"))
new_price =discounts(old_price,rate)
print
("打折後的**是:"
, new_price)
print
(final_price)
輸出結果為:
請輸入原價:
300請輸入折扣率:0.8
打折後的**是: 240.0
nameerror: name 'final_price'
isnot defined
顯示報錯說final_price 並沒有被定義,像final_price,price,rate這些都是區域性變數,一但出了函式就不發揮作用了
全域性變數指在函式之外定義的變數,在 程式執行全過程有效,全域性變數在函式內部使用時,必須提前使用保留字global宣告,語法如下:
global
全域性變
n=
2#n是全域性變數
defmultiply
(x,y=10)
:global n
return x*y*n #使用全域性變數n
s = multiply(99,
2)print
(s)
輸出結果為:
==
====
====
====
====
====
== restart: c:
/python3.8/
3.192
.py ==
====
====
====
====
====
==396
當在函式內部,全域性變數和區域性變數定義相同時,沒有使用保留字global宣告也是區域性變數.函式內部區域性變數優先,函式外部只能使用全域性變數。
n=
2#是全域性變數
defmultiply
(x,y=10)
: n =x*y
return n #此處不是全域性變數
s = multiply(99,
2)print
(s)print
(n)#不改變外部全域性變數的值
輸出結果為:
198
2
函式的形成:函式的自我呼叫
python 函式的自我呼叫不是死迴圈,有上限,官方規定上限是1000
def
fun():
print
("你好,函式"
) fun(
)print
(fun(
))
輸出:
file "c:/python3.8/3.17.py"
, line 2
,in fun
print
("你好,函式"
)recursionerror: maximum recursion depth exceeded while pickli
樹形結構遍歷——從根節點找到子節點——把每乙個子節點當做根節點來找
我們作業系統的資料夾系統就是乙個樹形結構
使用遞迴來遍歷「愛學習的me」這個資料夾—拿到"愛學習的me"這個資料夾和資料夾的名字
.
#求n的階乘
deffac
(n):
#遞迴終止條件
if n ==0:
return
1#遞迴
res = fac(n-1)
*n return res
print
(fac(5)
)
輸出結果為:1 Python二級筆記(9)
1,演算法的空間複雜點是指演算法在執行過程中所需要的記憶體空間。2,結構化程式設計的思想包括 自頂向下 逐步求精 模組化,限制使用goto語句。3,字典中的 鍵 可以是整數或者字串,但也可以是函式,元組,類等任意不可變型別。4,字串方法replace用來替換字串中指定字元或子字串的所有重複出現,每次...
Python二級筆記(13)
1,機器數,不管是正數還是負數,其補碼的符號位取反即是偏移碼。2,迴圈佇列是佇列的一種順序儲存結構 3,break語句會跳出break所在的最內層迴圈 try中 的語句出錯時會 獲異常,執行except下的語句,迴圈也是一樣,出現異常,立即跳出迴圈 for或者while只有正常執行這兩個的迴圈語句結...
二級指標筆記
這兩天在leetcode上碰到乙個這樣的題目,remove nth node from end of list 這個題目學習到了兩種新的方法。1.路標標記法 2.二級指標應用 首先是關於路標標記,以後如果碰上這樣一種情況,要從乙個類似於鍊錶結構的不可逆的物件的結尾開始取相對位置,則可以用乙個先行路標...