python语言day4 函数 生成器yield、next关键字 装饰器

news2024/9/24 0:21:45

一、 函数

        定义:

        def    info():

                print("执行info()函数")

        直接调用方法和封装一个函数:

                使用信息发送的功能为例

登录163网易免费邮-你的专业电子邮局 

1)开启POP3/SMTP服务,会得到对应的授权码,也就是登陆密码

2)找到对应SMTP服务器url

      

  1) 直接调用python内置方法:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr

msg = MIMEText("月薪十万。","html","utf-8")
msg["Form"] = formataddr(["任可","m15571027178@163.com"])
msg["to"] = "1831120378@qq.com"
msg["Subject"] = "主题:我的目标"

server = smtplib.SMTP_SSL("smtp.163.com")
server.login("m15571027178@163.com","password")
server.sendmail("m15571027178@163.com","1831120378@qq.com",msg.as_string())
server.quit()

         

    2)封装成函数:     

def send_email(text,name,from_addr,to_addr,subject,password,url):
    msg = MIMEText(text,"html","utf-8")
    msg["Form"] = formataddr([name,from_addr])
    msg["to"] = to_addr
    msg["Subject"] = subject
    server = smtplib.SMTP_SSL(url)
    server.login(from_addr,password)
    server.sendmail(from_addr,to_addr,msg.as_string())
    server.quit()
    pass
         调用函数:

        函数参数几种形式:

 1)给参数设置默认值      

def do_something(a1,a2,a3=10):
    print(a1,a2,a3)
    pass
do_something(1,2,3)  #1 2 3
do_something(1,2)    #1 2 10

2)动态传入参数,参数前加*,args为元组

def do2(*args):
    print(args)
    pass
do2(1,2,3)   #(1, 2, 3)
do2(1,2)    #(1, 2)            

3)动态传入参数,参数前加**,kwargs为字典

def do3(**kwargs):
    print(kwargs)
    pass
do3(v1=1,v2=2,v3=3)   #  {'v1': 1, 'v2': 2, 'v3': 3}
do3(v1=1,v2=2)            #  {'v1': 1, 'v2': 2}

        

 函数的返回值:

        没有返回值时,默认的返回值为None

        返回值可以有多个,接收返回值会是一个元组类型

 

 二、作用域

        python以函数为界区分作用域

if 1 == 1:

        name   = "root"

print(name)  # root    name声明在函数外边

for i in range(10):

        pass  

print(i)          # 9         i声明在函数外边

def info():

        name = "root"

        print(name)

info()          #  运行时异常    name在函数内部

 

二、global关键字:

1)函数内部作用域找不到全局CITY变量名。

2)函数内部作用域与全局作用域输出

3)使用global关键字在函数内部操作全局变量

二、生成器 yield  next关键字:

    1) 保留函数对象a

  2)不保留函数对象,每次都重新调用一个新函数对象

                                        这样写就没有意义

        3)for循环调用生成器:

                这里两次输出结果都是0到9  


 

三、装饰器

         装饰器分为 切面函数 和 目标函数:

                给info()函数加上注解@aop,调用info()函数.

                则首先执行aop(func)函数,func就是执行的info()对象

                然后执行inner()函数,完成inner函数对象调用后返回info()对象返回值给aop()

                最后返回inner对象的返回值。   

 

 

 

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

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

相关文章

2024年旗舰骨传导耳机大对比:南卡、韶音和墨觉,哪款最值得购买?

作为专注于数码产品的博主,我对骨传导耳机的迅猛发展深有感触。这类耳机以其与众不同的技术和设计风格,成功捕捉了消费者的兴趣。它们独特的工作原理不仅保留了使用者对周围环境的感知,还能提供清晰的音乐播放和通话体验,特别适合…

第三方软件检测机构服务类型

在信息技术飞速发展的今天,软件产品的质量已成为企业竞争力的重要组成部分。卓码软件测评这家第三方软件检测机构致力于提供一流的软件测试服务,帮助企业确保其软件产品的可靠性和安全性。 一、项目验收测试:确保交付质量   项目验收测试是…

力扣-240.搜索二维矩阵(2)

刷力扣热题–第二十七天:240.搜索二维矩阵(2) 新手第二十七天 奋战敲代码,持之以恒,见证成长 1.题目简介 2.题目解答 这道题的想法就是,整体遍历,在遇到比target还大的,就停止这行的遍历,然后转过去继续遍历下一行,如果有一行的开头大于target,直接返回…

嘉盛平台的代理返佣机制:一份详细的说明书

在金融市场合作模式的多样性中,嘉盛平台的代理返佣机制无疑是一个引人注目的亮点。想了解更多关于嘉盛平台的代理返佣机制吗?本文将为您详细解答。嘉盛开户MT4平台开户链接 :https://application.jszhanghao.com/cn-meta/step/1?ibcodeFXAMM…

Windows--WSL2--Ubuntuon--Docker

编写目的: 在Windows上安装Docker,用Docker安装Gitlab、Jenkins等软件。 文章记录一下Windows上安装Docker的过程。 参考文档: 旧版 WSL 的手动安装步骤 | Microsoft Learn 下面用"参考文档"代替 目录 第一步:启…

