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