Python语法(二)——函数

文章目录

  • 函数
    • 语法格式
    • 函数参数
    • 链式调用
    • 嵌套调用
    • 函数递归
    • 变量作用域

函数

一段可以被重复使用的代码片段

求数列的和, 不使用函数

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

这几组代码基本是相似的, 只有一点点差异. 可以把重复代码提取出来, 做成一个函数

def calcSum(begin, end):sum = 0for i in range(begin, end + 1):sum += ireturn sum print(calcSum(1, 100))    # 5050
print(calcSum(300, 400))  # 35350
print(calcSum(1, 1000))   # 500500

语法格式

# 创建函数/定义函数
def 函数名(形参列表):函数体return 返回值# 调用函数/使用函数
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值

函数必须先定义, 再使用

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

函数参数

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

  • 一个函数可以有一个形参, 也可以有多个形参, 也可以没有形参
  • 一个函数的形参有几个, 那么传递实参的时候也得传几个. 保证个数要匹配

链式调用

把一个函数的返回值, 作为另一个函数的参数, 这种操作称为 链式调用

# 判定是否是奇数
def isOdd(num):if num % 2 == 0:return Falseelse:return Trueresult = isOdd(10)
print(result)# 也可以简化写作
print(isOdd(10))

嵌套调用

一个函数里面可以嵌套调用任意多个函数

def a():print("函数 a")def b():print("函数 b")a()def c():print("函数 c")b()def d():print("函数 d")c()d()

在这里插入图片描述

def a():print("函数 a")def b():a()print("函数 b")def c():b()print("函数 c")def d():c()print("函数 d")d()

在这里插入图片描述

函数递归

递归是 嵌套调用 中的一种特殊情况, 即一个函数嵌套调用自己

# 递归计算 5!
def factor(n):if n == 1:return 1return n * factor(n - 1)result = factor(5)
print(result)

**注意: **

  • 存在递归结束条件. 比如 if n == 1就是结束条件. 当 n 为 1 的时候, 递归就结束了
  • 每次递归的时候, 要保证函数的实参是逐渐逼近结束条件的

变量作用域

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

在这个代码中, 函数内部存在 x, y, 函数外部也有 x, y.
但是这两组 x, y 不是相同的变量, 而只是恰好有一样的名字.


变量只能在所在的函数内部生效

def getPoint():x = 10y = 20return x, ygetPoint()
print(x, y)

在这里插入图片描述

在不同的作用域中, 允许存在同名的变量

x = 20def test():x = 10print(f'函数内部 x = {x}')test()
print(f'函数外部 x = {x}')

在这里插入图片描述

如果函数内部尝试访问的变量在局部不存在, 就会尝试去全局作用域中查找

x = 20def test():print(f'x = {x}')test()

在这里插入图片描述

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

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

相关文章

NASA:ATLAS/ICESat-2 L3A 陆地和植被高度速览,第 6 版

目录 简介 参数 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3A 陆地和植被高度速览,第 6 版 ATLAS/ICESat-2 L3A Land and Vegetation Height Quick Look V006 简介 ATL08QL 是 ATL08 的快速查看版本。 一旦 ATL08 的最终文件可…

MongoDB在Linux系统中的安装与配置指南

在这篇文章中,我们将介绍如何在CentOS 7服务器上安装MongoDB,并通过DataX将数据从MongoDB迁移到MySQL数据库。这将包括MongoDB的安装、配置、数据准备以及使用DataX进行数据迁移的详细步骤。 MongoDB简介 MongoDB是一个高性能、开源、无模式的文档型数据…

[Java并发编程] synchronized(含与ReentrantLock的区别)

文章目录 1. synchronized与ReentrantLock的区别2. synchronized的作用3. synchronized的使用3.1 修饰实例方法,作用于当前实例,进入同步代码前需要先获取实例的锁3.2 修饰静态方法,作用于类的Class对象,进入修饰的静态方法前需要…

数据结构:二叉树(2)

ps:爆更第二期 前言 普通的树的实用价值比较小,将树更一步特殊化成二叉树,将获得更多的特殊性质。 例如搜索二叉树,红黑树等。 这篇博文主要介绍二叉树的基础知识,进阶版高级二叉树,后续会持续更新。 二叉…

RK3568平台(基础篇)万用表的使用

一.万用表的通断判断 万用表两个笔头的插法:黑笔头是插在COM的孔里面,红色笔头可以插在其他的三个孔里面,20A和mA分别用来测电流,另外一个孔可以用来测其他(电压 电阻)。 以下这个三角符号(像wifi一样的)可以用来测通断: 使用万用表的红笔和黑笔进行短接,这时候两端…

PAT (Advanced Level) Practice——1020Tree Traversals

链接: 1020 Tree Traversals - PAT (Advanced Level) Practice (pintia.cn) 题目大意: 首先给出一个整数n,表示序列一共有多少个数。接下来给出一棵树的后序遍历和中序遍历,根据后序遍历和中序遍历给出层序遍历。 题解&#x…

