1. 程式人生 > >2018/11/9(python)

2018/11/9(python)

---恢復內容開始---

1.前項引用

在函式定義之前,函式無法呼叫。

2.遞迴

import time
def T(x):
    if x==1:
        return x
    else:
        time.sleep(2)     #暫停
        print(x)
        return x*T(x-1)
x=T(5)
print(x)

3.函式呼叫

def T():
    print(1)
def Y():
    return T    #返回T函式地址
Y()()

**********************************************************************************************************************************************************************************************************************

4.匿名函式==》lambda定義

f=lambda x:x+1           #x表形參,x+1表函式操作,f作為匿名函式返回接收
print(f(10))            

**********************************************************************************************************************************************************************************************************************

程式設計方法論:1.面向過程。

      2.函式式。==>用程式語言去實現數學函式。

      3.面向物件。

滿足以下條件之一就是高階函式:

              1.把函式當作引數傳給另外一個函式。

              2.返回值中包含函式。

#例1
def fo(n):
    print(n)
def T():
    print("來自T")
fo(T())
#例2
def f():
    print("來自f")
def F():
    print("來自F")
    return f()
F()

尾呼叫:在函式的最後一步呼叫另一個函式(最後一行不一定是函式的最後一步)

map函式

map(處理方法,可迭代物件)

#功能函式
def add(x):
    return x+1
def sub (x):
    return x-1
def pf(x):
    return x**2
#資料及功能處理
def fun(op,num):
     new=[]
     for i in num:
        s=op(i)
        new.append(s)
     return new

    
num1=[5,3,2,4,5,2,5]

print(fun(add,num1))
print(fun(pf,num1))

#map寫法,實現簡單,可讀性差
print(list(map(add,num1)))

#例2
x="djuwjdjfihwofgg"
def daxie(x):
    return x.upper()
print(list(map(daxie,x)))       #需要用list轉變為列表,否則返回map首地址

 filter函式

people=["李四","張三","王二","李二"]
def start(x):
    return x.startswith("")
def end(x):
    return x.endswith("")

#法一
def F(x,y):
    s=[]
    for i in y:
        if x(i):
            s.append(i)
    return s
s=F(start,people)
print(s)
end_1=F(end,people)
print(end_1)
        

#法二
result=filter(start,people)
print(list(result))
result_2=filter(end,people)
print(list(result_2))

reduce函式

reduce(函式,序列,初始值)

reduce()函式接收的引數和 map()類似,一個函式 f,一個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。

from functools import reduce
num=[4,3,7,1,6,5,10]
def A(x,y):
    return x+y
result=reduce(A,num,0)
print(result)

**************************************************************************************************************************************************************************

內建函式

abs()         <==取正

all(序列)        《==判斷是否所有元素為True

any()            <==有一個為真就返回真

bin()      <十進位制轉二進位制

bool()    判斷布林值

bytes()    <==二進位制編碼,解碼

name='你好'
print(bytes(name,encoding='utf-8'))

chr()      <==轉換為對應ASCII

dir()      <==檢視物件方法

 print(dir(all))

divmod()    <==求商和餘數

print(divmod(10,3))

eval()    <==提取字串中的資料

eval("3*2")

可hash的資料型別即不可變資料型別

hash()    《==將字串進行hash運算

hex()    <==十進位制轉十六進位制

oct()    <==十進位制轉八進位制

isinstance()  <==判斷資料型別

print(isinstance(10,int))
print(isinstance("10",int))