博客
关于我
python 函数1
阅读量:797 次
发布时间:2023-03-07

本文共 2406 字,大约阅读时间需要 8 分钟。

函数式编程与面向对象编程的对比与函数定义

背景

在学习函数之前,许多开发者习惯于面向过程编程。这种方法是将业务逻辑从上到下逐步实现,通常使用一段代码来完成特定功能。这种方法虽然简单,但存在重复代码和代码不可读性的问题。例如,以下代码段使用了多个if条件语句来实现相同的功能:

while True:    if cpu利用率 > 90%:        # 发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接    if 硬盘使用空间 > 90%:        # 发送邮邮件提醒        连接邮箱服务器        发送邮件        关闭连接    if 内存占用 > 80%:        # 发送邮件提醒        连接邮箱服务器        发送邮件        关闭连接

突破与重构

通过对上述代码的分析,可以发现if条件语句下的功能逻辑可以被提取出来公用,形成一个独立的功能模块。例如,可以将发送邮件的逻辑单独抽离为一个函数:

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

这样一来,代码的可读性和重用性就得到了显著提升。第二次实现的代码显然比第一次更高效和维护友好。这正是函数式编程与面向对象编程的主要区别。

函数式编程的优势

函数式编程的核心优势在于通过将代码封装到函数中,实现代码的高度重用性和可读性。开发者无需重复编写相同的代码,只需调用相应的函数即可完成任务。这种编程方式特别适合需要频繁调用相同功能模块的场景。

函数定义与使用

函数定义要点

  • def关键字:用于定义函数。
  • 函数名:给函数起名,方便调用。
  • 函数体:包含实现功能的代码逻辑。
  • 参数:为函数提供必要的数据。
  • 返回值:告知调用者函数执行结果。
  • 返回值的作用

    函数是功能的封装,需要通过返回值告知调用者是否成功完成任务。例如:

    def 发送短信():    # 发送短信的代码...    if 发送成功:        return True    else:        return False

    调用者可以根据返回值进行后续处理:

    result = 发送短信()if result == False:    记录日志,短信发送失败...

    参数的作用

    参数为函数提供必要的输入数据,使其具有灵活性和扩展性。参数可以分为以下几种类型:

  • 普通参数:如def func(name):
  • 默认参数:如果某个参数在多数情况下不需要特别指定,可以设置默认值。例如:
  • def func(name, age=18):    print(f"{name}:{age}")
    1. 指定参数:调用时可以指定特定参数,跳过默认值。例如:
    2. func("wang", "delong", "dada")
      1. 动态参数:使用*args**kwargs来接收任意数量的参数。例如:
      2. def func(*args):    print(args)
        1. 万能参数:使用*args, **kwargs来接收所有参数。例如:
        2. def func(*args, **kwargs):    print(args, kwargs)

          函数的实例

          发送邮件模块

          import smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrmsg = MIMEText('邮件内容', 'plain', 'utf-8')msg['From'] = formataddr(["武沛齐", 'wptawy@126.com'])msg['To'] = formataddr(["走人", '424662508@qq.com'])msg['Subject'] = "主题"server = smtplib.SMTP("smtp.126.com", 25)server.login("wptawy@126.com", "邮箱密码")server.sendmail('wptawy@126.com', ['424662508@qq.com'], msg.as_string())server.quit()

          常用内置函数

        3. abs():计算绝对值。
        4. all()any():用于判断集合中所有元素是否符合条件或是否存在符合条件的元素。
        5. n = all(["wang", "delong"])  # Falsen1 = all([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])  # True
          1. 字符串格式化:使用format()方法进行字段替换。
          2. s = "我的名字:{0},年龄:{1}".format("wangdelong", 30)s = "我的名字:{name},年龄:{age}".format(age=30, name="wangdelong")

            全局变量与函数修改

            全局变量需要谨慎处理,使用global声明。例如:

            name = "wangdleong"def f1():    age = 18    print(age, name)def f2():    age = 20    print(age, name)f1()f2()

            三元运算与lambda函数

            三元运算可以简化多行if语句。例如:

            name = "wang" if 1 == 1 else "SB"

            对于简单的功能,可以使用lambda函数来实现。例如:

            f1 = lambda a1: a1 + 100

            结论

            函数式编程通过将代码封装到函数中,显著提升了代码的重用性和可读性。在定义函数时,合理使用参数和返回值,使其更具灵活性和扩展性。掌握这些技巧是开发高效、可维护的代码的关键。

    转载地址:http://ncofk.baihongyu.com/

    你可能感兴趣的文章
    python 使用filetype校验文件
    查看>>
    Python 使用flush函数将缓冲区数据立即写磁盘
    查看>>
    python 使用in判断不准确,in不好使
    查看>>
    Python 使用pandas 进行查询和统计详解
    查看>>
    Redis 配置文件redis.conf详细解释
    查看>>
    python网络爬虫(2)——scrapy框架的基础使用
    查看>>
    python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
    查看>>
    Python 使用哈希函数用于加密
    查看>>
    Python 依赖管理的革新——Poetry 深度解析
    查看>>
    python 保留精度及增加去除数字的千位分隔符(金额化数字)
    查看>>
    python 倒计时 9,8,7,。。。。。。0
    查看>>
    Python 入门开发学习笔记之数据的增删改查
    查看>>
    Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
    查看>>
    Python 八大排序算法合集
    查看>>
    python 关于epoll的学习
    查看>>
    Python 内存管理
    查看>>
    Python 内嵌函数:它们有什么用处?
    查看>>
    Python 内置 sum 函数 vs. for 循环性能
    查看>>
    python 内置slice的用法
    查看>>
    Python 内置时间模块
    查看>>