当前位置: 首页 > news >正文

Python函数知识汇总-课堂笔记

1、函数的使用可以加强代码的重用性和可读性。

2、函数的定义方法:

1 def 函数名(形式参数):
2     ...
3     函数体
4     ...
5     返回值

特点:(1)def 为函数的起始标识,当py文件执行到def时默认会不执行其中的代码,而是将函数放置到内存中等待调用。

        (2)函数名:表示函数的名称,利用函数名()可调用函数

   (3)参数:为函数体提供可用的数据

   (4)函数体:函数要做些什么事,需要函数实现的功能

   (5)返回值:函数执行结束后返回值给调用的地方

1、返回值:可以返回任何类型的值,函数为一个功能块,这个功能块被调用过后得到的结果,或者功能执行的成功与否,都可以通过返回值来告知调用者。

2、参数:分为形式参数和实际参数,形式参数为定义函数时定义的参数,实际参数为使用函数时向函数中提供的参数。具体可分为:普通参数、默认参数、动态参数

      • 普通参数:定义函数时给定义的参数,在使用函数时需要传递实际参数后使用函数,在传递参数时也可以使用参数=值的方式来传值
        1 1 #定义一个叫show_name的函数,并定义一个形式参数
        2 2 def show_name(name):
        3 3     print(name)
        4 4 #调用函数时传入一个'parr'的实际参数,函数执行完毕屏幕打印出parr
        5 5 show_name('parr')
      • 默认参数:定义函数时可给出参数的默认值,在调用函数时就不需要给出值,函数会取给出的默认值
        1 ------------定义函数---------------
        2 #定义函数两个参数,第二个参数默认参数
        3 def show_name(name,acter="handsome man"):
        4     print(name,"is a",acter)
        5 -----------调用函数-----------------
        6 #调用函数传递第一个参数,第二个参数不给
        7 show_name('parr')
        8 
        9 #屏幕打印:parr is a handsome man
      • 动态参数:使函数参数可以接收任何数据类型的值,将其转换为元组(*args)和字典(**kwargs)后再传入函数中执行调用
         1 #定义一个动态参数为元组的函数
         2 def show(*args):
         3     print(args)
         4     print(type(args))
         5 #调用函数传入任何值
         6 show(11,22,3,4,51,4,1)
         7 
         8 #屏幕打印:(11,22,3,4,51,4,1)
         9 #                  <class 'tuple'>
        10 
        11 #定义一个动态参数为字典的函数
        12 def show(**kwargs):
        13     print(kwargs)
        14     print(type(kwargs))
        15 #调用函数传入,k=v类型的值,将自动转换为字典
        16 show(a=1,b=2,c=3)
        17 
        18 #屏幕打印{'a': 1, 'b': 2, 'c': 3}
        19 #            <class 'dict'>
        20 
        21 #定义一个动态参数为元组和字典的函数
        22 def show(*args,**kwargs):
        23     print(args,type(args))
        24     print(kwargs,type(kwargs))
        25 #调用这个函数,前面传入的值转换为元组,后面k=v类型的将转换为字典
        26 show(11,2,3,4,5,a=1,b=2,c=3)
        27 
        28 #屏幕打印:(11, 2, 3, 4, 5) <class 'tuple'>
        29 #                {'a': 1, 'b': 2, 'c': 3} <class 'dict'

        动态参数的函数可以在传入列表,字典或元组时,将值指定类型来传入*args或**kwargs,只需要在传值时在值前面加*或者**即可:
         1 #调用函数时,不使用*和**指定值的类型,两个参数被变成了一个元组,第二个参数中没有值
         2 def show(*args,**kwargs):
         3     print(args,type(args))
         4     print(kwargs,type(kwargs))
         5 
         6 li1 = [1,2,3,4,5,6]
         7 dic1 = {
         8     "name":"parr",
         9     "age":"25"
        10 }
        11 show(li1,dic1)
        12 
        13 #屏幕打印:([1, 2, 3, 4, 5, 6], {'name': 'parr', 'age': '25'}) <class 'tuple'>
        14 #               {} <class 'dict'>
        #调用函数时,使用*和**指定传入值的类型时,值被传到了指定的参数中:
        def show(*args,**kwargs):
            print(args,type(args))
            print(kwargs,type(kwargs))
        
        li1 = [1,2,3,4,5,6]
        dic1 = {
            "name":"parr",
            "age":"25"
        }
        show(*li1,**dic1)
        
        #屏幕打印:(1, 2, 3, 4, 5, 6) <class 'tuple'>
        #              {'name': 'parr', 'age': '25'} <class 'dict'>
      • 动态参数在字符串格式化中的应用:
        -----------------------*args格式化字符串------------------------
        #定义一个字符串,使用{0}和{1}标识参数插入的位置
        s1 = "{0} is {1}"
        #列表的值对应插入到{0}和{1}的位置
        l1 = ['parr','man']
        #使用*l1将列表的值传入参数
        result = s1.format(*l1)
        print(result)
        
        #屏幕打印:parr is man
        --------------------------**kwargs格式化字符串-------------------------
        #定义一个字符串,使用字典的key来占位
        s1 = "{name} is {acter}"
        #字典key对应要传入字符串的值
        dic = {"name":"parr","acter":"man"}
        result = s1.format(**dic)
        print(result)
        
        #屏幕打印:parr is man

