python學習例項(3)
阿新 • • 發佈:2018-12-14
#=================================== #3.4 關於Python的函式呼叫 #=================================== #+++++++++++++++++++++++++++++++++++ #3.4.2 Python函式入門 #+++++++++++++++++++++++++++++++++++ #<程式:計算4+3*22> #函式f def f(x, y): return x*y*y #主函式部分 c=4+f(3, 2) print (c) #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #3.4.3 區域性變數(Local variables)與全域性變數(Global variables) #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #<程式:列印區域性變數a和全域性變數a> a=10 #函式外 def func(): a=20 #函式內,區域性變數的賦值,不會改變全域性變數。 print(a) #函式內 func() print(a) #函式外的a #<程式:關鍵字global引用全域性變數> a=10 def func(): global a #宣告這個是全域性變數。 a=20 print(a) func() print(a) #<程式:a, b, c是否為區域性變數?> b,c=2,4 def g_func(): a=b*c #a是區域性變數 d=a #d是區域性變數,其他都是全域性變數。 print(a,d) g_func() print(b,c) #練習題3.4.1 b, c=2, 4 def g_func(d): global a a=d*c g_func(b) print(a) #練習題3.4.2 a=10 def func(): x=a print(x) func() print(a) #練習題3.4.3 a=10 def func(b): c=a+b print(c) func(1) #<程式:四則運算例子> def do_div(a, b): c=a//b #a, b, c都是do_div()中的區域性變數 print (c) return c def do_mul(a, b): global c c=a*b #a, b是do_mul()的區域性變數,c是全域性變數 print (c) return c def do_sub(a, b): c=a-b #a, b, c都是do_sub()中的區域性變數 c=do_mul(c, c) c=do_div(c, 2) print (c) return c def do_add(a, b): #引數a和b是do_add()中的區域性變數 global c c=a+b #全域性變數c,修改了c的值 c=do_sub(c, 1) #再次修改了全域性變數c的值 print (c) #所有函式外先執行: a=3 #全域性變數a b=2 #全域性變數b c=1 #全域性變數c do_add(a, b) #全域性變數a和b作為引數傳遞給do_add() print (c) #全域性變數c #=================================== #3.5 函式呼叫過程的分析 #=================================== #+++++++++++++++++++++++++++++++++++ #3.5.2 函式呼叫時棧的管理 #+++++++++++++++++++++++++++++++++++ #<程式:因數分解> Print all the prime factors (>=2) of x. By Edwin Sha import math #為了要呼叫平方根函式,此函式在math包裡 def factors(x): #找到x的因數 y=int(math.sqrt(x)) for i in range(2,y+1): #檢查從2 到 x的平方根是否為x的因數 if (x %i ==0): #發現i是x的因數 print("Factor:",i); factors(x//i) #遞迴呼叫自己,引數變小是x//i break #跳出for迴圈 else: #假如離開迴圈正常,沒有碰到break,就執行else內的print,x是質數 print("Prime Factor:",x) print("區域性變數:引數x:%d, 變數y:%d" %(x,y)) return factors(18)