【技术调研】三维(7)-Unity基础笔记

安装 ​ 最好使用长期维护版本。 创建项目 ​ 略 窗口布局 Hierarchy:层级面板,展示当前打开的场景里面有哪些物体。 Scene:场景面板,显示当前场景的样子 Game:游戏面板,场景运行的时候的样子 Inspector:检视面板(或属性面板),查看一个游戏物体由哪些组件组成。 …

德勤校招网申笔试综合能力测试SHL题库与面试真题攻略

德勤的综合能力测试(General Ability)是其校园招聘在线测评的关键环节,旨在评估应聘者的多项认知能力。以下是对这部分内容的全面整合: 综合能力测试(General Ability) 测试时长为46分钟,包含…

9.3Otsu阈值分割

基本概念 在OpenCV中,Otsu阈值分割是一种全局阈值分割方法,但它会自动选择一个最佳的阈值来分割图像,这个阈值是通过最小化类内方差或等价地最大化类间方差来确定的。OpenCV提供了cv::threshold函数来实现这一功能,其中可以指定c…

线段树-认识线段树+实现线段树

一、认识线段树 1、定义 线段树是平衡二叉树 2、特点 线段树将一个区间划分成单元区间,每个单元区间对应线段树中的一个结点 3、应用 频繁查找一个数组中指定区间内的和、最值 学了动态规划后使用迭代要好过使用递归,因为递归每次进去是有空间损耗…

如何在qtcreator debugger上运行gdb命令

How to run gdb commands from qtcreator debugger? | Qt Forum gdb 调试基础操作和在qtcreator中使用gdb调试_qt gdb-CSDN博客 输出变量名: p变量名 ------------ gdb调试技巧(二)———— gdb 条件断点_gdb设置带函数入参判断的条件断点…

UE Asset Batch Duplication插件

目录 准备工作 "Scripting library" 三个最重要的功能(前两个是UEditorUtilityLibrary中的) 自动创建声明: TArray T 的含义 F 的含义 Live Coding (Ctrlalt F11) Live Coding 的工作流程&#xff…

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型

时序预测|基于灰狼优化LightGBM的时间序列预测Matlab程序GWO-LightGBM 单变量和多变量 含基础模型 文章目录 一、基本原理原理概述流程注意事项 二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 时序预测中使用灰狼优化(GWO)结合LightGBM的…

Hash-通过哈希桶解决Hash冲突

哈希桶 基本结构 template<class T> struct HashNode {T _data;HashNode<T>* _next; }; template<class K,class T,class KeyOfT> class HashTable {typedef HashNode<T> Node; public:private:vector<Node*> _tables;size_t _num; }; insert …

《飞机大战游戏》实训项目(Java GUI实现)(设计模式)(简易)

目录 一、最终实现后&#xff0c;效果如下。 &#xff08;1&#xff09;简单介绍本游戏项目&#xff08;待完善&#xff09; &#xff08;2&#xff09;运行效果图&#xff08;具体大家自己可以试&#xff09; 初始运行情况。 手动更换背景图。 通过子弹攻击敌机&#xff0c;累…

java之单链表的基本概念及创建

1.链表的概念: 链表是一种 物理存储结构上非连续 存储结构&#xff0c;数据元素的 逻辑顺序 是通过链表中的 引用链接 次序实现的 。 组成结构: 由一系列节点组成&#xff0c;每个节点包含数据域和指向下一个节点的指针。 优点: 动态大小&#xff0c;易于插入和删除操作。 缺点…

无人机集群路径规划:​北方苍鹰优化算法(Northern Goshawk Optimization,NGO)​求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径&#xff0c;使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一&#xff0c;它可以通过算法和模型来确定无人机的航迹&#xff0c;以避开障碍物、优化…

51单片机——LED灯篇

一、LED与单片机P2管脚相连 二、点亮一个LED灯 #include <STC89C5xRC.H> void main() { P2 0xFE; //1111 1110 } P2有8个管脚&#xff0c;对应8个二进制位。 LED灯右侧接电源是正极&#xff08;1&#xff09;&#xff0c;左侧给负极&#xff08;0&#xff09;即可…

Web_php_include 攻防世界

<?php show_source(__FILE__); echo $_GET[hello]; $page$_GET[page]; while (strstr($page, "php://")) { 以是否检测到php://为判断执行循环$pagestr_replace("php://", "", $page);//传入空值&#xff0c;替换 } include($page); ?&g…

第四范式发布AIGS Builder企业级软件重构助手,以生成式AI重构企业软件

产品上新 Product Release 今天&#xff0c;第四范式发布企业级软件重构助手——AIGS Builder&#xff0c;可快速重构软件交互体验。传统的企业软件开发&#xff0c;每次迭代通常要以月计。基于第四范式AIGS Builder大模型&#xff0c;用生成式Agent替代复杂的界面&#xff0c;…