揭秘python函数:编程艺术的核心力量

news2024/11/28 12:36:59

在这里插入图片描述

文章目录

  • 前言
  • 什么是 python 函数
  • 函数的使用步骤
    • 1)定义函数
    • 2)调用函数
  • 带有参数的函数
  • 函数的返回值
  • 函数的说明文档
  • 函数的嵌套调用
  • 实现简易的计算器

前言

当我们深入研究 Python 的内心深处,我们将会发现,函数是其内核的核心力量。这并不仅仅是因为函数具有处理任务的能力,但更重要的是,函数是实现程序代码重用的关键因素之一,它帮助我们以一种结构化和有组织的方式来表达我们的思想。

所谓的 “编程艺术”(The Art of Programming)不仅仅是指编写的代码能够成功运行,关键在于是否可以使代码看起来更加简洁,重用性更强,更容易进行维护和扩展。函数正好可以做到这一点。它们封装了代码中的预定义任务,使得代码看起来更加具有逻辑性,更加易于理解。

在这篇文章中,我们将揭秘 Python 函数的魅力,详解其内在的原理,函数的定义、调用,以及如何利用其强大的功能像艺术家一样去书写你的 Python 代码。无论你是 Python 的初学者还是有经验的开发者,我相信这个主题都能给你带来一些有益的启示和新的理解。希望你在这趟探索之旅中能感受到 Python 函数的强大力量,也能体会到编程的艺术魅力。让我们一起打开 Python 函数的神秘之门,探索其中深邃又广阔的世界吧!🚗🚗🚗

什么是 python 函数

在生活中,我们使用计算器程序的时候,首先我们需要选择我们需要进行哪种计算,是加法、减法、乘法还是除法,并且可能每次进行的计算都不相同,所以,每次都需要选择进行哪种计算。当我们写计算器小程序的时候,我们要实现这么多次的菜单是不是也要将菜单代码写这么多次呢?可以是可以,但是我们不难发现,这样的代码会显得十分冗余,我们并不推荐,那么怎样才能解决这种代码冗余的问题问题呢?那就是函数。

函数可以:

  1. 代码复用:当需要在多个地方重复相同的操作时,可以把这些操作封装在一个函数中。这样,只需要调用函数即可完成这些操作,无需重复书写相同的代码。
  2. 模块化设计:函数使得代码结构更加清晰、更具有可读性。通过函数,可以将复杂的问题拆分成一系列相对独立,功能单一的模块,使得代码更加容易理解和维护。
  3. 隐藏实现细节:函数将代码的具体实现和使用接口分离,提供了一种抽象机制。这意味着函数的使用者不需要了解函数内部的实现细节,只需要了解函数的输入(参数)和输出(返回值)即可。
  4. 提高代码的可测试性:每一个函数都是一个相对狮郑络的代码段,可以独立于其他代码进行测试,大大提高了代码测试的可行性和有效性。
  5. 提高代码的可调试性:当出现问题时,可以针对单个函数进行调试,而不需要查看整个代码。
  6. 便于代码的迭代和重构:通过调整或重写特定的函数,可以在不影响整体代码结构的情况下更新或优化部分功能。

函数的使用步骤

1)定义函数

def 函数名(参数):
	代码块
	...

2)调用函数

函数名(参数)

注意:在 python 中,函数必须先定义再使用。并且参数可以根据情况,可以有也可以没有。

# 定义函数
def menu():
    print('-----------欢迎使用计算器-----------')
    print('-----------0.退出计算器------------')
    print('--------------1.加法--------------')
    print('--------------2.减法--------------')
    print('--------------3.乘法--------------')
    print('--------------4.除法--------------')
    print('---------------------------------')

# 调用函数
menu()
option = int(input('请输入你要进行的操作:'))
while option != 0:
    if option == 1:
        print('加法操作')
    elif option == 2:
        print('减法操作')
    elif option == 3:
        print('乘法操作')
    else:
        print('除法操作')
    # 调用函数
    menu()
    option = int(input('请输入你要进行的操作:'))

在这里插入图片描述
只有函数被调用的时候,才会执行函数里面的代码,如果函数没有被调用,那么函数里面的代码就不会被执行。

带有参数的函数

上面的菜单操作,比较单调,而函数有了参数之后就会变得更加有意思,代码也变得更加灵活。

def say_hello(name):  # 形式参数
    print(f'Hello,{name}.welcome to the world of Python')

name = input('请输入你的名字:')
say_hello(name)  # 实际参数

在这里插入图片描述
当我们调用函数的时候传入的参数叫做实际参数,而定义函数的时候的参数叫做形式参数。

形式参数(也称为形参)是定义在函数或方法声明中的参数。形式参数只有在函数或方法被调用时才会具体化为实际的数据值,也就是实际参数。

函数的返回值

我们可以使用函数来返回我们需要的数据。return 数据 return 的作用是,结束当前函数并且将 return 后面的数据带回到调用函数的地方。

def add_num(a,b):
    return a + b

