PYTHON知识点学习-函数(下)

news2025/1/24 18:02:15

🌈write in front🌈
🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由 Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠
📝个人主页:Aileen_0v0🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0🧸的PYTHON学习系列专栏——CSDN博客
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本

目录

函数递归概念及例子🍈

1.1递归代码两要素🍉:                                                                           

1.2递归的缺点🍉:

1.3递归的优点🍉:

函数参数🍓

2.1函数参数默认值🍅

2.2默认参数使用的注意事项🍅

2.3函数的关键字参数🍅

函数总结🍭


函数递归概念及例子🍈

函数递归:就是一个函数,自己调用自己

#写一个函数,求 n 的阶乘(n 是正整数)
def f(n):
    result = 1
    for i in range (1,n+1):
        result *= i
    return result


print(f(5))
#-----------------------------------
#结果:120
#利用递归方法求n的阶乘
#首先先思考
#递推公式:n! => n * (n - 1)!
#结束条件:1! => 1
def f(n):
    if n == 1:
        return 1
    return n * f(n - 1)

print(f(5))

递归的代码,虽然很多时候看起来写法很简单,但是执行过程可能会非常复杂!!

下面是利用debug调试的过程:

1.1递归代码两要素🍉:                                                                               

递归代码两要素数学归纳法
1.递归条件1.初始条件
2.递归的递推公式2.递推公式
递归代码两要素可以对比数学归纳法记忆

1.2递归的缺点🍉:

1.执行过程非常复杂,难以理解~ ~

2.递归代码容易出现" 栈溢出 "的情况~  "栈":指的是函数的调用栈

  3.递归代码一般可以转换成等价的循环代码~ ~

     并且,循环的版本通常运行速度要比递归版本有优势~ ~(函数调用也是有开销的)

1.3递归的优点🍉:

代码非常简洁!!尤其是处理一些"问题本身就是通过递归的方式定义的"

数据结构~二叉树~ ~

函数参数🍓

2.1函数参数默认值🍅

python中的函数,可以给形参指定默认值
带有默认值的参数,可以在调用的时候不传参.
def add(x,y):
    print(f"x = {x}, y = {y}")  #在函数内部加上打印信息方便我们进行调试~ ~
    return x + y

result = add(10,20)
print(result)

上面的在函数内部加上打印信息方便我们进行调试~ ~

但是,像这种调试信息,希望在正式发布的时候不要出现,只是在调试阶段才有~ ~

所以我们可以给他指定一个默认参数debug=False~

这个形参的默认值就是False

带有默认值的形参 就可以在调用函数的时候,不必传参~

#参数默认值
#python中的函数,可以给形参指定默认值
#带有默认值的参数,可以在调用的时候不传参.
def add(x,y,debug=False):  #指定一个默认参数debug=False
    if debug:
        print(f"x = {x}, y = {y}")  #在函数内部加上打印信息方便我们进行调试~ ~
    return x + y

result = add(10,20)
print(result)
#---------------------------
#运行结果:30

我们可以通过手动传参影响这个默认值~

通过这样的默认值,就可以让函数设计更灵活~ ~

2.2默认参数使用的注意事项🍅

Python中要求带有默认值的形参,得在形参列表的后面~ ~

而不能在 前面 / 中间!

就算是多个带有默认参数的形参,这些都得放到后面!!

2.3函数的关键字参数🍅

按照先后顺序来传参~ ~ 

这种传参风格,称为"位置参数"-------->这种方式是各个编程语言中最普遍的传参方式

现在我要介绍的是另一种方式--------->"关键字传参":按照形参的名字来进行传参!

#关键字传参
def test(x,y):
    print(f"x={x}")
    print(f"x={y}")

test(x=10,y=20)
test(y=100,x=200)

通过上面的代码,可以非常明显地告诉程序🐒,你的参数要传给谁!!

另外可以无视形参和实参的顺序!!

