python 语法

闭包

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

def outfunc(arg):
    def innerFunc(msg):
        print(f"<{msg}>  {arg} <{msg}>")
    return innerFunc

func = outfunc("尔")
func("沃")
def outfunc(num1):
    def innerFunc(num2):
        nonlocal num1
        num1 += num2
        return num1
    return innerFunc
func = outfunc(10)

print(func(20))
print(func(30))

nonlocal关键字的作用

在闭包函数想要修改外部函数变量的值 需要用nonlocal 声明这个外部变量

闭包的优点

无需定义全局变量即可实现通过函数,持续的访问修改某个值。

闭包使用的变量的作用域在函数内 难以被错误的调用修改。

缺点:

由于内部函数持续引用外部函数的值,所以会导致这一部分内存空间不被释放一直占用内存。

装饰器

装饰器也是一种闭包,其功能就是在不破坏目标函数原有的代码和功能的前提下为目标函数增加新功能。

def doworking():
    print("do working")

def outfunc(func):

    def innerFunc():
        print("开始上班")
        func()
        print("下班回家")
    return innerFunc

action = outfunc(doworking)
action()

语法糖

def outfunc(func):

    def innerFunc():
        print("开始上班")
        func()
        print("下班回家")
    return innerFunc

@outfunc
def doworking():
    print("do working")

doworking()

设计模式

单例模式

程序运行时一个类无论创建多少次 只有一个对象

class DatabaseManager:
    pass

data_manager = DatabaseManager()
from singleObj import data_manager

manager1 = data_manager
manager2 = data_manager
print(id(manager1))
print(id(manager2))

工厂模式

class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

class Pig(Animal):
    pass

class AnimalFactory:
    def get_animal(self,type):
        if type ==  "d":
            return Dog()
        elif type == "c":
            return Cat()
        elif type == "P":
            return Pig()
        else:
            return Animal()


factory = AnimalFactory()
pig = factory.get_animal("p")
dog = factory.get_animal("d")
cat = factory.get_animal("c")

wolf = factory.get_animal("w")

print(f"pigtype={type(pig)}  dogtype={type(dog)}  cattype={type(cat)} wolftype = {type(wolf)}")

 线程。进程

import time
import threading

def game():
    while True:
        print("进攻敌方防御塔")
        time.sleep(1)

def music():
    while True:
        print("对面的女孩 看过来")
        time.sleep(1)




gameThread = threading.Thread(target=game)
musicThread = threading.Thread(target=music)


gameThread.start()
musicThread.start()
time.sleep(1000000)
import time
import threading

def game(msg):
    while True:
        print(msg)
        time.sleep(1)

def music(msg):
    while True:
        print(msg)
        time.sleep(1)




gameThread = threading.Thread(target=game,args=("进攻敌方防御塔",))
musicThread = threading.Thread(target=music, kwargs={"msg":"对面的女孩 看过来"})


gameThread.start()
musicThread.start()
time.sleep(1000000)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

部署 LVS-DR 群集

本章内容&#xff1a; 了解 LVS-DR 群集的工作原理会构建LVS-DR 负载均衡群集 1.1 LVS-DR 群集 LVS-DR&#xff08; Linux Virtual Server Director Server &#xff09;工作模式&#xff0c;是生产环境中最常用的一种工作模式。 1.1.1 LVS-DR工作原理 LVS-DR 模式&#xff…

MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构

目录 前言 1. 主从复制 主从复制的基本配置示例&#xff1a; 2. 主从复制的限制 3. InnoDB Cluster架构 InnoDB Cluster配置步骤示例&#xff1a; 4. InnoDB Cluster的优势 总结 ⭐️ 好书推荐 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&…

力扣|2023华为秋招冲刺

文章目录 第一关&#xff1a;2023 年 7 月面试题挑战第二关&#xff1a;2023 年 6 月面试题挑战第三关&#xff1a;2023 年 5 月面试题挑战 第一关&#xff1a;2023 年 7 月面试题挑战 class Solution { public:void reverseWord(vector<char>& s,int l,int r){for(i…

【算法分析与设计】最短路径和

题目&#xff1a; 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例&#xff1a; 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],…

极兔单号查快递,极兔快递单号查询,筛选出途经指定城市的单号

随着电商的繁荣&#xff0c;快递单号已经成为我们生活中的一部分。然而&#xff0c;面对海量的快递信息&#xff0c;如何快速、准确地筛选出我们需要的单号&#xff0c;变成了许多人的痛点。今天&#xff0c;我要为你介绍一款强大的工具——快递批量查询高手&#xff0c;让你的…

44 ext4 文件系统

前言 在 linux 中常见的文件系统 有很多, 如下 基于磁盘的文件系统, ext2, ext3, ext4, xfs, btrfs, jfs, ntfs 内存文件系统, procfs, sysfs, tmpfs, squashfs, debugfs 闪存文件系统, ubifs, jffs2, yaffs 文件系统这一套体系在 linux 有一层 vfs 抽象, 用户程序不用…

代码随想录算法训练营第24天 | 理论基础 77. 组合

目录 理论基础 什么是回溯法 回溯法的效率 回溯法解决的问题 如何理解回溯法 回溯法模板 77. 组合 &#x1f4a1;解题思路 &#x1f4bb;实现代码 理论基础 什么是回溯法 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。 回溯法的效率 虽然回溯法很难&#xff…

