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))

 

posted on 2018-11-10 23:00  hcy12  阅读(88)  评论(0编辑  收藏  举报

导航