2020-11-15

高阶函数:
满足一下条件之一的函数就是高阶函数
1、函数可以作为参数被传递
2、函数可以做为返回值输出

高阶函数例子:
improt math
def add(x,y,f):
return f(x) + f(y)
add(4,9,math.sqrt) # 5.0

常用的五个常用高阶函数
map函数:
map()函数接收两个函数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
def f(x):
return x * x
map(f,[1,2,3,4,5,6,7,8,9])
[1,4,9,16,25,36,49,64,81]

举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]上,就可以用map()实现如下:
在这里插入图片描述

函数reduce:
reduce把一个函数作用在一个序列[x1,x2,x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
from functools import reduce
def add(x,y):
return x +y
reduce(add,[1,3,5,7,9])
25

内置函数filter
python内建的filter()函数用于过滤序列。
和map()类似,filter()也接收以一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
def is_odd(n):
return n % 2 == 1
filter(is_odd,[1,2,4,5,6,9,10,15]) #结果:[1,5,9,15]
把一个序列中的空字符串删掉,可以这么写:
def not_empty(s):
return s and s.strip()
filter(not_empty,[‘A’,",‘B’,None,‘C’,’ ‘]) #结果:[‘A’,B’,‘C’]

内置sorted函数
sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序,按照字符串长度排序

dic = {
“A”:20,
“B”:15,
“C”:40
}
lis2 = list(sorted(dic,key=lambda x: dic[x]))
for key in lis2:
print(key,dic[key])

函数嵌套与nonlocal关键字
使用nonlocal关键字,将变量标记为不在本地作用域定义,而在上级的某一级局部作用域中定义,但不能是全剧作用域中定义!

函数柯里化:
柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。

闭包:
1、闭 函数里面还嵌套了函数
2、包 包含了对外部函数作用域中变量的引用
3、内部函数包含对外部作用域而非全局作用域变量的引用,该内部函数成为闭包函数。

闭包函数实例:
def outer(a): #outer是外部函数
b = 10 #a和b都是外函数的临时变量
def inner(): #inner是内函数
print(a+b) #在内函数中,用到了外函数的临时变量
return inner #外函数的返回值是内函数的引用
demo = outer(5)
demo() # 返回15

装饰器函数:
装饰器本质上也是一个函数,只不过这个函数接收其他函数作为参数并对其进行一定的改造之后返回新函数

装饰器函数
在这里插入图片描述

模块:
pyhton中的模块是一个包含是先定义好的函数和变量的文件,其后缀名是.py
模块可以被别的程序引入,以使用该模块中的函数

使用模块:
import 模块名
例如:import os
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍的执行。

from…import语句:
from模块名import函数名(也可以是变量名或类名)
from模块名import函数名 as 别名
from模块名import*

显示与添加模块路径:
import sys
print(sys.path) #输出模块路径
#手动添加新的模块路径
sys.path.append(‘D:\pyhton\test’)

_name_属性:
一个模块被另一个程序第一次引入时,程序将被运行用_name_属性来使该程序块仅在该模块自身运行时执行。
name_与_main_底下是双下划线
if_name
== ‘mian’:
print('程序自身在运行’)
else:
print(‘我来自另一模块’)
当name没被调用时它的值是main
当被调用的时候值是模块名

dir()函数
内置的函数dir()可以找到模块内定义的所有名称(变量名,函数名类名)。以一个字符串列表的形式返回:
import sys
print(dir(sys))

包:
包的本质就是一个文件目录
目录只有包含一个和叫做_int_.py的文件才会被认作是一个包。
目录中存放了一个或多个.py模块
在导入一个包的时候,Python会根据sys.path中的目录来寻找这个包和包中含有的子目录。
如果包定义文件_init_.py存在一个叫做_all_的列表变量,那么在使用from package import *的时候就把这个列表中的所有名字作为包内容导入。
all = [“模块名1”,“模块名2”,“模块名3”]

标准模块:
sys 用于提供对Python解释器相关的操作
os 用于提供系统级别的操作,关机,删文件,创建文件,调用系统命令
time 时间相关的操作
hashlib 用于加密相关的操作
random 用于随机数
re 用于正则表达式
json 用于【字符串】和【python基本数据类型】间进行转换

sys模块常用方法
sys.path #查看以列表显示的搜索路径
sys.version #查看当前pyhton版本
sys.argv #命令行参数List
sys.exit(n) #退出程序,正常退出时exit(0)

os模块常用方法
os.name #字符串指示当前使用平台。win->‘nt’;Linux->‘posix’
os.system(“command”) #运行系统命令,直接显示
os.environ #获取系统环境变量

os模块文件操作系统
os.getcwd() 获取当前工作目录,即当前脚本工作目录路径
os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录:(’.’)
os.pardir 获取当前目录的父目录字符串名:(’…’)
os.makedirs(‘dir1/dir2’) 可生成多层递归目录
os.removedirs(‘dirname1’)若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推
os.mkdir(‘dirname’) 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname") 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname’) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename(“oldname”,“new”) 重命名文件/目录
os.stat(‘path/filename’) 获取文件/目录信息
os.sep 操作系统特定的路径分隔符,win下为"\",Linux下为"/"
os.linesep 当前平台使用的行终止符,win下为"\t\n"Linux下为"\n"
os.pathsep 用于分割文件路径的字符串

os模块路径操作方法:
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的一个元素
os.path.basename(path) 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os,path,isfile(path) 如果path是一个存在文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[,path2[,…]])将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

time模块
时间戳 time.time()
1970年1月1日之后的秒
格式化的字符串 time.strftime(’%Y-%m-%d’)
2018-07-22 11:11
时间元组:time.localtime()
年、日、星期
休眠时间: time.sleep(t)
#t – 推迟执行的秒数

返回当前时间:
import datetime
datetime.datetime.now()

datetime日期输出格式化
1.datetime => string
now = datetime.datetime.now()
now.strftime(’%Y-%m-%d%H:%M:%S’)
strftime是datetime类的实例方法。

datetime日期字符串转为日期对象
2、string => datetime
t_str = ‘2019-03-05 16:26:23’
d = datetime.datetime.strptime(t_str,’%Y-%m-%d%H:%M:%S’)
strptime是datetime类的静态方法。

datetime时间运算
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

random 随机数模块
import random
print(random.random())
print(random.randint(1,2))
print(random.randrange(1,10))
print(random.choice([1,2,3,4]))

4位验证码
在这里插入图片描述

hashlib加密模块
在这里插入图片描述
在这里插入图片描述
import hashlib
md5 = hashlib.md5() #实例化把类的功能赋值给变量
md5.update(‘需要加密的字符串’)
print(md5.hexdigest())

安装第三方模块
pip命令行安装第三模块
#安装
pip install 模块名
#卸载
pip uninstall 模块名
#查看所有安装
pip list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值