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

news2024/11/28 13:53:17

文章目录

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

模块与包

标准模块

import os
print(os.getcwd())

import sys
print(sys.argv)
print(sys.platform)
print(sys.path)

import time

print(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.815426


import 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,15

print(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,用于输出横线
#每次调用运算函数前,先调用函数show

def myAdd(a,b):
    return a+b

def mySubstract(a,b):
    return a-b

def myMultiply(a,b):
    return a*b

def myDivide(a,b):
    return a/b

def 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 z
    return temp



def myAdd(a,b):
    return a+b


def mySubstract(a,b):
    return a-b

def myMultiply(a,b):
    return a*b

def myDivide(a,b):
    return a/b

myAdd=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 z
    return 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/b


print(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 x
    return 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/b

print(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.coloradmin.cn/o/952124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Three.js相机参数及Z-Fighting问题的解决方案

本主题讨论透视相机以及如何为远距离环境设置合适的视锥体。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 透视相机是一种投影模式,旨在模仿人类在现实世界中看待事物的方式。 这是渲染 3D 场景最常用的投影模式。 - three.js 如果你看一下 Three.js 文档…

十四、组合模式

一、什么是组合模式 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系,使用户对单…

极限五分钟,在宝塔中用 Docker 部署升讯威在线客服系统

最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。 客户组织多名客服上线后,所有员工同一时间打开访客页面疯狂不停的给在线客服发消息,系统稳定无异常无掉线,客服回复消息正常。消息实时到达无任何延迟。 本文…

IDEA maven上传速度很慢、解决办法

maven上传的速度很慢,排除网络原因,需要检查配置 一、项目配置 以下针对于maven仓库不在C盘的情况: File | Settings | Build, Execution, Deployment | Build Tools | Maven 以IDEA为例,打开 File(文件)…

【Vue3+Ts】项目启动准备和配置项目代码规范和css样式的重置

项目启动准备 创建项目( 使用Vite 构建工具创建项目模板)目录介绍插件安装创建别名编译说明项目配置配置icon和标题配置项目别名配置ts.config.json检测vscode的插件是否配置 配置项目代码规范集成editorconfig配置prettier工具库ESLint检测配置 CSS样式…

软件测试/测试开发丨Selenium 高级定位 Xpath

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27036 一、xpath 基本概念 XPATH是一门在XML文档中查找信息的语言 XPATH使用路径表达式在XML文档中进行导航 XPATH的应用非常广泛,可以用于UI自…

使用Visual Studio 2022实现透明按钮和标签、POPUP样式窗体的一种工业系统的UI例程

例程实现的功能说明 1、主窗体采用POPUP样式,无标题栏、无菜单栏,适合工业类软件 2、按钮、标签使用自绘,实现透明样式,可以实现灵活的样式设计,更具设计感 按钮重绘函数:OnDrawItem()按钮样式设定&#…

微软 Turing Bletchley v3视觉语言模型更新:必应搜索图片更精准

据微软新闻稿透露,在推出第三代Turing Bletchley视觉语言模型后,微软计划逐步将其整合到Bing等相关产品中,以提供更出色的图像搜索体验。这款模型最初于2021年11月面世,并在2022年秋季开始邀请用户测试。 凭借用户的反馈和建议&am…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

FL studio21.1中文最新版FL萝卜音乐制作软件

FL studio21.1版中文名字叫做水果音乐编曲软件&#xff0c;是一款非常专业的电脑音乐制作软件。全新的21版本在功能上进行了升级&#xff0c;帮助用户来进行编曲、剪辑、录音、混音等多种工作&#xff0c;还可以为用户提供很多音乐创作的灵感&#xff0c;让你制作出各种好听的音…

postgresql-通用表表达式

postgresql-通用表表达式 简介简单 CTE递归 CTE案例1案例2 DML 语句与 CTE 简介 通用表表达式&#xff08;Common Table Expression、CTE&#xff09;是一个临时的查询结果或者临时表&#xff0c;可以 在其他 SELECT、INSERT、UPDATE 以及 DELETE 语句中使用。通用表表达式只在…

关闭jenkins插件提醒信息

jenkins提醒信息和安全警告可以帮助我们了解插件或者jenkins的更新情况&#xff0c;但是有些插件是已经不维护了&#xff0c;提醒却一直存在&#xff0c;看着糟心&#xff0c;就像下面的提示 1、关闭插件提醒 找到如下位置&#xff1a;系统管理-系统配置-管理监控配置 打开管…

SQL注入 - POST注入方法

文章目录 注入流程正常尝试弱口令登录判断是否存在注入&#xff0c;是否会将用户输入拼接到sql语句&#xff0c;并当做代码执行尝试是否需要闭合语句尝试注释掉后面得语句判断字段数判断显错位判断当前数据库名判断当前数据库下的表名判断当前数据库下users表的列名获取usernam…

DHCP中继实验

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. 配置IP地址2.配置R1为DHCP服务器&#xff0c;能够跨网段为192.168.2.0/24网段自动分配IP地址3. 在PC3上Ping 192.168.1.1&#xff0c;确认可以Ping通 摘要&#xff1a; 本实验旨在通过配置DHCP中继实现跨网…

stm32---用外部中断实现红外接收器

一、红外遥控的原理 红外遥控是一种无线、非接触控制技术&#xff0c;具有抗干扰能力强&#xff0c;信息传 输可靠&#xff0c;功耗低&#xff0c;成本低&#xff0c;易实现等显著优点&#xff0c;被诸多电子设备特别是 家用电器广泛采用&#xff0c;并越来越多的应用到计算机系…

电缆工厂 3D 可视化管控系统 | 智慧工厂

近年来&#xff0c;我国各类器材制造业已经开始向数字化生产转型&#xff0c;使得生产流程变得更加精准高效。通过应用智能设备、物联网和大数据分析等技术&#xff0c;企业可以更好地监控生产线上的运行和质量情况&#xff0c;及时发现和解决问题&#xff0c;从而提高生产效率…

2023-8-30 八数码(BFS)

题目链接&#xff1a;八数码 #include <iostream> #include <algorithm> #include <unordered_map> #include <queue>using namespace std;int bfs(string start) {string end "12345678x";queue<string> q;unordered_map<strin…

[ZenTao]源码阅读:自定义任务类型

1、module/custom/control.php 2、module/custom/model.php

线性代数的学习和整理13: 定义域,值域,到达域 和单射,满射,双射,反函数,逆矩阵

目录 1 函数与 向量/矩阵 2 初等数学的函数 2.1 函数 2.2 函数的定义&#xff1a;定义域 →映射→ 值域 3 高等数学里的函数&#xff1a;定义域和陪域/到达域&#xff08;非值域&#xff09;的映射关系 3.1 函数 3.2 单射&#xff0c;满射&#xff0c;双射等都是针对…

整流二极管 DL4001~DL4007:1000V 1A

国产二极管品牌厂家东沃电子&#xff08;DOWOSEMI&#xff09;推出的整流二极管种类繁多、封装多样、型号齐全&#xff0c;根据正向电流大小来分&#xff0c;有&#xff1a;1A、1.5A、2A、3A、5A、6A、10A等等。关于整流二极管&#xff0c;之前东沃电子科普过很多这方面的知识和…