函数的定义及其返回值、参数等相关操作

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下:

while True:
    if cpu利用率 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接

    if 硬盘使用空间 > 90%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接

    if 内存占用 > 80%:
        #发送邮件提醒
        连接邮箱服务器
        发送邮件
        关闭连接

仔细一看上述代码,if条件语句下的内容可以被提取出来公用,如下:

def 发送邮件(内容)
    #发送邮件提醒
    连接邮箱服务器
    发送邮件
    关闭连接

while True:

    if cpu利用率 > 90%:
        发送邮件(‘CPU报警‘)

    if 硬盘使用空间 > 90%:
        发送邮件(‘硬盘报警‘)

    if 内存占用 > 80%:

对于上述的两种实现方式,第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:

  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...”

函数式编程最重要的是增强代码的重用性和可读性

# 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
# 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
# 函数式编程最重要的是增强代码的重用性和可读性
# 函数的定义主要有如下要点:
#
# def:表示函数的关键字
# 函数名:函数的名称,日后根据函数名调用函数
# 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
# 参数:为函数体提供数据
# 返回值:当函数执行完毕后,可以给调用者返回数据。

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

def senmail(user):
    flag=True
    try:
        msg = MIMEText(‘python‘, ‘plain‘, ‘utf-8‘)
        msg[‘From‘] = formataddr(["嘿嘿",‘[email protected]‘])
        msg[‘To‘] = formataddr(["你好",‘[email protected]‘])
        msg[‘Subject‘] = "欢迎"

        server = smtplib.SMTP("smtp.sina.com", 25)
        server.login("[email protected]", "password")
        server.sendmail(‘[email protected]‘, [user], msg.as_string())
        server.quit()
    except Exception:
        flag=False
    return flag
ret=senmail(‘[email protected]‘);
print(ret)
if ret:
    print("发送成功!")
else:
    print("发送失败!")

上述发送邮件的例子中,若定义返回值,则返回对应的值,若未定义,返回None;return后面的语句不再继续执行,return起到中断当前函数的作用;

参数

#单个普通参数:
def show(arg):
    print(arg)
show("123")

#两个普通参数
def show(arg,args1):
    print(arg,args1)
show(123,456)

#默认参数  默认参数必须在最后
def show(arg,arg1=234):
    print(arg,arg1)

show(789)

#指定参数,按形参顺序输出,实参顺序随意
def show(a1,a2):
    print(a1,a2)
show(a2=999,a1=888)

#动态参数,单个星号接收的参数自动变为元组
def show(*args):
    print("动态参数一:",args,type(args))

show(11,22,33,44)
#动态参数二,两个星号,接收的参数只能为类字典格式
def show(**kwargs):
    print("动态参数二:",kwargs,type(kwargs))
show(n1=12,n2=234,n3=333)
#双动态参数
def show(*args,**kwargs):
    print("参数一:",args,type(args))
    print("参数二:",kwargs,type(kwargs))

show(11,22,33,n1=99,n2=100,n3=111)
print("直接传入对应参数值:")
l=[11,22,33]
d={"n1":99,"n2":100,"n3":111}
show(l,d)
print("直接传入对应参数的正确方法:")
show(*l,**d)

#使用动态参数实现字符串格式化
s1="{0} is {1}"
result=s1.format("alex","sb")
print("常规字符串格式化方法:",result)
l=["alex","2b"]
result1=s1.format(*l)
print("单一参数动态字符串格式化方法一:",result1)

s2="{name} is {actor}"
re=s2.format(name="alex",actor="3b")
print("常规字符串格式化方法:",re)
d1={"name":"alex","actor":"2b"}
re1=s2.format(**d1)
print("单一参数动态字符串格式化方法二:",re1)
时间: 2024-12-27 13:50:22

函数的定义及其返回值、参数等相关操作的相关文章

函数初识:定义,调用,返回值,参数

一 函数的定义,调用,返回值 1.函数的作用: 封装 减少重复代码 2.函数的书写格式 def 关键字 定义一个函数 def 函数名(): 缩进 函数体(代码块) def func(): print('我') print('爱') print('你') return '1314' #返回值,将内容返回给调用者 #不写return或写了return不写值返回None msg = func() #函数名() -- 调用 print(msg) return返回多个变量是,返回的是元祖形式,返回的内容不

linux shell自定义函数(定义、返回值、变量作用域)介绍

http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以

JavaScript-4.3函数的参数和返回值,参数数目不确定的函数调用---ShinePans

<html> <head> <meta http-equiv="content-type" vontent="text/html;charset=GB2312"/> <title> 4.3 参数数目不明确的函数调用 </title> <!--脚本部分--> <script type="text/javascript"> function a(){ var str=

python开发编程基础:函数定义,返回值,参数

一,函数的定义 1,函数mylen叫做函数名 #函数名 #必须由字母下划线数字组成,不能是关键字,不能是数字开头 #函数名还是要有一定的意义能够简单说明函数的功能2,def是关键字 (define)3,():必须写4,函数体内尽量写注释,方便查看代码5,函数的调用:函数名+括号 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 def mylen(): #函数名 5 ''' 6 计算字符串长度的函数 这里写的是注释,方便查看代码 7 ''' 8

python基础 函数定义 返回值 参数

函数定义 1 #python中函数定义.def函数定义的关键字,fun1函数名,x为函数的形参可以有多个,多个之间用“,”隔开:return 函数返回值的关键字,python中return可以是非必要 2 def fun1(x): 3 x += 1 4 return x 函数返回值 1 # 函数返回值可以有多个,之间使用“’”分隔,返回值讲多个值组成的元组进行返回. 当无return时python会隐式return “None”,如果只返回一个值就返回这个值本身 2 def fun2(x, y)

转 linux shell自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

linux shell学习笔记二---自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1. 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2. 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255). 示例(test_fun.sh): #!/bin/sh fSum 3 2; fSum() { ec

060、Java中定义有返回值有参数的方法

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int result = add(10, 20); // 方法的返回值可以进行接收 System.out.println("计算结果:" + result); System.out.println("计算结果: