python基础语法(五)

目录

  • 函数
    • 函数是什么
    • 语法格式
    • 函数参数
    • 函数返回值

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒个人主页
🥸🥸🥸C语言
🐿️🐿️🐿️C语言例题
🐣🐓🏀python

函数

函数是什么

编程中的函数和数学中的函数有一定的相似之处比如:
数学上的函数, 比如 y = sin x , x 取不同的值, y 就会得到不同的结果.
编程中的函数, 是一段 可以被重复使用的代码片段 .
代码示例: 求数列的和, 不使用函数

# 1. 求 1 - 100 的和
sum = 0
for i in range(1, 101) :sum += i
print(sum)# 2. 求 300 - 400 的和
sum = 0
for i in range(300, 401) :sum += i
print(sum)# 3. 求 1 - 1000 的和
sum = 0
for i in range(1, 1001) :sum += i
print(sum)

可以发现, 这几组代码基本是相似的, 只有一点点差异. 可以把重复代码提取出来, 做成一个函数
实际开发中, 复制粘贴是一种不太好的策略. 实际开发的重复代码可能存在几十份甚至上百份.一旦这个重复代码需要被修改, 那就得改几十次, 非常不便于维护,所以用函数可以少很多的代码

代码示例: 求 数列 的和, 使用函数

# 定义函数
def calcSum(beg, end) :sum = 0for i in range(beg, end + 1) :sum += iprint(sum)
# 调用函数
sum(1, 100)
sum(300, 400)
sum(1, 1000)

这样的代码看起来简洁并且易懂

语法格式

创建函数/定义函数

def 函数名(形参列表):函数体return 返回值

调用函数/使用函数

函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值

函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次

def test1():print('hello')
# 如果光是定义函数, 而不调用, 则不会执行

函数必须先定义, 再使用

test3() # 还没有执行到定义, 就先执行调用了, 此时就会报错.
def test3() :print('hello')

函数参数

在函数定义的时候, 可以在 ( ) 中指定 “形式参数” (简称 形参), 然后在调用的时候, 由调用者把 “实际参数”(简称 实参) 传递进去,这样就可以做到一份函数, 针对不同的数据进行计算处理

举个例子

def calcSum(beg, end):sum = 0for i in range(beg, end + 1):sum += iprint(sum)
sum(1, 100)
sum(300, 400)
sum(1, 1000)

上面的代码中, beg, end 就是函数的形参. 1, 100 / 300, 400 就是函数的实参
在执行 sum(1, 100) 的时候, 就相当于 beg = 1, end = 100 , 然后在函数内部就可以针对 1-100 进行运算
\在执行 sum(300, 400) 的时候, 就相当于 beg = 300, end = 400 , 然后在函数内部就可以针对300-400 进行运算
注意:
一个函数可以有一个形参, 也可以有多个形参, 也可以没有形参.
一个函数的形参有几个, 那么传递实参的时候也得传几个. 保证个数要匹配.

def test(a, b, c):print(a, b, c)
test(10)

和 C++ / Java 不同, Python 是动态类型的编程语言, 函数的形参不必指定参数类型. 换句话说, 一个函数可以支持多种不同类型的参数.

def test(a):print(a)
test(10)
test('hello')
test(True)

函数返回值

函数的参数可以视为是函数的 “输入”, 则函数的返回值, 就可以视为是函数的 “输出” (此处的 “输入”, “输出” 是更广义的输入输出, 不是单纯指通过控制台输入输出.我们可以把函数想象成一个 “工厂”. 工厂需要买入原材料, 进行加工, 并生产出产品.函数的参数就是原材料, 函数的返回值就是生产出的产品)

def calcSum(beg, end):sum = 0for i in range(beg, end + 1):sum += iprint(sum)
calc(1, 100)

可以转换成

def calcSum(beg, end):sum = 0for i in range(beg, end + 1):sum += ireturn sum
result = calcSum(1, 100)
print(result)

这两个代码的区别就在于, 前者直接在函数内部进行了打印, 后者则使用 return 语句把结果返回给函数调用者, 再由调用者负责打印

我们一般用第二种写法
因为实际开发中我们的一个通常的编程原则, 是 “逻辑和用户交互分离”.

而第一种写法的函数中, 既包含了计算逻辑, 又包含了和用户交互(打印到控制台上).

这种写法是不太好的, 如果后续我们需要的是把计算结果保存到文件中, 或者通过网络发送, 或者展示到图形化界面里, 那么第一种写法的函数,就难以胜任了

而第二种写法则专注于做计算逻辑, 不负责和用户交互. 那么就很容易把这个逻辑搭配不同的用户交互代码, 来实现不同的效果

一个函数中可以有多个 return 语句
例子:

# 判定是否是奇数
def isOdd(num):if num % 2 == 0:return Falseelse:return True
result = isOdd(10)
print(result)

执行到 return 语句, 函数就会立即执行结束, 回到调用位置
例子:

# 判定是否是奇数
def isOdd(num):if num % 2 == 0:return Falsereturn True
result = isOdd(10)
print(result)

代码解析:
如果 num 是偶数, 则进入 if 之后, 就会触发 return False , 也就不会继续执行 return True

一个函数是可以一次返回多个返回值的. 使用 , 来分割多个返回值.
例子:

def getPoint():x = 10y = 20return x, y
a, b = getPoint()

如果只想关注其中的部分返回值, 可以使用 _ 来忽略不想要的返回值
例子:

def getPoint():x = 10y = 20return x, y
_, b = getPoint()

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

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

相关文章

Springcloud中间件-----分布式搜索引擎 Elasticsearch

