#===================================
#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=20print(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.1b, c=2, 4
def g_func(d):global aa=d*c
g_func(b)
print(a)#練習題3.4.2a=10
def func():x=aprint(x)
func()
print(a)#練習題3.4.3a=10
def func(b):c=a+bprint(c)
func(1)#<程序:四則運算例子>
def do_div(a, b):c=a//b #a, b, c都是do_div()中的局部變量print (c)return cdef do_mul(a, b):global cc=a*b #a, b是do_mul()的局部變量,c是全局變量print (c)return cdef 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//ibreak #跳出for循環else: #假如離開循環正常,沒有碰到break,就執行else內的print,x是質數print("Prime Factor:",x)print("局部變量:參數x:%d, 變量y:%d" %(x,y))return
factors(18)
?