16.Python基础篇-函数

news/2024/12/21 21:50:57/文章来源:https://www.cnblogs.com/mingbo-1/p/18446203

函数的基本使用

函数的含义:

函数是执行特定任务的独立代码块,函数可以接受参数,并返回值,帮助我们简化代码,并在不同地方复用相同的功能。

特点:可读性强,可复用性强

函数的定义与调用

定义:

使用def关键字定义一个函数

def 函数名(参数1,参数2):函数体return返回值

 

调用语法

函数名(参数)  # 方式一:调用函数,不接受返回值

返回值 = 函数名(参数)  # 方式二:接收函数的返回值,赋值给一个变量

 

 

函数的参数,分为形参与实参

形参与实参:形参是在定义函数时,用来指定函数可以接收的参数名称;实参是在调用函数时,传递给函数的真实值。实参是传递给形参的具体数据。

形参:

位置参数

def func(a, b):print(a + b)

默认参数

def func(a, b=1):  # b为默认参数,默认值为1print(a + b)# 将1赋值给a,b使用默认值,默认值为1。则输出结果为:2
func(1)  # 默认参数可以不传# 将1复制给a,b赋值为3,不使用默认值。输出结果为:4
func(1, 3)  

 

可变参数:*args

args,只是一个变量名,可以自定义,但是一般都使用args(约定俗成)

def func(*args):  # args实际为一个元组,传入的每一个参数为元组中一个元素print(args)func(1)  # 可以传1个值

func(1, 2, 3, 4)   # 也可以传多个值

可变参数:**kwargs

kwargs,只是一个变量名,可以自定义,但是一般都使用kwargs(约定俗成)

def func(**kwargs):  # kwargs实际为一个字典,接收到的参数存储为键值对print(kwargs)func(name='mingbo', age=18)  # 往kwargs这个字典中传入两个键值对# 输出:
{'name': 'mingbo', 'age': 18}

定义形参的顺序

位置参数--->*args--->默认参数-->**kwargs

def func(name, *args, age=18, **kwargs):print(name)print(args)print(age)print(kwargs)# mingbo赋值给name
# (1,2,3)赋值给args
# 19赋值给age
# {sex:男}赋值给kwargs
func('mingbo', 1, 2, 3, age=19, sex='')# 输出:
邵明博
(1, 2, 3)
19
{'sex': ''}

 

实参

按照位置传参

def func(a, b):print(a, b)func(1, 2)  # 按照位置传参,将1传给a,2传给b# 输出:
1 2

 

 

按照关键字传参

def func(a, b):print(a, b)func(a=1, b=2)  # 按照关键字传参# 输出:
1 2

 

传参的注意点:位置参数必须在关键字传参之前。

def func(a, b):print(a, b)func(1, b=2)  # 位置传参与关键字传参混合使用# 输出:
1 2

 

*args和**kwargs可以使用星号*和**传入一个List、字典。

def func1(*args):print(args)li = [1, 2, 3, 4]
func1(*li)  # 将li这个列表中的元素,分别传入到args中
# 输出:(1, 2, 3, 4)def func2(**kwargs):print(kwargs)dic = {'name': 'mingbo', 'age': 18}
func2(**dic)  # 将dic这个字典中的键值对,分别传入到kwargs中
# 输出:{'name': 'mingbo', 'age': 18}

 

函数的返回值

1.没有返回值(不写return)

不写return

def func():passprint(func())  # 不写return,默认返回None# 输出:
None

 

只写return

def func():return print(func())  # 只写return,默认也返回None# 输出:
None

 

return None

def func():return Noneprint(func())  # 返回None# 输出:
None

 

2.返回1个值

结束函数,并返回一个值

def func(a, b):return a + bret = func(1, 2)  # 接收返回值,存储到变量ret中
print(ret)# 输出:
3

 

3..返回多个值:多个值之间使用英文逗号隔开,实际返回的是一个元组,每个返回值为其中的一个元素。 

 

用1个变量接收

def func(a, b):return a, b  # 实际返回的是一个元组(a, b),每个返回值为其中一个元组
ret = func(1, 2)  # 使用1个参数接收返回值
print(ret)  # 输出为元组类型的(1, 2)#输出:
(1, 2)

 

用等量的多个变量接收

def func(a, b):return a, b a, b = func(1, 2)  # 使用变量a和b,分别接收1和2
print(a, b)  # 输出a和b# 输出:
1 2

 

注意点

1.先定义后调用

2.只定义不调用,就一定不会执行