发送邮件实例,涵盖了定义函数已经使用函数返回值来判断邮件发送是否成功的实例

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
#定义一个发送邮件的函数,mailto参数用于可变换发送给的人
def mail(mailto):
#将发送邮件的结果默认为成功
    result = True
#使用try来判断代码是否成功执行完成,如果成功则return result
    try:
        msg = MIMEText('hello,my friend', 'plain', 'utf-8')
        msg['From'] = formataddr(["parr", 'parr2017@sina.com'])
        msg['To'] = formataddr(["哈哈哈", '220899@qq.com'])
        msg['Subject'] = "主题"

        server = smtplib.SMTP("smtp.sina.com", 25)
        server.login("parr2017@sina.com", "邮箱密码")
        server.sendmail('parr2017@sina.com', [mailto, ], msg.as_string())
        server.quit()
#如果不成功则为result赋值为:false
    except Exception:
        result = False
#返回函数执行的结果
    return result
#调用函数,并使用result变量得到函数返回的值
result = mail("220899@qq.com")
#如果result为True则返回发送成功,反之返回发送失败
if result:
    print("发送成功!")
else:
    print("发送失败!")

补充:lambda表达式,用来表示简单的函数,不需要声明的函数。减少内存空间占用。

#使用普通方法来定义一个简单函数
def add_a(a):
    a += 1
    return a
result = add_a(5)
print(result)
#屏幕打印:6

#使用lambda表达式来定义函数
add_a = lambda a : a+1
result = add_a(5)
print(result)
#屏幕打印:6

 

以上为本人课后总结,有错欢迎纠正,谢谢!

 

转载于:https://www.cnblogs.com/parr2017/p/7873500.html

相关文章:

  • AD与DNS集成,且有备份AD与DNS,主AD与DNS坏,备份DNS如何成为主
  • SubSonic3.0使用外连接查询时查询不出数据的问题修改
  • 海量文件拷贝(Windows/Linux)
  • VS.net和Reflector 图标解释
  • EPEL源
  • centos7 修改mac地址
  • c# 4.0新特性一览
  • 荣光医院医道会比赛策略
  • CSS布局模型 之 浮动模型(浮动的工作原理和清除浮动技巧?)
  • sql优化方案,总结的比较全面
  • 在此之前的软件系统做开发—需求的研究框架
  • 【安全牛学习笔记】字典、在线密码破解-hydra
  • 配置daocloud加速
  • 局域网远程服务器重启
  • Android之SlideMenu实例Demo
  • .pyc 想到的一些问题
  • 4. 路由到控制器 - Laravel从零开始教程
  • Apache Spark Streaming 使用实例
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Asm.js的简单介绍
  • CentOS 7 修改主机名
  • docker容器内的网络抓包
  • es6
  • Java编程基础24——递归练习
  • JS题目及答案整理
  • Netty 4.1 源代码学习:线程模型
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PHP 小技巧
  • Swoft 源码剖析 - 代码自动更新机制
  • Vue.js-Day01
  • 百度小程序遇到的问题
  • 大整数乘法-表格法
  • 记一次删除Git记录中的大文件的过程
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 删除表内多余的重复数据
  • 数据结构java版之冒泡排序及优化
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • %check_box% in rails :coditions={:has_many , :through}
  • (7)STL算法之交换赋值
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (九十四)函数和二维数组
  • (三)mysql_MYSQL(三)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)u-boot-nand.bin的下载
  • (一)VirtualBox安装增强功能
  • *上位机的定义
  • ../depcomp: line 571: exec: g++: not found
  • .Family_物联网