python高级(补充)

闭包

闭包的定义:

在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,我们把这个使用外部函数变量的内部函数称为闭包

通过闭包的定义,我们可以得知闭包的形成条件:

1- 在函数嵌套(函数里面再定义函数)的前提下
2- 内部函数使用了外部函数的变量(还包括外部函数的参数)
3- 外部函数返回了内部函数
2,闭包的作用
闭包可以保存外部函数内的变量,不会随着外部函数调用完而销毁。

def f1(num):def f2(a,b):r = num + 100+a+bprint(r)return f2if __name__ == '__main__':a = f1(100)a(100,50)
# 就是一个外部方法接收参数,内部方法进行计算,并让外部函数返回内部函数的名字
# 目的就是延长外部参数的生命周期

装饰器

装饰器的定义
就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数。

装饰器的功能特点:
不修改已有函数的源代码
不修改已有函数的调用方式
给已有函数增加额外的功能


# 添加一个登录验证的功能
def check(fn):def inner():print("请先登录....")fn()return innerdef comment():print("发表评论")# 使用装饰器来装饰函数
comment = check(comment)
comment()

装饰器的语法糖写法

Python给提供了一个装饰函数更加简单的写法,那就是语法糖,语法糖的书写格式是: @装饰器名字,通过语法糖的方式也可以完成对已有函数的装饰

# 添加一个登录验证的功能
def check(fn):print("装饰器函数执行了")def inner():print("请先登录....")fn()return inner# 使用语法糖方式来装饰函数
@check
def comment():print("发表评论")comment()

说明:
@check 等价于 comment = check(comment)
装饰器的执行时间是加载模块时立即执行


# 添加输出日志的功能
def logging(fn):def inner(num1, num2):print("--正在努力计算--")fn(num1, num2)return inner# 使用装饰器装饰函数
@logging
def sum_num(a, b):result = a + bprint(result)sum_num(1, 2)

with语句

try:# 1、以读的方式打开文件f = open("1.txt", "r")# 2、读取文件内容f.write("xxxxx")except IOError as e:print("文件操作出错", e)finally:# 3、关闭文件f.close()

# 1、以写的方式打开文件
with open("1.txt", "w") as f:# 2、读取文件内容f.write("hello world")

深浅拷贝

import copynum1 =1
print(id(num1))
num1=2
print(id(num1))num2 = copy.copy(num1)
print(id(num2))print("以下为不可变类型"*5)
li = [1,2,3]
print(id(li))
li.append(4)
print(id(li))li2 = copy.copy(li)
print(id(li2))
print(li2)print("浅拷贝两层"*7)
li3 = [1,2,3,[4,5]]
print(id(li3))
# 第二层打印出来的id值是相同的
print(id(li3[3]))li2 = copy.copy(li3)
print(id(li3[3]))
print(id(li2))
print(li2)print("深拷贝"*50)li4 = [1,2,3,[4,5]]
print(id(li4))
# 第二层打印出来的id值是不同的
print(id(li3[3]))li5 = copy.deepcopy(li4)
print(id(li5[3]))
print(id(li5))print("浅拷贝外面可变,里面不可变"*30)
list1 =['qw',12,(1,2)]print(id(list1))
list1.append(4)
print(id(list1))
print(id(list1[2]))list12 = copy.deepcopy(list1)
print(id(list12))
print(id(list12[2]))
140723981244064
140723981244096
140723981244096
以下为不可变类型以下为不可变类型以下为不可变类型
2338845806400
2338845806400
2338845810816
[1, 2, 3, 4]
浅拷贝两层浅拷贝两层浅拷贝两层浅拷贝两层
2338845811136
2338845740608
2338845740608
2338845811584
[1, 2, 3, [4, 5]]
深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深拷贝深
2338845811456
2338845740608
2338845805120
2338845811200
浅拷贝外面可变,里面不可变浅拷贝外面可变,里面不可
2338847010496
2338847010496
2338844366720
2338847009920
2338844366720

re模块(正则表达式)

\w

  • 匹配非特殊字符

  • 数字、字母、中文、

  • \W

    • 匹配特殊字符

    • \s

    • 匹配空格、\n、\t

    • 一个长度

  • \S

    • 匹配非空格、非\n、非\t

    • 数字、特殊字符、中文等等都行

在这里插入图片描述

# 导入re模块
import re# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580809.shtml

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

相关文章

【node-express】实现省县市/区三级联动接口

省县市/区三级联动接口 介绍接口步骤代码部分 介绍 源码地址:https://github.com/thinkasany/nestjs-course-code/tree/master/demo/address 使用 navicat 导入sql文件,新增表,然后只需要一个接口 localhost:3001/region?parentId1, 不断的…

Linux介绍、安装和常用指令

目录 Linux 介绍 Linux 发行版 安装 Linux 常用 Linux 指令 Linux 介绍 Linux 是一个广泛使用的开源操作系统,它是基于Unix的多用户、多任务系统,适用于服务器、桌面和嵌入式系统。Linux系统以其稳定性、安全性和灵活性而闻名。Linux的核心是Linux内…

SpringBoot运维(三)-- 多环境开发(yml多文件版)

目录 引言: 1. 多环境开发的配置 2. 多环境开发--根据功能拆分配置文件 引言: 多环境? 其实就是说你的电脑上写的程序最终要放到别人的服务器上去运行。每个计算机环境不一样࿰

Leetcode—2660.保龄球游戏的获胜者【简单】

2023每日刷题&#xff08;七十二&#xff09; Leetcode—2660.保龄球游戏的获胜者 实现代码 class Solution { public:int isWinner(vector<int>& player1, vector<int>& player2) {long long sum1 0, sum2 0;int n player1.size();for(int i 0; i &…

