• Day3


    本节内容

    1. 函数简介

    2.返回值 

    3. 参数与局部变量

    4.递归

    5.匿名函数

    6.函数式编程介绍

    7.高阶函数

    8.内置函数

    1.函数简介

    函数(function清末根据日语翻译+英语读音译为“方程”),名称出自数学家李善兰的著作《代数学》。之所以如此翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。
    函数是可重复使用的,实现特定功能的代码段。编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。
     1 if cpu利用率 > 90%:
     2         #发送邮件提醒
     3         连接邮箱服务器
     4         发送邮件
     5         关闭连接
     6   
     7     if 硬盘使用空间 > 90%:
     8         #发送邮件提醒
     9         连接邮箱服务器
    10         发送邮件
    11         关闭连接
    12   
    13     if 内存占用 > 80%:
    14         #发送邮件提醒
    15         连接邮箱服务器
    16         发送邮件
    17         关闭连接
    18 
    19 #改进后,减少了重复写代码(既提高代码复用)
    20 def 发送邮件(内容)
    21     #发送邮件提醒
    22     连接邮箱服务器
    23     发送邮件
    24     关闭连接
    25   
    26 while True:
    27   
    28     if cpu利用率 > 90%:
    29         发送邮件('CPU报警')
    30   
    31     if 硬盘使用空间 > 90%:
    32         发送邮件('硬盘报警')
    33   
    34     if 内存占用 > 80%:
    View Code

    语法:

    def 函数名():
        函数体

    ex1:

     1 def fun1():
     2     print(3 * 4)
     3 
     4 fun1()
     5 print(fun1)
     6 # 1、def 关键字 ,读到这个关键字就开始创建一个函数
     7 # 2、函数名():
     8 # 3、函数体
     9 # 4、在内存中的体现,类似定义了一个fun1的变量,值是函数体,但是函数体并没有执行
    10 # 5、调用方法,函数名()
    11 # 6、尝试打印函数名
    1 def func2(x,y):
    2     #加法计算
    3     print(x + y)
    4 func2(2,4)
    5 
    6 #x,y 叫形式参数,简称形参,也可以是别的名字,跟给变量起名字的规则一样
    7 #2,4 叫实际参数,简称实参
    8 #在定义函数的过程,形参并没有开辟内存空间
    形参/实参
     1 def 发送邮件()
     2     #发送邮件提醒
     3     连接邮箱服务器
     4     发送邮件
     5     关闭连接while True:
     6  
     7     if cpu利用率 > 90%:
     8         发送邮件()
     9  
    10     if 硬盘使用空间 > 90%:
    11         发送邮件()
    12  
    13     if 内存占用 > 80%:
    14         发送邮件()
    15 
    16 
    17 #改进型
    18 def 发送邮件(邮件内容)
    19 
    20     #发送邮件提醒
    21     连接邮箱服务器
    22     发送邮件
    23     关闭连接
    24 
    25  
    26 while True:
    27  
    28     if cpu利用率 > 90%:
    29         发送邮件("CPU报警了。")
    30  
    31     if 硬盘使用空间 > 90%:
    32         发送邮件("硬盘报警了。")
    33  
    34     if 内存占用 > 80%:
    35         发送邮件("内存报警了。")
    参数使用的例子

    总结:

    形参:形式参数,不是实际存在,是虚拟变量,。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应)

    实参:实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参

    形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元

    实参是一个变量,占用内存空间

    数据传送单向,实参传给形参,不能形参传给实参

    练习1:写一个简单的计算器,可以计算2个数的加减乘除

    练习2:找个实际生产的例子/可以贴几个实际生产的例子

    扩展示例:

     1 def send_mail():
     2     import smtplib
     3     from email.mime.text import MIMEText
     4     from email.utils import formataddr
     5 
     6     msg = MIMEText('邮件内容', 'plain', 'utf-8')
     7     msg['From'] = formataddr(["赤脚大仙儿",'freedom_chentao@163.com'])
     8     msg['To'] = formataddr(["小三儿",'66660929@qq.com'])
     9     msg['Subject'] = "主题"
    10 
    11     server = smtplib.SMTP("smtp.163.com", 25)
    12     server.login("freedom_chentao@163.com", "邮箱密码")
    13     server.sendmail('freedom_chentao@163.com', ['66660929@qq.com',], msg.as_string())
    14     server.quit()
    15 send_mail()
    发邮件

    默认参数

     1 def func(name, age = 18):
     2     
     3     print "%s:%s" %(name,age)
     4 
     5 # 指定参数
     6 func('alex', 21)
     7 # 使用默认参数
     8 func('alex')
     9 
    10 注:默认参数需要放在参数列表最后
    默认参数

    返回值

     1 def func1():
     2     Y = 3 + 5
     3     return Y
     4     print(123)
     5 func1()
     6 A = func1()
     7 print(A)
     8 
     9 def func2():
    10     Y = 3 + 5
    11     return 123
    12 A = func2()
    13 print(A)
    返回值

    1、使用return 来返回函数的执行结果

    2、函数在执行过程中只要遇到return语句,就会停止执行并返回结果

    3、return的内容可以是1个或多个值

    4、如果未在函数中指定return,那这个函数的返回值为None

     练习发邮件的例子

    动态参数

     1 def func(*args):
     2 
     3     print args
     4 
     5 
     6 # 执行方式一
     7 func(11,33,4,4454,5)
     8 
     9 # 执行方式二
    10 list = [11,2,2,3,3,4,54]
    11 func(*list)
    动态参数一
    1 def func(**kwargs):
    2     print(kwargs)
    3 #执行方式一
    4 func(name='alex',age=21)
    5 
    6 #执行方式二
    7 dict = {'name':'fancis', 'age':18, 'gender':'male'}
    8 func(**dict)
    动态参数二
     1 def func(*args, **kwargs):
     2     print(args)
     3     print(kwargs)
     4 
     5 list = [11,22,33]
     6 dict = {'name':'alex','age':18}
     7 func(list)
     8 func(list,dict)
     9 func(*list,dict)
    10 func(*list,**dict)
    动态参数三

    参数的总结:

    全局/局部变量

    1 def f1(a,b):
    2     return a +b
    3 
    4 def f1(a,b):
    5     return a * b
    6 
    7 ret = f1(7,6)
    8 print(ret)

    匿名函数

    函数式编程

    内置参数

    补充:

    内置参数

    递归

    yield

    <h3>1.函数基本语法及特性</h3>

  • 相关阅读:
    入职事业单位一年,真真的发现与私企大不同
    就算收入腰斩,我也决定离开私企,去吃公家饭了
    写了8年的代码,做过的项目都下线了,程序员的意义在哪里!
    程序员又双叕和产品打起来了,说说与产品经理的那些事。
    创业公司的技术总监,去上市公司面试,结果凉了。
    看了程序员的未来在哪里,有感
    有个程序猿要去当CEO了:(一)事情始末
    企业微信/政务微信 previewFile方法在有iframe情况下且iOS点击无效解决方案
    Mark: 实现个toy版的脚手架(RPC)
    搞技术的思维
  • 原文地址:https://www.cnblogs.com/francis818/p/5771493.html
Copyright © 2020-2023  润新知