Python 无废话-基础知识函数详解

news2024/11/16 19:46:16

函数定义

函数是一段可重复使用的代码块,用于实现特定的功能

类似的前面已学过print(),len(),input(),str(),list(),tuple()等内置函数

自定义函数

内置函数是python类库的已定义好的函数,如果某些功能不能满足时,需要我们自定义函数,组织好代码,重复使用。

函数的定义结构

def 函数名(参数1, 参数2, ...):

          # 函数体 代码块

         return 返回值

函数调用

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

语法解析

1)def 关键字用于定义 函数
2)函数名 是你给函数起的名字,应该符合Python命名 规范
3)(参数1, 参数2, ...) 是函数的参数列表 ,参数 是你传递给函数的输入
4)函数 体 是包含在函数内部的一系列语句和 操作 , 函数的实际执行 逻辑
5)代码块 是函数体内的一段缩进的代码,用于表示函数体内的代码 范围
6)return 语句用于指定函数的返回值 , 可以选择性地返回一个或多个值

动手自定义函数 

实现len自定义函数

函数参数

函数参数是用于接收函数调用时传递的数据或变量。在Python中,函数参数有多种类型,包括以下几种:

1)位置参数(Positional Arguments) :位置参数 按照定义时的顺序来传递和接收,调用函数时必须按照参数的顺序传递对应的值。

def add(a, b):

         return a + b

result = add(3, 5)

print(result)

2)默认参数(Default Arguments):函数定义时就已经赋予了一个默认值,如果调用函数时没有传递该参数的值,则会使用默认值。

def greet(name, message="Hello"):

        print(message, name)

greet(李小龙) # 输出:李小龙

greet(李小龙, “Hi”) # 输出:Hi 李小龙

3)关键字参数(Keyword Arguments):关键字参数是根据参数名来传递和接收的,不需要按照位置顺序

def multiply(a, b):

           return a * b

result = multiply(b=8, a=2)

 print(result) # 输出16

4)不定长参数:

    *args 参数:用于接收不定数量的位置参数,传递的参数会被封装成一个元组(tuple)

    **kwargs 参数:用于接收不定数量的关键字参数,传递的参数会被封装成一个字典(dictionary)

def add_numbers(*args):

               sum = 0

               for num in args:

                     sum += num

return sum

result = add_numbers(1, 2, 3, 4, 5)

print(result) # 输出15

def print_person_info(**kwargs):

  for key, value in kwargs.items():

  print(key + ": " + value)

# 输出: # name:李小龙# age: 25 # city: Beijing

print_person_info(name="李小龙", age="25", city="佛山")

函数返回值

一般来说,函数调用求值的结果,称为函数的“返回值”,函数可以通过使用关键字return来返回一个值或多个值。

函数返回值

局部变量&全局变量

局部变量是在函数内部定义并且只能在函数内部使用的变量。其作用范围被限制在函数内部,函数执行完毕后,局部变量会被销毁。局部变量只能在所属的函数内访问,其他函数无法直接访问该变量。

全局变量是在函数外部定义的变量,其可以在函数内部和外部访问。全局变量的作用范围是整个程序,在任何地方都可以使用。但是,在函数内部如果要修改全局变量的值,需要用到global关键字

函数嵌套

函数嵌套指的是在一个函数内部定义另一个函数。这种嵌套定义的函数称为内部函数或嵌套函数。

函数嵌套在Python中有以下几个特点:

1. 内部函数可以访问外部函数的局部变量,但外部函数不能访问内部函数的局部变量。这种特性被称为 " 闭包 "
2. 内部函数可以直接使用外部函数的参数。
3. 内部函数可以访问外部函数的命名空间,即内部函数可以使用外部函数的变量和定义的其他函数。
4. 通过函数嵌套可以实现代码的模块化和封装,提高代码的可读性和重用性。

lambda匿名函数

匿名函数,也称为lambda函数,在Python中是一种特殊的函数形式,可以在没有定义函数名称的情况下创建一个函数。它通常用于只在某个函数内部使用一次的简单函数。

匿名函数的定义语法如下:

lambda 参数列表: 表达式

