python推导式全局变量多参数传参装饰器

news2024/11/27 4:12:09

 

 

目录

一、推导式运用

 二、全局变量

 三、多参数传参

 四、装饰器


一、推导式运用

# 推导式

# for i in range(10):
#     print(i)

    # 创建列表 其中奇数位为1, 偶数位为0

a=[ i for i in range(10)]
a2=[ 1 if i %2 ==0 else 0  for i in range(10) ]
print(a)
print(a2)
print("=======================================")
# 需求:取出下面课程分数大于94的科目及具体分数
class_dict = {
    'c++': 90,
    'python': 93,
    'java': 95,
    'javascript': 96,
    'node.js': 94
}
b={ item[0] for item in class_dict.items()}
b2={item[1] for item in class_dict.items()}
print(b)
print(b2)
c={ item[0]:item[1] for item in class_dict.items()  if item[1] >94  }
print(c)
print("=======================================")
# k,v方法2
c={ k:v for k,v in class_dict.items()  if v >94  }
c2={ k:v  if v >94  else 0 for k,v  in class_dict.items()  }
print(c)
print(c2)






 


 二、全局变量

  global使用

val=1
def hello():
    global val
    val=2



hello()
print(val)
# 在java代码里报错 ,在python里则相反为1 -->  global val设置全局变量


 

 三、多参数传参

 

# 多参数解析 数组
def res(arg1, arg2, arg3):
   print(f'参数1为:{arg1}')
   print(f'参数2为:{arg2}')
   print(f'参数3为:{arg3}')

# res(1,2,3)
arr=(1,2,3)
res(*arr)
print("=======================================")
def say (*args):
    print(args)
    for i in args:
        print(i)




say(1,2,3,5,6)
print("=======================================")
# 字典
class_dict = {
    'arg1': 90,
    'arg2': 8,
    'arg3': 'lucy'

}
res(**class_dict)
print("=======================================")
kwargs = {"one": 3, "two": "1", "three": 5}
print(kwargs)

 


 四、装饰器

闭包函数:声明在一个函数中的函数,叫做闭包函数。

闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回了之

后。

装饰器是闭包的一种应用。 类似于java中的AOP

装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使

 

# 装饰器

def outer(a):
    def inner(b):
        return  a+b

    return  inner

    print(outer(1))
    # 传入1,2等值得到结果3
    f=outer(1)
    print(f(2))


print(outer(1)(2))

 

 

 案例:日志输出到控制台

from functools import wraps


def logging(logfile='out.txt'):
    def decorator(func):
        @wraps(func)
        def wrapped_function(*args, **kwargs):
            log_string = func.__name__ + "被调用了"
            # 打开logfile,并写⼊内容
            with open(logfile, 'a') as opened_file:
                # 现在将⽇志打到指定的logfile
                opened_file.write(log_string + '\n')
        return wrapped_function

    return decorator


@logging()
def hello():
    pass


hello()




 

# 案例:编写一个记录函数执行时间的装饰器
def time_wrapper(func):
    def wrapper():
        t1 = time.time()
        func()
        t2 = time.time()
        print(f'总耗时{t2 - t1}')

    return wrapper


@time_wrapper
def hello():
    for i in range(3):
        time.sleep(1)


hello()
print("=============================")

 

 

def logging(level):
    def outer_wrapper(func):
        def inner_wrapper(*args, **kwargs):
            print(f"{level}: enter {func.__name__}()")
            return func(*args, **kwargs)

        return inner_wrapper

    return outer_wrapper

@logging("error")
def hello():
    for i in range(3):
        print('time.sleep(1)')

hello()

 

 被装饰的方法带参数


def transaction(func):
    def wrapper(n):
        print("开启")
        func(n)
        print("关闭")

    return wrapper


@transaction
def hello(name):
    print(f"{name} say hello world")


hello("zhangsan")

print("=============================")

 


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

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

相关文章

LEADTOOLS 入门教程: 使用文档转换器转换文件 - .NET Core

LEADTOOLS是一个综合工具包的集合,用于将识别、文档、医疗、成像和多媒体技术整合到桌面、服务器、平板电脑、网络和移动解决方案中,是一项企业级文档自动化解决方案,有捕捉,OCR,OMR,表单识别和处理&#x…

5款可以在学习和办公上提供帮助的软件

今天给大家推荐5个我自己也常用的软件,可以解决很多问题,给你的学习和办公带来巨大帮助。 1.文档检索启动——Listary 最近一直在整理文档,很多笔记和学案都已经不用了,想着进行一个归档,首先对磁盘进行了分区管理&a…

Spring 简介和基础使用

历史的选择 Spring 作为一个基础的框架,是在 Java EE 开发历史中,是成千上万公司选择。单独使用 Spring 的非常少了,很多都是用 Spring-Boot/Spring-Cloud 来开发,但是 Spring 基础依然是我们使用的基石。我们将一起来聊一聊 Spr…

算法竞赛入门【码蹄集进阶塔335题】(MT2301-2305)

算法竞赛入门【码蹄集进阶塔335题】(MT2301-2305) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2301-2305)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2301 47论2. MT2302 数的增殖3. MT2303 传染病4. MT…

笔试强训2

题目1&#xff1a; 倒置字符串_牛客题霸_牛客网 我们先写出代码&#xff1a; #include<iostream> #include<string> using namespace std; int main() {string s;getline(cin, s);reverse(s.begin(), s.end());auto start s.begin();while (start ! s.end()){au…

AS 打一个正式签名的包