3.默认参数的陷阱:如果默认参数的值是一个可变教据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源

def func(li=[]):li.append(1)print(li)func()  # 输出:[1]
func()  # 输出:[1, 1]
func([])  # 输出:[1]
func()  # 输出:[1, 1, 1]

 

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

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

相关文章

Python算法学习

算法学习心得,源码均为Python实现目录绪论数据结构算法算法的特征算法的评价算法的时间复杂度算法的空间复杂度递归汉诺塔问题(递归调用)查找排序二分查找检查排序是否完成冒泡排序选择排序插入排序希尔排序(高级版插入排序)快速排序堆排序(二叉树)python中内置好的堆排…

数学建模学习

数学建模学习,包含各种常用模型和Matlab源码目录 目录目录评价类方法层次分析法搜索引擎算法步骤算法代码F4锁定单元格优劣解距离法算法步骤算法代码自输入权重代码基于熵权法权重的代码灰色关联分析传统数理统计的不足之处该方法的好处算法步骤算法代码基于灰色关联度权重的代…

下载、安装、配置 android-studio-2021.1.1.22-windows

软件安装包:图1 软件安装包提示删除已经存在的版本:图2 提示删除已经存在的版本根据提示选择是:图3 根据提示选择是继续安装:图4图5图6图7图8图9图10

实景三维赋能城镇数字化规划

在数字化浪潮的推动下,城镇规划正经历着前所未有的变革。实景三维技术以其独特的优势,为城镇数字化规划提供了强大的技术支持。今天,我们将深入探讨实景三维技术如何赋能城镇数字化规划。一、城镇规划面临的挑战随着城镇化进程的加快,城镇规划面临着人口增长、资源分配、环…

作业2

班级:https://edu.cnblogs.com/campus/fzu/2024C 作业:https://edu.cnblogs.com/campus/fzu/2024C/homework/13282

土地规划中的公共设施布局:科学规划,赋能土地高效利用的艺术

在城市与区域发展的宏大叙事中,公共设施布局如同血管与神经网络,支撑着城市的脉动与感知。合理规划公共设施布局对于提升土地使用效率、促进社会公平、增强居民福祉至关重要。本文将深入探讨如何通过科学方法与创新策略,实现公共设施的高效布局,绘就城市发展的智慧蓝图。一…

js学习1

js实现简单交互 js的外联引入 必须在body里&&你需要交互的元素下方 e.g. <body><div id="box">演示1</div><script src="./演示1.js"></script> </body>实现点击交互 样例1 <!DOCTYPE html> <html l…

动态规划Leetcode96.不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 解题步骤如下:二叉搜素树的相关概念 寻找规律 思路建立 代码实现1.二叉搜索树的相关概念 ①:若左子树不空,则左子树所有节点的值均小于它的根节点…

“!提醒:续购防毒”钓鱼网站套路

逛网站碰到套路:验证人机 -> 请点击开启网站通知验证是否为人机 -> 后面就开始不消停了,弹出下方内容,将用户引到未知网站 解决方法为 chrome 设置 -> 隐私与安全 -> 网站设置 -> 通知,将允许发送通知的陌生网站(网站名乱七八糟的)全部设置为不允许通知,…

在VS2022上安装pygame模块

一、安装 在vs2022中随便打开或生产一个python项目,找到最右边的“解决方案资源管理器”,并找到“python环境”,点击鼠标右键打开“查看所有python环境”打开以后找到下面的“在PowerShell中打开”,点击打开然后输入”pip install pygame“并等待安装即可 二、测试 输入以下…

SQLSTATE[42S22]: Column not found: 1054 Unknown column Color in field list

遇到 SQLSTATE[42S22]: Column not found: 1054 Unknown column Color in field list 错误,通常表示你在执行 SQL 语句时引用了一个不存在的列。这可能是由于拼写错误、表结构变更等原因导致的。 解决方法检查列名是否正确: 确认 Color 列是否存在,并且拼写正确。获取表结构…

P9752 [CSP-S 2023] 密码锁P8814 [CSP-J 2022] 解密

Guten Tag!Schn, dich zu sehen! 今天也是很懒惰的一天呢!所以今天三合一! 题目:[CSP-S 2023] 密码锁 题目描述 小 Y 有一把五个拨圈的密码锁。如图所示,每个拨圈上是从 $0$ 到 $9$ 的数字。每个拨圈都是从 $0$ 到 $9$ 的循环,即 $9$ 拨动一个位置后可以变成 $0$ 或 $8$,…