当前位置: 首页 > news >正文

飞天使-python的模块与包与装饰器

文章目录

      • 模块与包
        • 标准模块
        • 第三方模块
        • 自定义模块
      • 高级语法
        • 切片
        • 迭代器/生成器
        • 高级模式(闭包)
        • 高级模式(装饰器)
      • 参考视频

模块与包

标准模块

import os
print(os.getcwd())import sys
print(sys.argv)
print(sys.platform)
print(sys.path)import timeprint(time.localtime())print("开始")
time.sleep(5)
print("结束")start=time.time()
for i in range(10000):i+=1
end = time.time()
print(end - start)import time
print(time.time())    #返回当前时间的时间戳(1970年后经过的浮点秒数)。
print(time.localtime())
time.sleep(3)
print(time.time())# struct_time元组共有9个元素:
# 0  tm_year(年)    
# 1  tm_mon(月)
# 2  tm_mday(日)
# 3  tm_hour(时)
# 4  tm_min(分)
# 5  tm_sec(秒)
# 6  tm_wday(weekday),0是周一,以此类推
# 7  tm_yday(一年中的第几天)
# 8  tm_isdst(是否是夏令时),0非夏令时、1夏令时、-1不确定是否是输出结果:
开始
结束
0.0023679733276367188
1693381095.814861
time.struct_time(tm_year=2023, tm_mon=8, tm_mday=30, tm_hour=15, tm_min=38, tm_sec=15, tm_wday=2, tm_yday=242, tm_isdst=0)
1693381098.815426import math
print(math.pi)
print(math.cos(3.14))random  随机数
整数
randrange(start,stop[,step])
randint(a,b)import random
print(random.randrange(1,20,7))   #1,8,15print(random.randint(1,100))  #[1,100]范围,而不是[1,100)for i in range(1,1000):print(random.randint(1,100))序列
choice(seq)
shuffle(x)
sample
random()
uniform(a,b)
等等,这些要有使用场景在回来看# search(pattern,string)	在字符串中寻找模式
# match(pattern,string)  	在字符串开始处匹配模式
# split(pattern,string)	根据模式分割字符串
# findall(pattern,string)	列表形式返回匹配项
# compile(pattern)	创建模式对象import re
x="李立宗的Python课程,在CSDN的课程"
print(re.search(",",x))
print(re.match("李立宗",x))
print(re.split(",",x))
print(re.findall("[nN]",x))r=re.compile("[0-9]")
x="今天是2021年6月23日"
print(r.match(x))
print(r.search(x))
print(r.findall(x))r=re.compile(":")
x="今天是:2021年6月23日"
print(r.split(x))r=re.compile("[0-9]")
x="我买了6斤土豆,8斤黄瓜"
print(r.split(x))import re
a="it's a very good lesson"x=re.split(" ",a)
print(a)
print(x)# re.match 尝试从字符串的起始位置匹配一个模式,
# 如果在起始位置匹配不成功,match()返回none。x=re.match("李立宗","李立宗的Python入门")
print(x)
print(x.span())
x=re.match("入门","李立宗的Python入门")
print(x)r=re.compile("[0-9]")
print(re.match(r,"lilizong"))
print(re.match(r,"13602153866"))
print(r.match("lilizong"))
print(r.match("13602153866"))
print(r.match("我买了6斤土豆,花了8块钱"))
print(r.search("我买了6斤土豆,花了8块钱"))
print(r.findall("我买了6斤土豆,花了8块钱"))
print(r.split("我买了6斤土豆,花了8块钱"))

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

第三方模块

查看版本 pip --version
看看安装了哪些包 pip list
安装指定的包 pip install numpy
安装指定的包 pip install numpy==1.19.3
升级到指定的版本 pip install --upgrade numpy 
卸载包 pip uninstall 包名

自定义模块

__name__ 的使用from 和 import 的使用参考下面截图

在这里插入图片描述
在这里插入图片描述

高级语法

切片

在这里插入图片描述

迭代器/生成器

列表、元组、集合、字典、字符串等对象被称为可迭代对象。

高级模式(闭包)

一个稳定的输出

在这里插入图片描述

高级模式(装饰器)