02之Python运算符与if结构

Day02之Python运算符与if结构 一、昨日回顾 1、回顾昨天的课程内容 略 2、回顾昨天的作业 定义变量&#xff0c;c1 ‘可乐’&#xff0c;c2 ‘牛奶’&#xff0c;通过Python代码把c1内容调整为牛奶&#xff0c;c2调整为可乐。 # 1、定义两个变量 c1 可乐 c2 牛奶# 2、…

Python实现张万森下雪了的效果

写在前面 即将步入婚宴殿堂的女主林北星&#xff0c;遭遇了男友展宇的毁约&#xff0c;生活和工作也变得一团糟。与此同时&#xff0c;她被时光老人带回了十八岁的高三时光&#xff0c;重新开启了自己的人生。林北星摆脱了展宇的束缚&#xff0c;认真准备高考&#xff0c;想要…

硬件调试-电源纹波测量

硬件调试-电源纹波测量 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化感谢酸奶大佬提供的硬件技术指导&#xff1b; 电源纹波 百度百科定义如下&#xff1a; 纹波是由于直流稳定电源的电压波动而造…

VALL-E-X 容器化

创建基础镜像的dockerfile文件 FROM nvcr.io/nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 ENV DEBIAN_FRONTENDnoninteractive ENV TZEurope/London RUN apt update && apt install python3-venv -y && apt install python3-pip -y && apt inst…

QML —— Button按钮、FileDialog选择框示例(附完整源码)

示例效果 相关对象 Button&#xff1a;按钮表示用户可以按下或点击的按钮控件。按钮通常用于执行操作或回答问题。典型的按钮有“确定”、“应用”、“取消”、“关闭”、“是”、“否”和“帮助”。按钮从AbstractButton继承其API。例如&#xff0c;您可以使用AbstractButton …

解决numpy.linalg.LinAlgError: singular matrix

目录 解决numpy.linalg.LinAlgError: singular matrix 1. 检查矩阵的条件数 2. 使用广义逆矩阵 3. 处理数据中的冗余信息 总结 解决numpy.linalg.LinAlgError: singular matrix 在使用NumPy进行线性代数运算时&#xff0c;有时候会遇到​​numpy.linalg.LinAlgError: sin…

如何开发一个类似美团小程序商家入驻

上线类似美团的小程序可以推动商业生态系统的优化和升级。小程序可以连接商家、用户和平台&#xff0c;促进信息流通和交易&#xff0c;提高整个生态系统的效率和效益。今天&#xff0c;我们分享如何开发一个类似美团小程序商家入驻的平台。大家点个关注点个赞&#xff0c;我们…

元道经纬相机信息化赋能光伏电站运维管理

近年来&#xff0c;我国光伏产业高速发展&#xff0c;尤其以分布式光伏发电项目增长迅速&#xff0c;为更好服务新能源发电&#xff0c;大力推广电能替代。与此同时&#xff0c;电力企业亟需改变落后的管理模式&#xff0c;借助信息化软件提升管理效率。 为了进一步提升光伏电…

声明 | 为打击假冒账号、恶意抄袭账号等诈骗活动,提升本账号权威,本博主特此郑重声明

声明 | 为打击假冒账号、恶意抄袭账号诈骗活动&#xff0c;提升本账号权威&#xff0c;本博主特此郑重声明 一、本账号为《机器学习之心》博主CSDN唯一官方账号&#xff0c;唯一联系方式见文章底部。 二、《机器学习之心》博主未授权任何第三方账号进行模型合作、程序设计、源…

腾讯云老用户优惠:轻量应用服务器2核2G4M带宽118元一年,3年540元

它急了&#xff0c;腾讯云急了&#xff0c;继阿里云推出99元新老用户同享的云服务器后&#xff0c;腾讯云轻量应用服务器2核2G4M配置也支持新老用户同享了&#xff0c;一年118元&#xff0c;3年540元&#xff0c;老用户也能买&#xff0c;50GB SSD系统盘&#xff0c;300GB 月流…

算法训练第五十天|123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

123. 买卖股票的最佳时机 III&#xff1a; 题目链接 给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再次购…

C#高级 03委托

1.delegate委托定义 委托需要先定义后使用 delegate void IntMethodInvoker&#xff08;int x&#xff09;;定义了一个委托InMethodInvoker&#xff0c;这个委托可以指向一个带一个int 类型参数&#xff0c;返回值为void的方法 2.Action委托和Func委托 Action委托引用了一个…

[Ray Tracing: The Next Week] 笔记

前言 本篇博客参照自《Ray Tracing: The Next Week》教程&#xff0c;地址为&#xff1a;https://raytracing.github.io/books/RayTracingTheNextWeek.html 该教程在ray tracing in one weekend的基础上&#xff0c;增加了运动模糊、BVH树、Texture映射、柏林噪声、光照、体积…

Appium如何实现移动端UI自动化测试呢?

Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门&#xff0c;那么我们就直奔主题。文章结构如下&#xff1a; 为什么要使用Appium&#xff1f;如何搭建Appium工具环境?(超详细&#xff09;通过demo演示Appium的使用Appium如何实现移动端UI自…

EtcdKeeperFyne连接etcd工具及相关gcc编译问题踩坑处理

目录 一、项目地址: 二、直接编译错误信息: 三、尝试处理方案:

机器学习概述(一)

机器学习概述 sklearn.datasets特征工程特征提取特征预处理特征降维 sklearn.datasets sklearn.datasets 模块用于获取较为经典的数据集。 sklearn.datasets.load_*() # 获取小规模数据集&#xff0c;直接从本地获取sklearn.datasets.fetch_*(data_homeNone, subset“train”…