闭包

def make_arerage():l1 = []def average(price):l1.append(price)total = sum(l1)return total/len(l1)return average
avg = make_everage()
print(avg(100000))
print(avg(110000))

闭包的作用:

# 闭包就是嵌套函数存在的,存在嵌套函数之中的,而且是内层函数对外层非全局变量的引用,会产生闭包。引用的变量也叫自由变量,不会随着函数的结束而消失,会一直保存在内存中,最终的目的是保证了数据的安全

装饰器

import time
user = 'alex'
passwd = 'abc13'def auth(auth_type):print("auth func:",auth_type)def outer_wrapper(func):def wrapper(*args, **kwargs):print("wrapper func args:",*args, **kwargs)if auth_type == "local":usernmae = input("用户名>>>>>")password = input("密码>>>>>>")if user == usernmae and passwd == password:print("\033[32;1mUser\033[0m")return func(*args, **kwargs)else:exit("\033[31;1m错误\033[0m")elif auth_type == "ldap":print("搞毛线ldap,不会。。。")return wrapperreturn outer_wrapperdef index():print("in index")@auth(auth_type = "local")
def home(name):print("in home",name)return "from home"@auth(auth_type = 'ldap')
def bbs():print("in bbs")print(home('alex'))
index()
bbs()

random模块

import random
random.random()
random.randint(1,3) # 1-3的整数包括3
import random
print(random.random())
print(random.randint(1,20))
print(random.randrange(1,3)) # 顾头不顾尾,不包含3
print(random.choice('12345')) # 可迭代对象中随机取一个
print(random.sample('12345',2)) # 可迭代对象中随机取两个
print(random.uniform(1,10)) # 1-10的浮点数
items = [1,2,3,4,5,6,7]
random.shuffle(items) #洗牌 打乱items的顺序
print(items)
import random
checkcode = ''
for i in range(4):checkcode += str(random.randrange(10))
print(checkcode)

os模块

import os
os.getcwd() 获取当前工作目录
os.chdir("C\\Users") 改变当前脚本工作
os.curdir  返回当前目录:('.')
os.pardir  获取当前目录的父目录:('..')
os.makedirs(r"c:\a\b\c\d") 可生成多层递归目录
os.removedirs(r"c:\a\b\c\d") 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推
os.mkdir(r"dirname") 生成单级目录
os.rmdir(r'dirname') 删除单级目录
os.listdir(r'dirname') 查看当前的目录 包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename('oldname','newname') 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下位“\\”,Linux下为“/”
os.linesep 输出当前当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串
os.name 输出字符串指示当前使用平台。win->'nt';linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名用元组返回
os.path.dirname() 返回path的目录,其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。
os.path.exists(path) 如果path存在,返回True,不存在返回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所指向的文件或者目录的最后修改时间

sys模块

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取python解释程序的版本信息
sys.maxint  最大的Int值
sys.path    返回模块的搜索路径,初始化时使用python环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

shutil模块

shutil.copyfile('userinfo1.txt','test1') # 复制文件到另一个文件
shutil.copymode(src,dst) 仅拷贝权限、内容、组、用户均不变
shutil.copysta(src,dst) 拷贝状态的信息,包括:mode bits,atime,mtime,flags
shutil.copy(src,dst) 拷贝文件和权限
shutil.copy2(src,dst) 拷贝文件和状态信息
shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None) 递归的去拷贝文件
shutil.retree(path[,ignore_errors[,onerror]]) 递归的去删除文件
shutil.move(src,dst) 递归的去移动文件
shutil.make_archive('shutil_archive_test','zip','path(路径)') 把后边的文件夹压缩到shutil_archive_test.zip中
shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的
import zipfile
# 压缩
z = zipfile.ZipFile('laxi.zip','w')
z.write('a.log')
z.write('data.data')
z.close()# 解压
z = zipfile.ZipFile('laxi.zip','r')
z.extractall()
z.close()import tarfile# 压缩
tar = trafile.open("your.tar",'w')
tar.add('/Users/xxx/bbs.zip', arcname='bbs.zip')
tar.add('/Users/xxx/cmdb.zip', arcname='cmdb.zip')
tar.close()# 解压
tar = tarfile.open('your.tar','r')
tar.extractall() # 可设置解压地址
tar.close()

shelve模块

# shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式
import shelve
import datetime
d = shelve.open('shelve_test') # 打开一个文件# class Test(object):
#     def __init__(self,n):
#         self.n = n
# t = Test(123)
# t2 = Test(123443)
# info = {'age':18,'username':"sfs"} # 写进去
#
# name = ['alex','wuasi','twusi']
# d['name'] = name # 吃酒列表
# d['info'] = info # 持久dict
# d['date'] = datetime.datetime.now()# 读出来
print(d.get("name"))
print(d.get("info"))
print(d.get("date"))
d.close()

python读取xml,修改xml

https://www.cnblogs.com/alex3714/articles/5161349.html

ConfigParser 模块

用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为 configparser