这个概念在其他的语言里面没有,相对难理解
最简单的装饰器
#在计算加减乘除前,先输出一个分隔线(=====)
#方案1:单独定义一个函数show,用于输出横线
#每次调用运算函数前,先调用函数showdef myAdd(a,b):return a+bdef mySubstract(a,b):return a-bdef myMultiply(a,b):return a*bdef myDivide(a,b):return a/bdef show():print("=====开始=======")show()
print(myAdd(3,4))
show()
print(mySubstract(3,4))
show()
print(myMultiply(3,4))
show()
print(myDivide(3,4))输出结果
=====开始=======
7
=====开始=======
-1
=====开始=======
12
=====开始=======
0.75正版装饰器
#在计算加减乘除前,先输出一个分隔线(=====)
#方案4:使用修饰器完成
# 修饰器,既可以有返回值、也可以没有返回值,他的样式是多种多样的。
# 实现方式: 实际函数名=修饰器函数名(实际函数名)def show(function):def temp(x,y):print("===========")z=function(x,y)return zreturn tempdef myAdd(a,b):return a+bdef mySubstract(a,b):return a-bdef myMultiply(a,b):return a*bdef myDivide(a,b):return a/bmyAdd=show(myAdd)
print(myAdd(3,4))
mySubstract=show(mySubstract)
print(mySubstract(3,4))
myMultiply=show(myMultiply)
print(myMultiply(3,4))
myDivide=show(myDivide)
print(myDivide(3,4))升级一版本
#在计算加减乘除前,先输出一个分隔线(=====)
#方案5:使用修饰器语法糖:@修饰器
# 修饰器,既可以有返回值、也可以没有返回值,他的样式是多种多样的。
# 实现方式: @修饰器函数名        
# 等价于: 实际函数名=修饰器函数名(实际函数名)
# 注意点:位置:实际函数前def show(function):def temp(x,y):print("===========")z=function(x,y)return zreturn temp@show
def myAdd(a,b):return a+b@show
def mySubstract(a,b):return a-b@show
def myMultiply(a,b):return a*b@show
def myDivide(a,b):return a/bprint(myAdd(3,4))
print(mySubstract(3,4))
print(myMultiply(3,4))
print(myDivide(3,4))使用 funx(*args, **kwargs):# 上述过程中,参数的个数是固定的
# 改进:能够适应不同的格式的参数# args,arguments:收集所有位置参数
# kwargs,keyword args:关键字参数(字典等)
def funx(*args, **kwargs):print(args,kwargs)funx(1)
funx(6,李立宗=13602153866)
funx(6,7,87,刘能=99,李立宗=100)
funx(刘能=99,李立宗=100)funx(刘能=99,李立宗=100)# args,arguments:收集所有位置参数
# kwargs,keyword args:关键字参数(字典等)最后一版
#在计算加减乘除前,先输出一个分隔线(=====)
#方案6:使用修饰器完成
# 修饰器,既可以有返回值、也可以没有返回值,他的样式是多种多样的。
# 不同格式的参数,2个或3个,
# 当然,参数个数、类型都是可以多样的
def zhuangshiqi(function):def wrapper(*args,**kwargs):print("============")x=function(*args,**kwargs)return xreturn wrapper@zhuangshiqi
def jiafa(a,b):return a+b
@zhuangshiqi
def jiafa3(a,b,c):return a+b+c
@zhuangshiqi
def jianfa(a,b):return a-b
@zhuangshiqi
def chengfa(a,b):return a*b
@zhuangshiqi
def chufa(a,b):return a/bprint(jiafa(3,5))
print(jiafa3(4,5,6))
print(jianfa(4,5))
print(chengfa(5,6))
print(chufa(4,8))

参考视频

https://edu.csdn.net/learn/35464/529482?spm=3001.4143
http://www.lryc.cn/news/146962.html

相关文章:

  • linux shell脚本利用 kill -0 检查进程是否存在
  • 抖音视频删了怎么在电脑上找回来
  • 方面级别情感分析之四元组预测
  • 算法 稀疏数组 数组优化 数组压缩 二维数组转稀疏数组 算法合集(二)
  • 交换机端口安全实验
  • c# 本地化中英文切换
  • rabbitmq的优先级队列
  • SpringBoot的Cacheable缓存注解
  • uniapp的 picker 日期时间选择器
  • element ui-Pagination
  • [开发|java] 将数组使用环境变量传递配置给typesafe配置示例
  • MAC苹果电脑如何压缩rar文件?
  • 浅析编程中的语法糖
  • 【【萌新的STM32学习23----数据通信的基本类型】】
  • 标准库STL容器使用值语义
  • dockerfile 命令详解(三)
  • 使用这个插件,fiddler抓包直接生成httprunner脚本
  • 干翻Dubbo系列第十五篇:Rest协议基于SpringBoot的规范化开发
  • 文件上传后端处理页面
  • 小红书母婴类产品同质化严重,如何在市场中脱颖而出?
  • Typora上使用Mermaid语法展示流程图、时序图、甘特图
  • css中文本阴影特效
  • ITIL帮助台怎样帮助企业建设IT服务?
  • 解释区块链技术的应用场景和优势
  • 从编程语言的角度来理解正则表达式
  • DP读书:鲲鹏处理器 架构与编程(十四)ACPI与软件
  • C#,《小白学程序》第六课:队列(Queue)的应用,《实时叫号系统》
  • mysql profiling profiles profile
  • ChatGPT AIGC 一个指令总结Python所有知识点
  • 【kubernetes】k8s部署OpenELB及在KubeSphere使用OpenELB