Python入门 函数 基础入门篇

news2024/11/18 15:46:12

一、什么是函数

函数是最基本的一种代码抽象的方式,是组织好的可重复使用的,用来实现单一或相关联功能的代码段。

函数是对做相似的事情或相似的动作进行封装,它能提高应用的模块性和代码的重复利用率。我们要封装好一个函数,首先要学会对事务进行抽象,抽象是数学中非常常见的概念。

举个例子:

计算阶乘,比如:1 *2 * 3 * ... * 10,写起来十分不方便,我们为了简便可以写成10!。再如求和公式 ∑n=1100n 等同于1 + 2 + 3 + ... + 100;

抽象非常强大,借助抽象,我们不用关心底层的具体计算过程,而直接在更高的层次上思考问题。

写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。

Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用,如 print() 能输出任何对象,len()能计算不同类型对象的长度。

二、函数的定义

定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。

定义函数格式:

def   函数名(参数1,参数2,....):
         函数体
        return  返回值

 

示例:求两个数的最大值

# 定义一个函数,接收两个参数,返回其最大值
def max(a, b):
    if a >= b:
        return a  # 返回a
    else:
        return b  # 返回b  

注意:函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。
如果没有return语句,函数执行完毕后会返回None

示例2 :一元二次方程求解 ax2+bx+c=0

def quadratic_equation(a, b, c):
    import math
    t = math.sqrt(b * b - 4 * a * c)
    v1 = (-b + t) / (2 * a)
    v2 = (-b - t) / (2 * a)
    return v1, v2

print(quadratic_equation(4, -5, 0))
print(quadratic_equation(1, -12, 6))

 

注意:函数可以返回多个值,它返回值是个元组

示例3:一元二次方程求解 ax2+bx+c=0, 需要考虑到多种情况 a=0 和 Δ=b2−4ac4a2=0

 

def quadratic_equation(a, b, c):
    if a == 0:  # a 为0时只有一个值
        return -c / b
    else:
        import math
        t = math.sqrt(b * b - 4 * a * c)
        if t == 0:  # △=0 时也只有一个值
            return -(b / (2 * a))
        else:
            v1 = (-b + t) / (2 * a)
            v2 = (-b - t) / (2 * a)
            return v1, v2


print(quadratic_equation(0, -5, 1))
print(quadratic_equation(5, 10, 5))
print(quadratic_equation(1, -12, 6))

三、函数调用

Python内置了很多有用的函数,我们可以直接调用。

要调用一个函数,需要知道函数的名称和参数,比如求长度函数len(),它接收一个参数。

调用内部函数len()示例:

lenght=len('abcdefj')  # 使用变量接收函数返回值
print(lenght)  # 结果 7
len([1, 2, 3, 4], 'abc')  # 函数的参数类型或者参数数量不正确会抛出 TypeError 错误
注意:调用函数式我们传入的参数数量或者类型不正确会抛出 TypeError 错误

调用外部函数示例:

def max(a, b):
    if a >= b:
        return a  # 返回a
    else:
        return b  # 返回b

c = max(4, 5)  # 调用max函数
print(c)  # 打印结果5
print(max('A', 'a')).

 

四、Python带默认参数的函数

定义函数时我们可以给参数传递默认值,当调用函数时没有传递该参数的值时使用默认值。

带默认值的参数称为默认参数,而无默认值的参数为必需参数;函数调用时必需参数必填,默认参数选填。

默认参数只能定义在必需参数的后面。

示例1:

def power(x, n=2):  # n有默认值
   return x ** n

print(power(5))  # 调用函数不传递n的值,使用默认值,结果为25
print(power(3, 3))  # 调用函数传递n的值,使用传递值,结果为27
注意:由于函数的参数按从左到右的顺序匹配,所以 默认参数只能定义在必需参数的后面

示例2:

带多个默认参数函数的调用,注意最后。

def per_info(name, sex='男', age=32):
   print(name, sex, age)

per_info('woodman')
per_info('Helen', '女')
per_info('Bobo', age=28)  # 要用后面的默认参数,需要给出参数名
per_info(age=28, sex='女', name='Baby')  # 使用参数名传递参数,对参数位置没要求

tuple = ('Peter', '男', 45)
per_info(*tuple)  # 要将列表或元组中值当参数传入函数,我们可在前面加上*

 注意:第6行Bobo的代码, sex参数使用默认值,我们需要传递age参数时需要指定参数名;
第7行Baby代码,我们可以给所有传递值带上参数名称,带上参数名称后对参数可以在任意位置;
最后1行,在元组前加‘*’,表示将列表或元组中值当参数传入函数,注意参数的顺序和个数.

 

输出结果:
woodman 男 32
Helen 女 32
Bobo 男 28
Heli 女 28
Peter 男 45

函数提高篇:Python入门 函数 提高篇

 

 

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

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

相关文章

[附源码]计算机毕业设计设备运维平台出入库模块APPSpringboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【STM32学习(3)】STM32——简述中断的基础知识