num1 = int(input('请输入操作数1:'))
num2 = int(input('请输入操作数2:'))
sum = add_num(num1,num2)
print(sum)

在这里插入图片描述

当函数 return 之后,函数体 return 之后的代码不会执行。

def add_num(a,b):
    return a + b
    print('代码块')

num1 = int(input('请输入操作数1:'))
num2 = int(input('请输入操作数2:'))
sum = add_num(num1,num2)
print(sum)

在这里插入图片描述

函数的说明文档

在Python中,函数的说明文档也被称为文档字符串,或者简称为"docstring"。它是一种在函数、模块、类或方法定义后立即插入的特殊语句,用来对该部分代码进行说明或者解释。这种解释对于理解代码运行机制很有帮助。

在 python 中,我们可以使用 help(函数名) 来查看函数的说明文档。
help(input)
在这里插入图片描述

在我们自己写的函数中,你可以使用三引号(‘’'或"“”)来定义一个docstring。docstring 不单单显示函数的基本功能,还应该显示它的参数类型、返回类型及其他相关的信息。这就使得其他人可以理解并且使用这个函数。

def 函数名(参数):
	''' 说明文档的位置 '''
	代码块
	...
def add_num(a,b):
    '''
    求和函数
    :param a:操作数1
    :param b:操作数2
    :return:操作数1与操作数2的和
    '''
    return a + b
    print('代码块')

help(add_num)

在这里插入图片描述

函数的嵌套调用

我们在一个函数中可以调用另外一个函数。

def test_B():
    print('-----test_B start-----')
    print('test_B 代码块')
    print('------test_B end------')

def test_A():
    print('-----test_A start-----')
    test_B()
    print('------test_A end------')

test_A()

在这里插入图片描述
我们可以注意两个代码的执行顺序是怎样的,当在test_A函数中调用test_B函数时,会先执行完test_B函数的代码,然后继续执行test_A的剩下代码。

实现简易的计算器

因为这个代码比较简单,所以我们就不添加说明文档了,如果大家有兴趣的话,也可以自己下去试试哦。

def menu():
    print('-----------欢迎使用计算器-----------')
    print('-----------0.退出计算器------------')
    print('--------------1.加法--------------')
    print('--------------2.减法--------------')
    print('--------------3.乘法--------------')
    print('--------------4.除法--------------')
    print('---------------------------------')

# 加法
def add_num(a,b):
    return a + b

# 减法
def sub_num(a,b):
    return a - b

# 乘法
def mul_num(a,b):
    return a * b

# 除法
def div_num(a,b):
    return a / b

menu()
option = int(input('请输入你要进行的操作:'))
while option != 0:
    num1 = int(input('请输入操作数1:'))
    num2 = int(input('请输入操作数2:'))
    if option == 1:
        ret = add_num(num1,num2)
    elif option == 2:
        ret = sub_num(num1,num2)
    elif option == 3:
        ret = mul_num(num1,num2)
    else:
        ret = div_num(num1,num2)

    print(ret)
    # 调用函数
    menu()
    option = int(input('请输入你要进行的操作:'))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

信息安全管理与评估赛题第5套

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 赛题五 模块一 网络平台搭建与设备安全防护<

(四)并发编程带来了哪些问题?

&#xff08;四&#xff09;并发编程带来了哪些问题&#xff1f; 4.1 引入4.2 线程安全问题01、原子性02、可见性 4.3 活跃性问题01、死锁02、活锁03、饥饿 4.4 性能问题 4.1 引入 在一定场景下&#xff0c;使用多线程会给我们日常工作带来很多的便利&#xff0c;但并不是在任…

记一次数据库迁移(迁移数据)

book,由于之前建表没注意字符集的问题&#xff0c;导致之前写入的数据出现乱码。现在要将之前的数据和现在数据的字符集一致&#xff0c;不出现乱码情况&#xff0c;将字符集为 latin1 已有记录的数据转成 utf8&#xff0c;并且已经存在的记录不乱码。 操作步骤&#xff1a; 建…

SPI接口调试

本文记录了复旦微fmql45t900 SPI裸核和linux系统下spi接口的调试步骤。 问题描述&#xff1a; 复旦微fmql45t900 SPI接口片选信号无法拉低控制。 原因分析&#xff1a; 为了排除硬件问题&#xff0c;创建spi裸核测试工程进行单步调试&#xff0c;spi发送数据时用示波器可以正…

FPGA USB FX2 图片发送试验 驱动CY7C68013A实现 提供2套工程源码和技术支持

目录 1、前言2、我这儿已有的 FPGA USB 通信方案3、CY7C68013A芯片解读和硬件设计FX2 简介SlaveFIFO模式及其配置 4、工程详细设计方案输入测试图片的处理PC上位机发送测试图片图像接收与缓存图像输出显示 5、vivado工程1--LCD输出显示6、vivado工程1--LCD输出显示7、上板调试验…

vue数组深层赋值

一、问题 使用vue开发的项目&#xff0c;有一个页面的data中定义了两个数组&#xff0c;需要把其中一个数组赋值给另一个数组的其中一个对象的一个属性&#xff08;有点拗口&#xff09;&#xff0c;如图所示&#xff1a; 二、错误赋值 直接使用opts:this.print_name&#xf…

el-button与i标签实现区域切换效果

题记&#xff1a;我们工作中需要实现内容区域切换放大缩小的效果&#xff0c;其实道理很简单&#xff0c;给事件给样式即可。 #el-button与i标签实现区域切换效果 ##图片展示&#xff1a; ##代码实现 ###template部分 <div class"right"><el-button type&…

【SQL应知应会】行列转换(三)• Oracle版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习&#xff0c;有基础也有进阶&#xff0c;有MySQL也有Oracle 行列转换 • Oracle版 oracle的行列转换前言1.数据…

Perhaps you are running on a JRE rather than a JDK?

我记得我遇到过好多次 mvn clean package的时候报错&#xff1b; 最后检查时这里的路径配置错了

蓝牙耳机品牌排行榜前十名!2023年超全蓝牙耳机合集!

虽然称不上发烧友&#xff0c;但近年来用过的蓝牙耳机少说也有几十款了。这篇文章以近年来市面上的热销且评价都比较高的十款蓝牙耳机为主要推荐对象&#xff0c;来给大家做一期有关于蓝牙耳机的实测体验以及提供相关的选购思路&#xff0c;希望能为大家的选择出一份力。 第一…

# TSWIKI 0.2 版本

TSWIKI 0.2 版本 TSWIKI 0.2 版本经过这段时间的改进&#xff0c;增加了搜索&#xff0c;版本变更查看等功能&#xff0c;基本开发完成。功能方面已经与 gollum 类似。 功能改进说明 1、GIT 版本变更查看功能 实现 git 版本变更查看功能, 在 markdown 文档查看界面&#xf…

day 44 完全背包

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

LLVM介绍

LLVM项目是什么 工业级编译技术集合 优化器和代码生成器llvm-gcc和Clang前端MSIL和.NET虚拟机开源项目 行业组织、研究团体和个人 LLVM愿景 主要使命&#xff1a;构建一套模块化的编译器组件&#xff1a; 减少构建特定编译器的时间和成本组件可以在不同的编译器之间共享使用…

OpenCat:一个基于Arduino和Raspberry Pi的开源四足机器人宠物框架

一个深圳项目&#xff0c;OpenCat&#xff1a;一个基于Arduino和Raspberry Pi的开源四足机器人宠物框架。 项目灵感来自于到波士顿动力公司Big Dog和Spot Mini的启发。 OpenCat提供了一个基础的开源平台&#xff0c;可以创建令人惊奇的可编程步态、运动四足机器人。它可以进行复…

什么是孪生视频,孪生视频是什么意思,她的关键技术,及应用场景案例

视频孪生&#xff0c;即视频数字孪生。是集三维地理信息系统、视频虚实融合、数字孪生、人工智能、时空位置智能、地球空间网格编码、知识图谱于一体的多学科、多维度、多尺度的综合技术应用&#xff0c;是对数字孪生的创新升级。 什么是视频孪生&#xff0c;视频孪生的关键技术…

c++ 之decay简单介绍

简介 std::decay是C获取类型的一种方式&#xff0c;它定义在<type_traits>头文件中。 #include <type_traits>模型 template< class T > using decay_t typename decay<T>::type; //(since C14)使用示例 template<typename T> static void …

关于流程图svg线条流动的效果-jq

获取所有的SVG并加上相应的样式 var svgElement $(svg.jtk-connector);console.info(svgElement,svgElement)var pathElement svgElement.find(path:first);pathElement.attr(class, connector-line);pathElement.attr(fill, transparent);pathElement.attr(stroke, #1890ff)…

vue3项目打开本地pdf文件实现方法

vue3项目打开本地pdf文件实现方法 效果图引入pdf插件pdf页面封装pdf存放目录结语 效果图 引入pdf插件 注意一定要这个版本&#xff0c;不然会报错key.split(...).at is not a function npm install pdfjs-dist2.12.313pdf页面封装 <template><div class"pdf-co…

饮料市场京东销售数据分析(京东大数据)

近日&#xff0c;关于“阿斯巴甜可能是致癌物”的话题持续发酵&#xff0c;众所周知阿斯巴甜是常见的人工甜味剂之一&#xff0c;并被广泛应用于无糖可乐以及一些饮料产品中&#xff0c;而这一话题引起人们的巨大恐慌。 阿斯巴甜致癌与否尚未定论&#xff0c;但这一言论也引得…

【学习笔记-QGIS】 QGIS从零快速上手

原文感谢作者才华横溢吴道简 安装文章参考&#xff1a;https://zhuanlan.zhihu.com/p/370633306 一、下载安装 QGIS免费开源&#xff0c;中文界面&#xff0c;下载地址&#xff1a;https://download.qgis.org/downloads/ 三、配置中文环境 开始——QGIS 3.18——QGIS Deskto…