如何打一个带正式签名文件的app (给自己的劳动成果冠名) 1. 选择build -> generate signed bundle/apk 2. 这里有两个选择, bundle or apk, 我们选择apk 于是勾选 apk, 并点下一步 3. 来到选择证书文件的地方, 但是我们这是第一次做, 还没有证书文件, 所以选择新建一个证…

车路协同云控平台建设实践

前言 随着汽车工业水平飞速发展&#xff0c;以及 IoT、5G、V2X 等信息通信技术的发展演进&#xff0c;通过汽车的智能化、网联化升级为大众带来更智能、更便捷的驾乘体验&#xff0c;成为汽车行业的发展趋势&#xff0c;自动驾驶、智能网联汽车成为行业热点。近年来&#xff0…

Dubbo集成Nacos作为注册中心

Nacos简介 什么是Nacos? Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#…

数据要素市场研究资料合集

编 辑&#xff1a;彭文华来 源&#xff1a;大数据架构师彭友们好&#xff0c;我是老彭。最近有个博士彭友在为论文挠头&#xff0c;到处找数据要素市场的资料。正好&#xff0c;国家工业信息安全发展研究中心刚刚发布《中国数据要素市场发展报告&#xff08;2021-2022&#xff…

智能合约介绍

介绍 智能合约是区块链实现可编程化的重要工具&#xff1b;在比特币时期&#xff0c;脚本仅限于描述交易得到内容和状态&#xff1b;随着智能合约的出现可以定义任何数据对象的状态擦欧总——>使其成为网络上的“法律条文”或者“商业共识”。相当于网络中的道德准则&#…

基于GIS的生态安全网络格局构建之主成分分析

来源&#xff1a;GIS前沿 一、数据来源介绍 &#xff08;一&#xff09;数字高程数据、归一化植被指数数据 本文所用到的松原市宁江区数字高程数据采用30 m分辨率的GDEMV 3数字高程数据、归一化植被指数数据采用250m分辨率的MYD13Q1植被指数16天合成产品&#xff0c;这些数据…

【零基础入门SpringMVC】第五期——报文、文件转移、拦截器、异常处理器

一、HttpMessageConverter 代表报文信息转化器&#xff0c;可以将请求报文转换为Java对象&#xff0c;也可以将Java对象转换为响应报文 请求报文分为三部分&#xff1a;请求头、请求空行和请求体 post 请求才会生成请求体get 请求会把请求信息拼接到地址后 概述&#xff1a;这…

经验分析:数据可视化工具入门讲解,如何应用数据可视化

什么是数据可视化&#xff1f;最核心的要点&#xff0c;就是解释数据、进行信息传递、压缩数据信息、突出整体观点。 在分析过程中&#xff0c;通过比较数据的大小、差异、分布&#xff0c;让其轻松呈现。 今天小编给大家介绍一款优秀的在线数据可视化软件。 项目是个人创建的…

第一性原理谈安全性和可靠性

已剪辑自: https://mp.weixin.qq.com/s/jttd-dhv9PmNu25Z-zyd5Q 最近从各个行业对系统的安全性的关注度越来越高&#xff0c;10月28日&#xff0c;工信部公开征求的《道路机动车辆生产准入许可管理条例&#xff08;征求意见稿&#xff09;》中&#xff0c;第六条提出&#xff…

C语言航路外传之隐式转换与优先级的那点事(你程序总是出bug的一个重要原因)

目录 一、表达式求值 二、隐式类型转换 1.基本概念 2.整型提升的意义 3.详解截断与整型提升的过程 4.char类型范围有关的一些事情 5.有关整形提升的一些案例 三、算术转换 四、操作符的属性 1.优先级表格 2.运算规则 3.一些问题表达式 &#xff08;1&#xff09;a…

Linux 之 arm linux 与 windows 使用 tftp 进行文件传输的简单整理

Linux 之 arm linux 与 windows 使用 tftp 进行文件传输的简单整理 目录 Linux 之 arm linux 与 windows 使用 tftp 进行文件传输的简单整理 一、简单介绍 二、tftp 下载安装 三、arm linux 通过tftp 下载 windows 上的文件 四、tftp 命令相关说明 1、busybox tftp命令常…

Baklib|知识库应用场景:制作员工培训手册

持续的专业发展对于想要加入、保留和提升员工的组织来说是必不可少的。为了确保员工总是能从学习能力中受益&#xff0c;您需要考虑创建培训手册&#xff0c;使员工能够胜任并保持他们的工作能力。 在过去&#xff0c;您可能认为培训手册是一本厚重的册子&#xff0c;充满了密…

如何理解电商云仓出租?

为了说清这个概念&#xff0c;我们先说一下云的概念。别看云现在已经漫天飞舞&#xff0c;但真正能准确的把它说明白的并不多&#xff0c;多数人只是跟着一起用而已。云起源于云计算&#xff0c;是指通过云计算技术各种终端设备手机、电脑、电视、车载屏幕等实现互通互联&#…

【教学类-19-03】20221127《ABBABB式-规律排序-A4竖版2份》(中班)

展示效果&#xff1a; 单人使用样式&#xff1a; 单页打印样式 ​ 背景需求&#xff1a; 中班幼儿需要掌握ABBABB的排序规律 前文制作了ABCABC单元格色块&#xff0c;完全套用ABC排序word表格&#xff0c;调整python的代码&#xff0c;随机生成ABB排序样式&#xff0c;引导幼…

1_SpringMVC_概述,2_SpringMVC_项目搭建

M model 模型层 DAO封装 >>> Mybatis V view 视图层 html css js jsp C controller 控制层 Servlet封装 >>> springMVC SpringMVC是spring为展现层提供的基于MVC设计理念的优秀WEB框架,是目前最主流的MVC框架之一 …