[DEFAULT]
serveraliveinterval = 45
compression = yes
compressionlevel = 9
forwardx11 = yes[bitbucket.org]
user = hg
forwardx11 = yes[topsecret.server.com]
host port = 50022
forwardx11 = no
# 写入
import configparserconfig = configparser.ConfigParser()
config["DEFAULT"] = {'ServerAliveInterval': '45','Compression': 'yes','CompressionLevel': '9'}config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'  # mutates the parser
topsecret['ForwardX11'] = 'no'  # same hereconfig['DEFAULT']['ForwardX11'] = 'yes'
config['bitbucket.org']['ForwardX11'] = 'yes'
with open('ha.conf', 'w') as configfile:config.write(configfile)
# 读
import configparser
conf = configparser.ConfigParser()
conf.read('ha.conf')print(conf.defaults())
print(conf.sections())
print(conf['bitbucket.org']['user'])

hashlib模块

# 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
# 如果是中文的话,需要encode成utf-8编码
import hmac
h = hmac.new('字体'.encode('utf-8'))
print(h.hexdigest())
import hmac
h = hmac.new(b'hello'.encode('utf-8'))
print(h.hexdigest())import hashlib
m = hashlib.md5()
m.update(b"sdf")
print(m.hexdigest())
m.update(b"It's me")
print(m.hexdigest())
m.update(b"It's been a func")
print(m.hexdigest())
m2 = hashlib.md5()
m2.update(b"HelloIt's me")
print(m2.hexdigest())
m3 = hashlib.sha1()
m3.update(b"password")
print(m3.hexdigest())

转载于:https://www.cnblogs.com/alex3174/p/11222096.html

python 闭包,装饰器,random,os,sys,shutil,shelve,ConfigParser,hashlib模块相关推荐

  1. SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理

    SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...

  2. python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...

    一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...

  3. Python 进阶_闭包 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  4. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内 ...

  5. python 发红包import random用redenv_python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

  6. python入门day11闭包装饰器

    目录 闭包 例子 同级闭包 装饰器引入 装饰器使用 无参例子 有参例子 可变参数例子 带关键字参数的装饰器 双层装饰器 装饰器带参数 装饰器的应用 闭包 def func():a=100def inn ...

  7. 【转】Python之装饰器

    [转]Python之装饰器 本节内容 必要知识回顾 情景模拟 装饰器的概念及实现原理 回马枪(带参数的装饰器) 一. 必要知识回顾 在开始说装饰器之前,需要大家熟悉之前说过的相关知识点: 函数即&qu ...

  8. Python之装饰器

    Python之装饰器 在不修改函数调用方式的前提下,也不能修改函数内部源代码!!!! 例如: 在每个季度公司发绩效,统计每个人的代码执行效率.咱们总不能是每个函数里加time模块吧. import t ...

  9. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  10. Python的装饰器

    详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...

最新文章

  1. MiBioGen联盟倡议:综合分析人类基因组与菌群关系研究
  2. android模块化 osgi,蚂蚁金融级移动应用 osgi 模块化架构实践.pdf
  3. linux 如何查看属性,linux 下查看系统属性
  4. java如何驱动z4mplus打印二维码_斑马 Zebra 打印机驱动下载
  5. centos7 mysql8 主从_CentOS7开启MySQL8主从备份、每日定时全量备份(推荐)
  6. 遥感数据集_最新高光谱遥感数据集
  7. tkinter 文本框 值改变_【动图详解】PPT中文本框的使用方法,初学者必看!
  8. AI2021下载 Illtrator2021安装教程
  9. 用Unity3D实现打飞碟游戏
  10. 确定有限状态自动机(deterministic finite automaton)DFA
  11. LED 点阵实验~点亮一个点、数字、汉字、图
  12. 微软云存储SkyDrive API:将你的数据连接到任何应用、任何平台,及任何设备上
  13. 两种有效提高win10电脑开机速度的方法
  14. lane是什么意思_Lane_英文名Lane是什么意思
  15. 1周岁的宝宝营养食谱(3)
  16. 护士资格证考试机考可以用计算机吗,护士资格人机对话考试怎么考?
  17. 概率论与数理统计 浙江大学 第9-15讲单元测验
  18. 关于组队学习的一点想法
  19. python entry高度_Python2.7.3 Tkinter Entry(文本框) 说明
  20. python 超大json文件读取

热门文章

  1. 新来的老大说,“公司以后禁止使用Lombok”,我表示反对~
  2. 全站HTTPS来了!有何优势、与HTTP有何不同
  3. 宣传失真,二手人生。
  4. 打车界的“拼多多”?
  5. python3.7安装pyltp出错_安装pyltp遇到的问题及解决办法
  6. GPU 编程 CPU 异同点_专业软件与CPU的性能相关性详细对比
  7. 27.用webpack自搭react和vue框架
  8. 微信小程序如何引用其他js文件
  9. Linux下mysql主从同步备份master-slave详细配置
  10. Qt之指针与float--setNum使用