参数列表是匿名函数的参数,可以是零个或多个参数,多个参数之间使用逗号分隔。表达式是匿名函数的执行体,表示对参数进行计算或操作的逻辑。

求两个数的和

sum = lambda x, y: x + y

print(sum(3, 5)) # 输出8

递归函数

递归函数是一种通过自身调用来解决问题的函数。可以使用递归来实现一个函数调用自身的过程。

def factorial(n):

    # 基线条件

    if n == 0:

        return 1

    # 递归步骤

    return n * factorial(n - 1)

递归函数factorial计算一个整数n的阶乘。当n为0时,满足基线条件,函数直接返回结果1。否则,递归调用factorial(n-1)来解决规模更小的子问题,然后将结果与n相乘并返回。

注意,在使用递归函数时,需要确保递归能够终止,即基线条件一定会被满足。否则,递归函数将无限循环调用,导致程序崩溃。

函数总结

函数是一段封装了特定功能的可重复使用的代码块。通过函数,我们可以将代码模块化,提高代码的可读性、可维护性和复用性。

函数可以存在于模块中,通过import语句导入并使用。

Python标准库和第三方库提供了大量的函数,可以用于各种任务和领域。

通过合理地使用函数,我们可以提高代码的复用性和可维护性。函数使得代码结构更清晰、可读性更高,并且可以将复杂的问题分解为简单的子问题,提供了更好的代码组织和管理方式。

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

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

相关文章

迄今为止丨ChatGPT最强指令,一个可以让机器人生成机器人的Prompt,价值百万!

原文: 【ChatGPT调教】ChatGPT最强指令、让机器人为你生成机器人!-CSDN博客 说明:最好看原文 昨天,发现了一条可能是迄今为止,我见过最牛的,商业价值最高的ChatGPT指令。 通过这条指令,可以…

推荐系统实践 笔记

诸神缄默不语-个人CSDN博文目录 这是我2020年写的笔记,我从印象笔记搬过来公开。 如果那年还在读本科的同学也许有印象,那年美赛出了道根据电商评论给商户提建议的题。其实这件事跟推荐系统关系不大,但我们当时病急乱投医,我打开…

Golang interface 接口的应用场景 使用细节

应用场景介绍 对初学者讲,理解接口的概念不算太难,难的是不知道什么时候使用接口,下面我例举几个应用场景: 1.说现在美国要制造轰炸机,武装直升机,专家只需把飞机需要的功能/规格定下来即可,然…

​“FTX 传奇曾经大佬 SBF 的审判:密友出庭指控,陪审团选择延长,听证会揭示 “

备受期待的 FTX 创始人 SBF 刑事审判开始,引发了检方和辩方之间关于他在加密货币交易所垮台中所扮演角色的冲突。美国助理检察官塞恩雷恩(ThaneRehn)将 SBF 描述为一位前雄心勃勃的人物,过着建立在欺骗基础上的奢华生活方式。 SBF 的律师马克科…

逻辑回归评分卡

文章目录 一、基础知识点(1)逻辑回归表达式(2)sigmoid函数的导数损失函数(Cross-entropy, 交叉熵损失函数)交叉熵求导准确率计算评估指标 二、导入库和数据集导入库读取数据 三、分析与训练四、模型评价ROC曲线KS值再做特征筛选生成报告 五、行为评分卡模型表现总结 一、基础知…

【数据结构】初探时间与空间复杂度:算法评估与优化的基础

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:数据结构 🔥该文章主要了解算法的时间复杂度与空间复杂度等相关知识。 目录: 🌏 时间复杂度&#x1f52d…

基于自私羊群优化的BP神经网络(分类应用) - 附代码

基于自私羊群优化的BP神经网络(分类应用) - 附代码 文章目录 基于自私羊群优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.自私羊群优化BP神经网络3.1 BP神经网络参数设置3.2 自私羊群算法应用 4.测试结果…

苹果手机怎么备份所有数据?2023年iPhone 15数据备份常用的3种方法!

当苹果手机需要进行刷机、恢复出厂设置、降级iOS系统等操作时,我们需要将自己的iPhone数据提前进行备份。 特别是在苹果发布新iOS系统时,总有一些小伙伴因为升降级系统,而导致了重要数据的丢失。 iPhone中储存着重要的照片、通讯录、文件等数…