此外,位置参数 和 关键字参数 还能混着用,只不过混着用的时候要求,位置参数在前,关键字参数在后~ ~

关键字参数,一般也是搭配着默认参数来使用的~

一个函数可以提供很多参数,来实现对这个函数内部功能做出一些调整设定~ ~

为降低调用者的使用成本,就可以把大部分参数设定出默认值~

当调用者需要调整其中一部分参数时,就可以搭配关键字参数来进行操作~ ~

函数总结🍭


🍒函数的知识点就分享到这里啦~🍒

🍒喜欢就一键三连支持一下吧~🍒

🍒谢谢家人们!🍒

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

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

相关文章

Mac安装brew、mysql、redis

mac安装brew mac安装brewmac安装mysql并配置开机启动mac安装redis并配置开机启动 mac安装brew 第一步:执行. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"第二步:输入开机密码 第三…

element+vue table表格全部数据和已选数据联动

1.组件TableChoose <template><div class"tableChooseBox"><div class"tableRow"><div class"tableCard"><div class"tableHeadTip">全部{{ labelTitle }}</div><slot name"body" …

《奥本海默》热映,Sam Altman 会是下个他吗?

撰文&#xff1a;Nathan Gardels 来源&#xff1a;Noema 治理可能摧毁社会的技术。 图片来源&#xff1a;由无界AI生成 电影导演克里斯托弗 - 诺兰&#xff08;Christopher Nolan&#xff09;说&#xff0c;他曾与正在经历“奥本海默时刻”的人工智能科学家交谈过&#xff0c;他…

JavaScript 实现树形结构和一维数组互相转换

背景 树形结构和一维数组是开发中很容易碰到的情况&#xff0c;也是面试中很容易碰到的手撕题目 实现 一、一维数组转树形结构 FROM const source [{ id: 1, name: "张三", pid: 0 },{ id: 2, name: "李四", pid: 1 },{ id: 3, name: "王五&qu…

【【STM32--28--IO引脚的复用功能】】

STM32–28–IO引脚的复用功能 STM32的IO复用功能 何为复用? 我们先了解一下何为通用 IO端口的输入或输出是由GPIO外设控制&#xff0c;我们称之为通用 复用&#xff1a; IO端口的输入或者是输出是由其他非GPIO外设控制就像经常说的USART 由 DR寄存器进行输出 STM32的IO复用功…

Python学习教程:集合操作的详细教程

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 Python中有两种可以遍历的容器类型&#xff1a; 序列类型&#xff1a;包含字符串、列表、元祖 序列类型是线性表&#xff0c;就像数组一样&#xff0c;是在内存中开辟一块连续空间&#xff0c;连续存储的&#xff0c; 那么查找…

前端vue3+ts架构

1、vue creat 项目名称 选择自定义 选择需要的依赖 选择vue3 一路enter&#xff0c;选择eslistprettier 继续enter&#xff0c;等待安装 按步骤操作&#xff0c;项目启动成功 2、vscode安装5款插件 2、代码保存自动格式化&#xff0c;保证每个开发人员代码一致&#xff0c;根目…

震惊!靠「职业骗薪」,在上海买了别墅

昨天在知乎热榜上看到一条新闻&#xff0c;震惊之余&#xff0c;也有点可叹可悲的感觉。 根据经济观察报的报道&#xff1a;职业骗薪者&#xff0c;3 年在沪买别墅&#xff0c;同时供职 16 家公司却从不上班&#xff0c;落网时她还在面试。 新闻上说&#xff1a;管悦被警察抓获…

Bert和LSTM:情绪分类中的表现

一、说明 这篇文章的目的是评估和比较 2 种深度学习算法&#xff08;BERT 和 LSTM&#xff09;在情感分析中进行二元分类的性能。评估将侧重于两个关键指标&#xff1a;准确性&#xff08;衡量整体分类性能&#xff09;和训练时间&#xff08;评估每种算法的效率&#xff09;。…

