当前位置: 首页 > news >正文

Python之函数的使用

Python函数

  • 一、为什么使用函数
  • 二、Python函数
    • 定义
    • 调用
    • 参数的传递
  • 三、定义和调用
  • 四、小练习

Python函数具有许多数学函数的特点。特别是Python中的函数具有以下特点:

  • 代表执行单独的操作。
  • 采用零个或多个参数作为输入。
  • 返回值(可能是复合对象)作为输出。

一、为什么使用函数

(1)分而治之的策略。
函数把程序分成了更小的程序段,使程序编写更加容易。
(2)抽象
函数为程序的一部分提供了更高层次、更抽象的接口。通过封装细节,函数为程序员提供高层次的程序元素图,而其中的细节可以留待后续工作时再补充。
(3)重用
可以在程序中的任意位置多次调用函数。
(4)共享
可以把有效的函数分享给其他人使用。
(5)安全性
小段代码可以仔细审核,证明它的正确性,有助于建设较大规模和较安全的代码
(6)简化/可读性
程序中任何用多行代码来解决一个问题的地方,都可用函数来替换这些行。让主程序更加简单。

二、Python函数

定义

定义函数,即创建函数的过程。
一般语法为:

def  函数名(形参1,形参2,....):函数代码块(要执行的操作)return 值

需要注意的是:
(1)函数名最好和函数功能相关联,并遵循变量命名规则。例如求面积的函数,可以命名为getArea
(2)不能省略冒号
(3)函数的参数可以没有,也可以有多个。
(4)返回值可以没有,也可以返回多个值。例如下面例子中得到面积后就直接输出了,不需要返回值。

def  getArea1(n):area=3.14*n*nprint(area)

但如果想要函数只计算,在主程序再输出,那么函数就得把计算结果作为返回值。如:

def  getArea2(n):area=3.14*n*nreturn area

调用

调用就是函数在程序中的应用。
一般格式为:

函数名(实参1,实参2...)

注意:一般地,调用函数时实参个数要和形参个数相对应。(特别的默认形参后面再提)

例如调用上面定义的函数
(1)不带返回值的函数,直接使用,如

getArea1(4)

此时调用函数getArea,并把实参4传递给形参n,n=4,然后输出50.24

(2)带返回值的函数,需要对函数返回的结果进行操作。
如:直接输出print(getArea2(4))
赋值给变量area=getArea2(4)
进行运算,例如一个面积要100元,一共需要多少元,可以price=getArea2(4)*100

参数的传递

参数值通常是根据参数的排列顺序来传递的,定义时的参数称为形参(还没有具体值,走个形式),调用时称为实参(有实际值了)。
形参和实参的名字不需要匹配
例如yushu(a,b)是计算a除以b后余数是多少的函数。调用时yushu(6,4)会根据顺序,第一个实参6传给第一个形参a第二个实参4传给第二个形参b。
此时实参和形参的数量必须一样,不然报错。

三、定义和调用

(1)调用一个函数前一定要先定义。否则会报错(如下)
在这里插入图片描述
(2)程序执行函数的先后顺序和定义的先后顺序无关,只和调用的先后顺序有关

在这里插入图片描述
(3)**定义可以在它被调用前的任意位置。**不一定要放在最前面。(但一般地,为了方便找到函数定义的位置,把它放前面了)
在这里插入图片描述

四、小练习

1、给出下列函数的输出值:
def makeOdd(n):
return 2*n+1
print(makeOdd(2))
n=3
print(makeOdd(n)
print(1 +makeOdd(3))

【参考答案】
5
7
8

2.写一个函数makeEven(n)。如果使用字符串作为参数,会发生什么情况?与实现makeodd(n)有哪些操作不同?

会报错
2*n+1中前面得到字符串重复两次的值,也是字符串,字符串和1不能相加

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ChatGLM-6B 主要代码分析 RotaryEmbedding
  • vulnhub靶机 DC-9(渗透测试详解)
  • 顺丰科技25届秋季校园招聘常见问题答疑及校招网申测评笔试题型分析SHL题库Verify测评
  • IO器件性能评估
  • 刷刷前端手写题
  • 理解JavaScript的基本概念和语法:让网页动起来
  • 【笔记】Android 多用户模式和用户类型
  • Codeforces Round 965 (Div. 2)
  • 如何对 GitLab 中文版进行升级?
  • 鸿蒙内核源码分析(进程管理篇) | 谁在管理内核资源?
  • cpu管理
  • Oracle(63)什么是临时表(Temporary Table)?
  • Dubbo,Zookeeper,NSF,Druid,CouchDB未授权访问漏洞(附带修复方法)
  • GORM 插入和批量插入操作介绍
  • EmguCV学习笔记 VB.Net 2.S 特别示例
  • __proto__ 和 prototype的关系
  • 【附node操作实例】redis简明入门系列—字符串类型
  • CentOS6 编译安装 redis-3.2.3
  • es的写入过程
  • fetch 从初识到应用
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • JS题目及答案整理
  • QQ浏览器x5内核的兼容性问题
  • Vue UI框架库开发介绍
  • 对象管理器(defineProperty)学习笔记
  • 利用DataURL技术在网页上显示图片
  • 前端知识点整理(待续)
  • 如何解决微信端直接跳WAP端
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 微信开源mars源码分析1—上层samples分析
  • 2017年360最后一道编程题
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​Spring Boot 分片上传文件
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (NSDate) 时间 (time )比较
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (六)vue-router+UI组件库
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (算法)区间调度问题
  • (五)网络优化与超参数选择--九五小庞
  • (一)RocketMQ初步认识
  • (转)大型网站架构演变和知识体系
  • .apk文件,IIS不支持下载解决
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .Net 高效开发之不可错过的实用工具
  • .NET下的多线程编程—1-线程机制概述
  • /bin/rm: 参数列表过长"的解决办法
  • /dev/sda2 is mounted; will not make a filesystem here!
  • ??javascript里的变量问题
  • @ModelAttribute注解使用
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