前端安全专题

xss (Cross Site Scripting) 跨站脚本攻击 原理 通常指黑客通过"HTML注入"篡改了网页&#xff0c;插入了恶意的脚本&#xff0c;从而在用户浏览网页时&#xff0c;控制用户浏览器的一种攻击。 常见攻击类型 存储型XSS 攻击者将恶意的 JavaScript 脚本存储在网站…

C程序训练:阶乘与溢出

已知n是整数&#xff0c;计算12!3!...n!&#xff0c;并给出最大能够计算的n值是多少&#xff1f; 1. 假设n是int类型&#xff0c;系统用32位表示int类型。代码如下&#xff1a; #include <stdio.h> int main() {int n,sum1,sum1,fact1;int step;for(n2; n<100; n) {…

【Win11】电脑正常联网浏览器却打不开???

今天本来打算打开B站开始今天的学习之旅&#xff0c;一打开却发现。。。 我还以为电脑没联网但是微信可以聊天发消息然后我在dos窗口测了下网络是正常联通的 然后我开始慌了&#xff0c;这阳光明媚的一天不看B站学习怎么行&#xff0c;然后我就开始在百度上冲浪找解决方案&…

探索设计模式的魅力:简单工厂模式

简单工厂模式&#xff08;Simple Factory Pattern&#xff09;是一种创建型设计模式&#xff0c;其主要目的是用于创建对象的实例。这种模式通过封装创建对象的代码来降低客户代码与具体类之间的耦合度。简单工厂不是GoF&#xff08;四人帮&#xff09;设计模式之一&#xff0c…

WAMP apache 无法启动(端口 80 未使用)

这段时间系统重装后&#xff0c;安装WAMP Server&#xff0c;装好后点击启动绿了下然后又变成了黄色&#xff0c;托盘图标无论是左键点击还是右键点击都没有反应&#xff0c;wampapache64服务也启动不起来&#xff0c;提示“windows不能在本地计算机启动wampapache”&#xff0…

软件系统部署方案书(Word)

一、 引言 &#xff08;一&#xff09; 编写目的 二、 外部设计 &#xff08;一&#xff09; 标识符和状态 &#xff08;二&#xff09; 约定 1&#xff0e; 数据库涉及字符规范 2&#xff0e; 字段命名规范 &#xff08;三&#xff09; 专门指导 &#xff08;四&#…

基于JAVA开发的数字化智慧工地管理平台源码,可私有化部署、带可视化大屏

智能工地应用价值 智慧工地现场构建了基于物联网的智能化数据传感器通用的管理平台。利用计算机、人工智能、无线通信&#xff0c;全天候现场监视、施工检查、质量管理、服务&#xff0c;提高数字化管理、安全、绿色、施工等现场管理能力&#xff0c;标志着现场管理进入信息化时…

小程序基础学习(插槽)

一&#xff0c;新建一个组件文件 二&#xff0c;设置插槽 三&#xff0c;微信小程序里面插槽没有默认值需要用wxss来设置&#xff0c;检查插槽这个标签是否为空&#xff0c;如果为空则默认值的view显示 四&#xff0c;写入页面 五&#xff0c;插槽代码 <!--components/my-…

bootloader学习笔记及SD卡启动盘制作

Bootloader介绍 在操作系统运行之前运行的一小段代码&#xff0c;用于将软硬件环境初始化到一个合适的状态&#xff0c;为操作系统的加载和运行做准备&#xff08;其本身不是操作系统&#xff09; Bootloader基本功能 1、初始化软硬件环境 2、引导加载linux内核 3、给linux…

磁盘直通卡/阵列卡讲解

服务器SAS卡 ① 华为SR120 (LSI 2308 6Gb SAS直通卡),适合数据安全等级不高或 更换简单 硬盘即插即用 ② 华为SR320 (LSI 2208 6Gb SAS阵列卡 带512M缓存),适合对数据安全等级要求高或追求磁盘性能的客户 推荐上阵列卡 ③ 华为SR130 (LSI 3008 12Gb SAS直通卡),适合数据安全等…

DAY6--learning english

一、积累 1.sip She took a small sip of the hot tea to savor its delicate flavor. 她小口抿了一口热茶&#xff0c;细细品味其中的淡雅滋味。 2.vacuum Expreience the amazing cleaning power of vaccum cleaner. 体验真空吸尘器惊人的清洁能力。 3.stray Stray kitte…

基于JAVA的用户画像活动推荐系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 兴趣标签模块2.3 活动档案模块2.4 活动报名模块2.5 活动留言模块 三、系统设计3.1 用例设计3.2 业务流程设计3.3 数据流程设计3.4 E-R图设计 四、系统展示五、核心代码5.1 查询兴趣标签5.2 查询活动推荐…

中霖教育:CPA注册会计师报考注意事项有哪些?

在报考注册会计师时&#xff0c;以下这些注意事项你一定要了解! 1.CPA报考的条件 考生需要具备完全民事行为能力;具有高等专科以上学校毕业学历&#xff0c;或者具有会计或者相关专业中级以上技术职称。 2.专业阶段考试科目为&#xff1a; 《会计》、《审计》、《税法》、《…