RK3568平台开发系列讲解(文件系统篇)FLASH 均衡擦写(UBI)

🚀返回专栏总目录 文章目录 一、UBI均衡二、日志打印三、常见打印四、erase_worker四、ensure_wear_leveling五、wear_leveling_worker上层应用通过逻辑地址来访问存储设备,FTL把不同的逻辑地址映射到Nand Flash中的不同位置。 一、UBI均衡 Ubi擦写均衡在ubi驱动中c 处理,u…

66 函数精彩案例

1 编写函数,接收任意多个实数,返回一个元组,其中第一个元素为所有参数的平均值,其他元素为所有参数中大于平均值的实数。 def func(*parameter):avg sum(parameter) / len(parameter) # 平均值g [i for i in parameter if i &…

哈萨克语驾考学习软件求推荐?

哈语驾考APP专门为哈萨克族考驾照的学员提供了科目一科目四题库在线练习和模拟考试,是一款哈汉双语版本的驾考学习APP。软件内可同时切换哈萨克语题库和语言文字,有多种学习模式。题库同步车管所考题,通过率高。包含了科一、科四模拟考试、路…

PP 8 创建工艺路线

事务代码:CA01(注:定额工艺路线:CA21(重复制造)) 组和组计数器确定唯一工艺路线 创建一个组 把组分配给物料 物料有多个工艺路线 可以把组分给多个物料 如果打上删除标识,工艺路线无效

前端(四):前后端分离开发(YAPI的使用)

一、引入 1、前后端混合开发(早期):将前端、后端、数据库混杂在一起写,前后前全部在一个工程中。沟通成本高、分工不明确、不便于管理、不便于维护和扩展。 2、前后端分离开发:前端工程和后端工程,为了前…

设计模式之拦截器模式

目录 1.概述 2.结构 3.java实现示例 4.常见实现框架 5.C实现拦截器模式 6.拦截器和过滤器的异同 7.应用场景 8.优缺点 9.总结 1.概述 拦截器模式(Interceptor Pattern)是一种在请求被处理之前或之后自动执行代码的设计模式。它允许开发者在方法…

【自动驾驶】ubuntu20.04安装完整ROS的Noetic版本

目录 安装过程换源及安装注意:三级目录 安装过程 1.配置ubuntu的软件和更新 配置ubuntu的软件和更新,允许安装不经认证的软件。 首先打开“软件和更新”对话框,在设置菜单中的,关于,软件更新。 打开后按照下图进行配…

字符串左旋(c语言)

1.字符串左旋 //实现一个函数,可以左旋字符串的k个字符 例如:ABCD左旋字符串的1个字符BCDA ABCD左旋字符串的2个字符CDAB 2.第一步我们先输入k(scanf),将第一位进行储存,然后其他位先前走一位,然后将第一…

分布式事务一站式解决方案-Seata

分布式事务一站式解决方案- 分布式事务一站式解决方案分布式事务产生背景三个概念Seata下载和安装实际业务模拟演示不加 GlobalTransactional 注解,正常操作下单不加 GlobalTransactional 注解,下单过程出异常或者超时了加 GlobalTransactional 注解&…

Shell定时上传日志到HDFS

Shell定时上传日志到HDFS 一、任务需求二、实现思路三、具体实现流程3.1 规划文件上传目录3.2 开发 shell 脚本3.3 授予 shell 可执行权限3.4 手动执行查看3.4 定时执行 shell 脚本 一、任务需求 公司在线服务器每天都会产生网站运行日志,为了避免志文件过大&#…

WPF学习笔记

WPF WPF(Windows Presentation Foundation,Windows呈现基础)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的…

学习STM32(6)-- STM32单片机ADCDAC的应用

1 引 言 深入了解并掌握STM32F103单片机在模拟数字转换(ADC)和数字模拟转换(DAC)应用方面的功能和操作。学习如何配置STM32F103的ADC模块,实现模拟信号到数字信号的精确转换;同时,探索DAC模块…

【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航

具身智能关键技术研究:操纵、决策、导航 董 豪 | 北京大学助理教授 依然是边看边做些记录 这张图的重点是在说,我们的大脑,也是不同的部分处理不同的功能。这里面有些功能,比如视觉、听觉理解等功能,LLM已经具备&…

一键浪漫的回忆:微软开源的修复工具!!【送源码】

项目介绍 “Bringing-Old-Photos-Back-to-Life”是一款由微软开发的创新软件解决方案,它利用人工智能技术来修复和增强老旧照片的质量。这款工具可以解决老旧照片中常见的问题,如褪色、低分辨率以及物理损坏(如划痕和撕裂)。通过采…

分析 Vue3 Effect 函数看响应式依赖收集和触发更新过程

先给一个简单的实例,分析依赖收集和更新的过程 let obj { name: "hefeng6500", age: 10, flag: true }const state reactive(obj);effect(() > {app.innerHTML state.name state.age })setTimeout(() > {state.age 20 }, 1000)reactive 函数只…