OpenCV(十六):高斯图像金字塔

目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级&#xff0c;每个层级都是原始图像的模糊和降采样版本。 以下是高斯…

系统中出现大量不可中断进程和僵尸进程(理论)

一 进程状态 当 iowait 升高时&#xff0c;进程很可能因为得不到硬件的响应&#xff0c;而长时间处于不可中断状态。从 ps 或者 top 命令的输出中&#xff0c;你可以发现它们都处于 D 状态&#xff0c;也就是不可中断状态&#xff08;Uninterruptible Sleep&#xff09;。 R …

Python Opencv实践 - 轮廓检测

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/map.jpg") print(img.shape) plt.imshow(img[:,:,::-1])#Canny边缘检测 edges cv.Canny(img, 127, 255, 0) plt.imshow(edges, cmapplt.cm.gray)#查找轮廓 #c…

【C++代码】找出字符串中第一个匹配项的下标,重复的子字符串--代码随想录

题目&#xff1a;找出字符串中第一个匹配项的下标 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 题…

地理测绘基础知识(4) 照射计算上篇

我们接着上一篇来推导。 照射计算&#xff0c;是一种常用的三维几何计算。已知一个光源的光强图&#xff0c;计算光源投射到地表各处的功率密度。这种计算需求可以直观的理解为计算已知位置、指向、聚光特性的手电筒&#xff0c;计算地表某地点强度。当然&#xff0c;如果穷尽地…

mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere

最近发现执行mysql st_distance_sphere报错了。 报错的信息是Incorrect arguments to st_distance_sphere。 最开始以为是跟mysql的版本有关系&#xff0c;所以看了下自己本地的mysql版本&#xff0c;执行一下sql select version(); 发现自己本地的mysql版本是 5.7.30 这…

FFmpeg报错:Connection to tcp://XXX?timeout=XXX failed: Connection timed out

一、现象 通过FFmpeg&#xff08;FFmpeg的版本是5.0.3&#xff09;拉摄像机的rtsp流获取音视频数据&#xff0c;执行命令&#xff1a; ./ffmpeg -timeout 3000000 -i "rtsp://172.16.17.156/stream/video5" 报错&#xff1a;Connection to tcp://XXX?timeoutXXX …

JavaScript 生成 16: 9 宽高比

这篇文章只是对 for 循环一个简单应用&#xff0c;没有什么知识含量。 可以跳过这篇文章。 只是我用来保存一下我的代码&#xff0c;保存在本地我嫌碍眼&#xff0c;总想把他删了。 正文部分 公式&#xff1a;其中 width 表示宽度&#xff0c;height 表示高度 16 9 w i d t…

CLIP改进工作串讲(bryanyzhu)内容记录

文章目录 分割Language-driven semantic segmentation - ICLR2022GroupViT: Semantic Segmentation Emerges from Text Supervision 目标检测ViLD : Open-vocabulary object detection via vision and language knowledge distillation 视觉定位GLIP:Grounded Language-Image P…

VsCode搭建Java开发环境 vscode搭建java开发环境 vscode springboot 搭建springboot

VsCode搭建Java开发环境 vscode搭建java开发环境 vscode springboot 搭建springboot VsCode java开发截图1、安装Java 环境相关插件2、安装 Spring 插件3、安装 Mybatis 插件第一个 vsc-mybatis第二个 mybatisX 4、安装Maven环境4.1、安装Maven环境4.2、VsCode配置Maven环境 5、…

使用Python进行Base64编码和解码

假设您有一个想要通过网络传输的二进制图像文件。您很惊讶对方没有正确接收该文件 - 该文件只是包含奇怪的字符&#xff01; 嗯&#xff0c;您似乎试图以原始位和字节格式发送文件&#xff0c;而所使用的媒体是为流文本而设计的。 避免此类问题的解决方法是什么&#xff1f;答…