學習心得2020.07.26
阿新 • • 發佈:2020-07-26
019 函式:我的地盤我做主
當函式有返回值時,呼叫直接返回返回值
當函式沒有返回值時,呼叫則返回None
020 函式:內嵌函式和內包
global關鍵字
用於在函式中修改全域性變數的值
>>> count=5
>>> def MyFun():
count=10
print(count)
>>> MyFun()
10
>>> print(count)
5
沒有用global時,函式中不能修改全域性變數
>>> count=5 >>> def MyFun(): global count count=10 print(count) >>> MyFun() 10 >>> print(count) 10
用了global後,函式中可以修改全域性變數
內嵌函式
Python支援函式的巢狀
>>> def fun1():
print('fun1正在被呼叫……')
def fun2():
print('fun2正在被呼叫……')
fun2()
>>> fun1()
fun1正在被呼叫……
fun2正在被呼叫……
fun2()函式只能在fun1()內被呼叫,出了fun1()函式,就不能被呼叫
021 函式:lambda表示式
Python寫一些執行指令碼時,使用lambda就可以省下定義函式的過程,不需要專門定義一個函式然後再去呼叫,使用lambda就可以使程式碼更加精煉。
>>> def ds(x):
return 2*x+1
>>> ds(5)
11
>>> def add(x,y):
return x+y
>>> add(3,4)
7
>>> lambda x:2*x+1 <function <lambda> at 0x000002724631FCA8> >>> g=lambda x:2*x+1 >>> g(5) 11 >>> lambda x,y:x+y <function <lambda> at 0x000002724631FE58> >>> g=lambda x,y:x+y >>> g(3,4) 7
兩個厲害的內建函式
- filter()過濾器:把任何非true的內容過濾掉
>>> list(filter(None,[1,0,False,True]))
[1, True]
//篩選奇數的過濾器
>>> def odd(x):
return x%2
>>> temp=range(10)
>>> show=filter(odd,temp)
>>> list(show)
[1, 3, 5, 7, 9]
>>> list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]
- map()函式:對序列進行指定加工
>>> list(map(lambda x:x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
022函式:遞迴
遞迴求階乘:
寫一個求階乘函式,例如所給的數是5,則階乘式是1234%,得到的積是120,所以120就是4的階乘
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
number=int(input('請輸入一個正整數:'))
result=factorial(number)
print("%d 的階乘是:%d" % (number,result))
023遞迴
斐波那契數列的遞迴實現
def fab(n):
n1=1
n2=1
n3=1
if n<1:
print('輸入有誤!')
return -1
while (n-2)>0:
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result=fab(20)
if result!=-1:
print('第20個數是:%d' % result)
def fab(n):
if n<1:
print('輸入有誤!')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(20)
if result!=-1:
print('第20個數是:%d' % result)