中断一、中断的定义二、中断的作用三、中断源(中断触发的硬件)四、中断类型五、中断优先级六、中断服务函数一、中断的定义 中断,即CPU在正常执行程序的过程中,遇到外部(IO引脚中断)/内部(定时…

Maven技术

目录 传统项目管理分析(导入jar包形式) maven组成部分 maven项目构建命令 maven高级 项目的聚合与继承 maven子父工程 需求:使用maven子父工程完成登录并跳转到首页列表 创建父工程 在父工程中以module的形式创建子模块 在父工程中以…

RocketMQ 5.0 可观测能力升级:Metrics 指标分析

作者:玄珏 从消息的生命周期看可观测能力 在进入主题之前先来看一下 RocketMQ 生产者、消费者和服务端交互的流程: message produce and consume process RocketMQ 的消息是按照队列的方式分区有序储存的,这种队列模型使得生产者、消费者和…

Matlab论文插图绘制模板第67期—三角网格图(Trimesh)

在之前的文章中,分享了Matlab网格曲面图的绘制模板: 以及一些特殊形式的网格曲面图: 这一次,再来分享一种特殊的网格曲面图:三角网格图。 先来看一下成品效果: 特别提示:Matlab论文插图绘制模板…

为初学者介绍轻量级目录访问协议——LDAP

如果您是刚接触Active Directory (AD)的初学者,那么当您发现LDAP这个术语时可能会感到十分迷茫。今天就让我们来您熟悉 LDAP,让您更加坚定学习AD域管理的信心。 LDAP 首先,让我们直面主题!什么是 LDAP? LDAP 是一种标…

[矩阵论] Unit 3. 矩阵的分解 - 知识点整理

注: 以下内容均由个人整理, 不保证完全准确, 如有纰漏, 欢迎交流讨论参考: 杨明, 刘先忠. 矩阵论(第二版)[M]. 武汉: 华中科技大学出版社, 2005 3 矩阵的分解 3.1 常见的矩阵标准形与分解 常见标准形 等价标准形: P,QP, QP,Q 可逆 AmnPmm[Ir000]QnnA_{m\times n}P_{m\times…

[附源码]Python计算机毕业设计SSM教师职称资料管理系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

软件测试流程图!转行互联网职场必备!

今天给大家分享的是,在软件测试日常工作过程中,比较常见的几种测试流程图: 1.【测试立项】流程图 2.【测试计划】流程图 3.【单元测试】流程图 4.【整合测试】流程图 5.【系统测试】流程图 6.【性能测试】流程图 7.【验收测试】…

QTextStream(文本流)

QTextStream QTextStream 类为读取和写入文本提供了一个方便的接口可以在QIODevice、QBateArray、和QString中使用&#xff0c;QTextStream使用的是流运算符&#xff08;>> <<&#xff09;&#xff0c;可以更方便的读/写数据&#xff0c;QTextStream也支持对字段进…

使用 Echarts 插件完成中国地图

目录前言&#xff1a;什么是 Echarts 插件中国地图成品展示步骤&#xff1a;完成中国地图代码总结&#xff1a;前言&#xff1a; 大家都知道&#xff0c;一般情况下&#xff0c;想要使用前端设置一个 中国地图 需要使用 canvas 画布进行编写&#xff0c;不仅代码多&#xff0c…

【滤波器】基于Matlab设计巴斯 切比雪夫 椭圆 低通高通带通带阻数字滤波器附GUI界面

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

11月VR大数据:SteamVR新增PICO 4串流数据统计

Hello大家好&#xff0c;每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么&#xff1f;关注这里就对了。我们会统计Steam平台的用户及内容等数据&#xff0c;每月初准时为你推送&#xff0c;不要错过喔&#xff01; 本数据报告包含&#xff1a;Steam VR硬…

暖通锅炉远程监控解决方案

现状及需求分析 随着科学技术的发展&#xff0c;人们对生活品质的追求越来越高&#xff0c;空调行业也在快速发展&#xff0c;建筑空调已经成为现代城市不可或缺的重要组成部分。一般楼宇大厦都采用大型空调机组供暖制冷&#xff0c;那如何保证设备能恒温正常运行&#xff1f;…

[Python图像处理] 使用OpenCV检测对象颜色

使用OpenCV检测对象颜色前言使用 OpenCV 检测对象颜色相关链接前言 检测图像中对象颜色的一种简单方法是首先将图像从 RGB 转换为 HSV 颜色空间&#xff0c;然后使用一系列色调检测对象&#xff0c;这可以通过使用 OpenCV 库轻松完成。为了完成对象检测任务&#xff0c;我们需…

【论文合集】2022年12月医学影像期刊论文合集

★ 本月IEEE Transactions on Medical Imaging(1区 top if 11.037) 共41篇, 本月无MIA。 ”标题高频词汇 (learning, 13), (imaging, 6), (image, 6), (segmentation, 6), (network, 6), (deep, 5), (images, 5), (medical, 4), (multiple, 4), (dynamic, 4), (mri, 4), (magn…

《痞子衡嵌入式半月刊》 第 40 期

痞子衡嵌入式半月刊&#xff1a; 第 40 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻&#xff0c;农历年分二十四节气&#xff0c;希望在每个交节之日准时发布一期。 本期刊是开源项目&#xff08;GitHub: JayHeng/pzh-mcu-bi-weekly&#xff09;&#xff0c;欢…

[附源码]计算机毕业设计基于Springboot颐养天年辅助平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

网络管理配置怎么路由

作者简介&#xff1a;一名99年软件运维应届毕业生&#xff0c;正在自学云计算课程。宣言&#xff1a;人生就是B&#xff08;birth&#xff09;和D&#xff08;death&#xff09;之间的C&#xff08;choise&#xff09;&#xff0c;做好每一个选择。创作不易&#xff0c;动动小手…

基于springboot的鲜花销售商城网站

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…