该笔记是根据黑马程序员的课来自己写了一遍的,b站有对应教程和资料 第一部分 第二部分 第三部分 预计看完跟着练习5小时足够 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能&#xff…

提升战斗力!吃鸡行家分享顶级游戏干货,助你轻松拿下绝地求生

作为吃鸡行家,我们都知道,在绝地求生中提高战斗力至关重要。今天我来分享一些独特的干货,帮助你成为顶级的吃鸡玩家,并分享一些方便吃鸡作图、装备皮肤库存展示和查询的技巧。 首先,让我们来谈谈绝地求生作图工具推荐。…

花体字母代表什么

26个英文字母的花体字如下: 大写:𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞&#x…

网络架构介绍

1 网络 7 层架构 7 层模型主要包括: 1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为1、0…

深度学习DAY3:激活函数

激活函数映射——引入非线性性质 h (Σ(W * X)b) yσ(h) 将h的值通过激活函数σ映射到一个特定的输出范围内的一个值,通常是[0, 1]或[-1, 1] 1 Sigmoid激活函数 逻辑回归LR模型的激活函数 Sigmoid函数&#xff0…

深度学习_2_数据处理

import os是一个Python的内置模块,用于与操作系统进行交互。通过导入os模块,你可以使用其中提供的函数和方法来执行各种与操作系统相关的任务。 import osos.makedirs(os.path.join(.., date), exist_okTrue)##将创建一个名为date的文件夹,位…

LeetCode【279】完全平方数

题目: 思路: https://www.acwing.com/solution/leetcode/content/114877/ 1、给定数字,是由若干个完全平方数组合而成,求使用的最小的完全平方数的个数,如果这些完全平方数已知,则完全等同于百元百鸡问题…

VIM指令

vim的工作模式 vim一般有6种工作模式。 普通模式:使用vim打开一个文件时默认模式,也叫命令模式,允许用户通过各种命令浏览代码、滚屏等操作。 插入模式:也可以叫做编辑模式,在普通模式下敲击 i 、a 或 o 就进入插入模…

UE5.3.1 无法创建C++ 工程问题解决方法

UE5.3.1 创建C工程提示DONET问题,直接下载最新版本的NET8.0的SDK安装即可解决! 下载地址:下载 .NET 8.0 SDK (v8.0.100-rc.2) - Windows x64 Installer

【Nginx31】Nginx学习:代理模块(五)变量与其它配置

Nginx学习:代理模块(五)变量与其它配置 Nginx 在不同的模块中,会提供一些变量,这个我们之前应该已经看过很多了。特别是 HTTP 核心模块中,提供了非常多的变量可以供我们使用。而在 Proxy 模块中&#xff0c…

Java基于SpringBoot的高校招生系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介系统设计思路1 数据库设计2 系统整体设计 系统详细设计1系统功能模块2. 管理员功能模块3学生…

适用于嵌入式单片机的差分升级通用库

转至:痞子衡嵌入式半月刊:第 81 期 1、mcu_bsdiff_upgrade - 适用于嵌入式单片机的差分升级通用库 mcu_bsdiff_upgrade 是一款适用于嵌入式单片机的差分升级库,通用所有单片机,如stm32、华大、复旦微、瑞萨等。适合嵌入式的差分升…

循环神经网络-学习总结1

一、 RNN 1 序列模型 序列数据: 预测明天的股价要比过去的股价更困难,尽管两者都只是估计一个数字。 毕竟,先见之明比事后诸葛亮难得多。 在统计学中,前者(对超出已知观测范围进行预测)称为外推法&#…

camera bringup介绍

目录 camera bringup需要做什么 camera硬件包括 camera硬件连接关系 camera使用的通信接口 camera sensor cmos sensor 色彩滤镜 sensor输出的分辨率 曝光控制-快门 曝光控制-曝光时间 曝光时间如何控制 曝光控制-帧率 曝光控制-增益 手动曝光 手动设置曝光-长曝…

bootz启动 Linux内核过程总结

一. bootz启动Linux uboot 启动 Linux内核使用bootz命令。当然还有其它的启动命令,例如,bootm命令等等。 前面几篇文章分析 bootz命令启动 Linux内核的过程中涉及的几个重要函数。 bootz启动 Linux内核过程中涉及的全局变量images_凌肖战的博客-CSDN博…

云原生周刊:Docker 推出 Docker Debug | 2023.10.9

开源项目推荐 SchemaHero SchemaHero 是一个 Kubernetes Operator,用于各种数据库的声明式架构管理。SchemaHero 有以下目标: 数据库表模式可以表示为可以部署到集群的 Kubernetes 资源。可以编辑数据库模式并将其部署到集群。SchemaHero 将计算所需的…

uniapp微信小程序之分包异步化之组件分包

一、组件分包异步化解决的问题 日渐增加的通用组件造成的主包空间不足; 提升小程序访问速度,降低白屏率; 二、开启组件分包异步化过程中遇到的问题 如何进行占位组件配置; 如何解决通过$refs访问异步组件报错; 如何判断所有异步组件都已加载完毕; 多分包组件之间互相调用…

yum apt pip 阿里云源

centos yum 阿里云源 # 备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# centos 6 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo curl -o /etc/yum.repos.d/CentOS-Base.repo h…

springboot json在线转换为实体类

json字符串映射到一个实体类。 这里有一个在线转换工具 http://www.bejson.com/json2javapojo/new/ 截图如下:

html与css知识点

html 元素分类 块级元素 1.独占一行,宽度为父元素宽度的100% 2.可以设置宽高 常见块级元素 h1~h6 div ul ol li dl dt dd table form header footer section nav article aside 行内元素 1.一行显示多个 2.不能设置宽高,宽高由元素内容撑开 常见行内…