STM32--人体红外感应开关

本文主要介绍基于STM32F103C8T6和人体红外感应开关实现的控制算法 简介 人体红外模块选用HC-SR501人体红外传感器,人体红外感应的主要器件为人体热释电红外传感器。人体都有恒定的体温,一般在36~37度,所以会发出特定波长的红外线&#xff0…

windows系统服务管理命令sc

sc可以用于管理系统服务、计划任务、系统日志等方面,是不可或缺的神器。 基本用法 在命令提示符下输入sc命令,然后按回车键。 上图展示的是sc命令的使用方法,支持哪些参数实现哪些功能 要查看系统所有服务列表,包括它们是否正在…

基于入侵杂草优化的BP神经网络(分类应用) - 附代码

基于入侵杂草优化的BP神经网络(分类应用) - 附代码 文章目录 基于入侵杂草优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.入侵杂草优化BP神经网络3.1 BP神经网络参数设置3.2 入侵杂草算法应用 4.测试结果…

Mac版快速切换工具:One Switch中文 for mac

One Switch是一款功能强大、体验极简的Mac菜单栏工具,适合需要频繁切换系统设置和启动应用程序的用户使用。通过它,用户可以更方便地完成日常操作,提高工作效率。 快速访问工具:One Switch提供了一个便捷的菜单栏图标,…

1700*C. Number of Ways(贪心前缀和)

Problem - 466C - Codeforces Number of Ways - 洛谷 解析: 首先判断所有数总和是否能被三整除。 之后遍历前缀和数组,如果某个位置的前缀和等于sum/3,则记录。 某个位置前缀和等于sum/3*2则记录答案。 注意由于分成三份,所以同…

出去重复的列值(关键词:distinct)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: select distinct 列名 from 表名; 案例:查询emp表中,员工的职位(job),并去重…

第八章 排序 五、快速排序

目录 一、算法思想 二、例子 三、代码实现 四、验证 五、算法效率分析 1、时间复杂度 ​编辑 2、空间复杂度 3、小结 4、优化思路 5、稳定性 六、总结 一、算法思想 首先,选取一个数作为序列的基准数,分别定义序列的第一个数和最后一个数为l…

Go Gin Gorm Casbin权限管理实现 - 1. Casbin概念介绍以及库使用

1. 核心概念 核心配置中含两部分模型配置以及策略配置,给出两个示范配置,在此基础上对实际请求进行分析。 1.1 Model 模型文件,存储了请求定义(request_definition),策略定义(policy_definition),匹配规则(matchers)&a…

黑豹程序员-架构师学习路线图-百科:AJAX

文章目录 1、什么是AJAX2、发展历史3、工作原理4、一句话概括 1、什么是AJAX Ajax即Asynchronous(呃森可乐思) Javascript And XML(异步JavaScript和XML) 在 2005年被Jesse James Garrett(杰西詹姆斯加勒特&#xff09…

Yolov5 ONNX导出报错: export failure: Unsupported ONNX opset version: 17

目录 1.问题描述 1.1 报错1 : 1.2 报错 2 2.解决方案 介绍 ONNX(Open Neural Network Exchange)是一个用于机器学习模型的开放式标准,它旨在使不同的深度学习框架能够将训练好的模型在不同平台上无缝运行。它是由Microsoft和F…

第二课 前缀和、差分、双指针扫描

文章目录 第二课 前缀和、差分、双指针扫描lc1.两数之和--简单题目描述代码展示 lc11.盛最多水的容器--中等题目描述代码展示 lc15.三数之和--中等题目描述代码展示 lc42.接雨水--困难题目描述代码展示 lc53.最大子数组和--中等题目描述代码展示 第二课 前缀和、差分、双指针扫…

基于goravel的CMS,企业官网通用golang后台管理系统

2023年9月11日10:47:00 仓库地址: https://gitee.com/open-php/zx-goravel-website 框架介绍 Goravel SCUI 后端开发组件 go 1.20 Goravel 1.13 数据库 sql(使用最新日期文件) goravel\doc\sql_bak mysql 8.0 前端开发组件 scui 1.6.9 node v14.21.3 效果图…