AI最火语言Python之函数_aip python
itomcoil 2025-09-04 07:45 6 浏览
我们通常说的函数主要分为两大类,内置函数和自定义函数。内置函数就是python自带的函数,可以直接调用。自定义函数就是我们开发者自己编写的函数。
我们分别来看一下这两类函数。
一、内置函数
python内置了一些实现特定功能的函数叫内置函数,这些函数无需由使用者重新定义,可直接供开发者使用。下面是一些常用的内置函数:
- abs (x): 返回一个数的绝对值。
- all (iterable) 如果iterable的所有元素均为真值,则返回True。
- any (iterable)如果iterable中至少有一个元素为真值,则返回True。
- bool (x) 将一个值转换为布尔值。
- bytearray ([source[, encoding[, errors]])创建一个可变的字节序列。
- chr (i) 返回一个整数i的Unicode字符。
- delattr (object, name) 删除对象的属性。
- dict ([arg])创建一个空字典。
- divmod (x, y)返回商和余数。
- eval (expression[, globals[, locals]]) 执行一个字符串表达式,并返回表达式的值。
- exec (object[, globals[, locals]]) 执行存储在对象中的代码。
- filter (function_or_none, iterable) 过滤序列,返回一个迭代器。
- float (x)将一个字符串或数字转换为浮点数。
- format (value, format_spec) 返回value的格式化表示。
- frozenset (iterable) 创建一个不可变的集合。
- globals()返回当前全局符号表的字典。
- hasattr (object, name) 检查对象是否有给定的属性。
- hash (object) 返回对象的哈希值。
- help (object) 打印对象的文档字符串。
- hex (x) 将一个整数转换为十六进制表示的字符串。
- id (object) 返回对象的唯一标识符。
- input (prompt=None) 从标准输入读取一行并返回结果。
- int (x, base=10)| 将一个数或字符串转换为整数。
- iter (iterable) 获取可迭代对象的迭代器。
- len (s) 返回对象的长度或项目数。
- list (iterable)将一个可迭代对象转换为列表。
- locals() 返回当前局部符号表的字典。
- map (function, iterable) 对序列的每个元素应用一个函数,并返回结果列表。
- max (iterable) 返回序列中的最大项。
- memoryview(obj) 返回给定参数的内存查看对象。
- min (iterable) 返回序列中的最小项。
- next (iterator[, default])获取迭代器的下一个项目,否则返回default。
- oct (x) 将一个整数转换为八进制表示的字符串。
- open (file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 打开文件并返回文件对象。
- ord (c) 返回字符c的Unicode码点。
- pow(x, y[, z]) 返回x的y次幂,如果z存在,则再对结果进行z次幂的余数计算。
- range(start, stop[, step]) 生成一个数字序列,常用于for循环中生成迭代器。
- repr(object) 获取对象的官方字符串表示形式,通常用于调试和日志记录。
- round(number[, ndigits]) 四舍五入到小数点后n位。
- set(iterable)创建一个集合对象,包含所有唯一的元素。
- sorted(iterable, key=None, reverse=False) 对所有元素进行排序并返回排序后的列表。
- staticmethod(function)将一个方法转换为静态方法。
- str(object) 将对象转换为字符串表示形式。
二、自定义函数
1. 函数定义
自定义函数是需要开发者自己编写的函数,函数的定义如下:
def 函数名([参数列表]):
函数体
- def关键字:函数以def关键字开头,其后一定要空格,后跟函数名()和冒号。
- 函数名:用于标识函数的名称,遵循标识符的命名规则。
- 参数列表:参数之间用逗号分隔,可以为空,但是()不能省略。
- 函数体:是这个函数需要做的事情,由单行或多行程序代码组成,这个语句块的整体必须保持缩进。函数体中可以使用return关键字返回函数的结果。当然函数也可以没有返回结果。
2.函数调用
当自定义的函数开发完成后我们就可以调用我们的自定义函数。调用方式为
函数名([参数列表])
比如我们定义了一个求和函数:
def sum_numbers(numbers):
total = 0
for number in numbers:
total += number
return total
接下我们就可以调用我们的函数了:
numbers = [1, 2, 3, 4, 5]
print(sum_numbers(numbers))
这里对参数做一下说明:
(1)定义函数时,参数表中的参数称为形式参数,也称形参。
(2)调用函数时,参数表中的参数称为实际参数,也称实参。
(3)调用函数的过程就是将实参传递给形参的过程。
根据不同的传递形式,函数的参数可分为:位置参数、关键字参数、默认参数、可变参数。我们分别来看下他们是如何使用的。
2.1 位置参数
函数调用时,默认情况下,实参将按照位置顺序传递给形参。例如一下求和函数(求x+y的值)
def sum_number(x, y):
return x + y
当我们传参时,按照如下调用方式:
sum_number(10,20)
此时的位置传递的意思就是实参10传给形参x,实参20传给形参y。
2.2 关键字参数
简单来说就是要按照函数中定义的名称来传递参数。还是以我们刚才的函数为例:
def sum_number(x, y):
return x + y
那么该如何来进行关键字传参呢,只需要传参时带上形参的名字即可。看下面两个例子:
sum_number(a=10,b=20)
sum_number(b=20,a=10)
因此我们可以看出这样一个结论:
调用函数时关键字参数出现的顺序,与它们在函数定义中出现的真正顺序可以没有任何关系。
默认参数
可以通俗的理解为有默认值的参数。定义函数时,为函数的形式参数设置默认值,该参数被称为默认参数。
例如还是拿我们刚才的求和函数来举例:
def sum_number(x, y=100):
return x + y
这样我们就定义了一个默认参数y,此处需要注意的是默认参数的该位于函数定义中参数列表的末尾,我们调用时,如果想用y的默认值,只需要传入x的参数值即可。如下所示:
sum_number(10)
这样结果就是110(10+100=110)
当然我们也可以传入具体的值,这样默认值100就不会生效,而是使用我们自己传入的值,比如:
sum_number(11,21)
结果就是32(11+21=32)
2.3 可变参数
函数定义时可以使用单星号* 和双星号** 来处理可变数量的参数。
单星号 :用于接收不定数量的位置参数,调用函数时传入的所有参数被接收后以元组形式呈现。
双星号 :用于接收不定数量的关键字参数,调用函数时传入的所有参数被接收后以字典形式呈现。
(1) 单星号*
还是以我们的求和函数为例:
def sum_number(*numbers):
total = 0
for number in numbers:
total += number
return total
我们定义了一个可变参数,这样我们调用的时候可以传多个参数。
sum_number(1, 2, 3,4)
sum_number(1, 2, 3, 4, 5)
我们分别调用了2次函数,传的参数也不一样。
(2) 双星号*
还是以我们的求和函数为例:
def sum_number(**numbers):
total = 0
for key, value in numbers.items():
total += value
return total
我们调用时
sum_number(a=1, b=2, c=3,d=4)
其实从代码里可以看到我们的实现方式不一样了,原因就是在于参数的呈现方式不一样,一个是元组,一个是字典。
既然我们知道**可变参数是以字典形式出现,那么我们就可以我们传入的关键字参数一起打印出来,我们换个例子来看下效果:
def printInfo(**info):
for key, value in info.items():
print(f"{key}: {value}")
我们调用函数:
printInfo(name="科技e家", age=99, city="qingdao")
这样输入的结果如下:
name: 科技e家
age: 99
city: qingdao
那么我们是不是可以这两种参数方式同时使用呢,答案是肯定的。我们来一起看一下一起使用的方式,
def printInfo(*args, **kwargs):
print("位置参数元组:", args)
print("关键字参数字典:", kwargs)
调用我们的函数
printInfo(1, "a", name="科技e家", age=99, city="qingdao")
输出结果如下:
位置参数元组: (1, 'a')
关键字参数字典: {'name': '科技e家', 'age': 99, 'city': 'qingdao'}
2.4 匿名函数
顾名思义,匿名函数就是指没有名字的函数。Python通过lambda关键字支持匿名函数,lambda函数可以接受任何数量的参数,但只能有一个表达式。格式如下:
lambda arguments: expression
其中arguments可以是多个参数(也可以是0个)。
还是以我们的求和函数为例:
sum =lambda x,y: x+y
调用匿名函数:
print(sum(1,2))
打印我们的程序结果为3(1+2)
3.嵌套函数
在Python中,嵌套函数(也称为内部函数或闭包)是一种非常有用的特性,它允许你在一个函数内部定义另一个函数。
以上示例这就是嵌套函数,在外部函数outerFun函数内部定义了函数名为innerFun,即函数内部又定义了函数。
运行以上代码可以发现结果为:
Inner: 20
Outer: 10
这是是不是有疑问,为什么在内部函数中把变量x赋值了20后,外部变量x值没有更改,还是10,其实这就要牵扯到变量作用域的问题了,之后的文章中会介绍这部分的内容,以及如何修改外部变量x的值。
相关推荐
- Filter函数在WPS里的正确用法,官方教程里都没有说......
-
Filter函数是office365新增的筛选函数,WPS也紧跟添加了它。但在二个软件中的使用方法却完全不同。office365有单元格溢出功能,只需要输入一个Filter公式即可完成数据筛选。但在W...
- 跳过VLOOKUP天坑!FILTER函数10个招式让同事以为你开了外挂?
-
还在为VLOOKUP的"一对多"限制头疼?是否还在为INDEX+MATCH的嵌套抓狂?今天教你用Excel新晋顶流——FILTER函数,10个高能用法让你秒变数据操控大师!用法1:精准...
- Filter函数的三种用法,比用VLOOKUP一对多查询,更加灵活方便
-
文章最后有彩蛋!好礼相送!Excel秘籍大全,正文开始FILTER函数可以基于定义的条件筛选一系列数据。在没有filter函数之前,如果实现一对多查询,常见的是构建辅助列,然后使用VLOOKUP+R...
- Filter函数公式,快速实现订单核对,1分钟学会
-
举个例子,我们有一份公司所有的订单源数据表格,这里我们只用两列信息来模拟,实际可能有很多列数据,几百行数据然后我们有另外一个表,里面有部分已经处理过的订单数据,如下所示,这里举例是4个,实际可能有上百...
- FILTER函数结合及经典用法2:一对多筛选
-
FILTER经典用法2:一对多筛选。FILTER函数的经典用法2:一对多的筛选。比如左边这个表格,需要根据部门筛选出每个部门的人员,应该怎样做?·把鼠标放在单元格内,在编辑栏输入等于FILTER。·第...
- 干掉VLOOKUP,FILTER函数9大用法全解析!
-
1.单条件基础筛选场景:筛选销量>5000的记录公式:=VSTACK(A1:D1,FILTER(A2:D9,D2:D9>5500))解析:A2:D9为需要筛选的数据区域,D2:D9&...
- Excel新函数公式Filter,秒杀VLOOKUP,人人必学
-
以前VLOOKUP公式是必学的公式,自从新版本更新之后,VLOOKUP已经变得可有可无了,但是新出来的Filter函数公式,你必须学会,它非常的强大,工作中用到非常频繁1、Filter公式背景在学会这...
- 第一讲:filter的基本用法及拓展_filter详解
-
全能查找函数filter的基本用法及拓展初学者,务必观看。进阶者,可互相学习,欢迎在回复中补充新用法。首次撰写此函数相关内容,若有不足之处,请予以指教,请勿诋毁,多谢。提示:以下内容以WPS最新版本为...
- 测一测你是什么粒子?_测测你是什么质
-
大亚湾实验。|图片来源:RoyKaltschmidt,LawrenceBerkeleyNationalLaboratory/WikimediaCommons2020年12月12日,大亚湾...
- SpringBoot如何处理配置文件的密文
-
在SpringBoot应用中,直接在配置文件(如application.yml或application.properties)中明文存储数据库密码、API密钥等敏感信息是严重的安全风险,...
- 大语言模型解释Python的 类装饰器
-
一、什么是类装饰器?在Python中,装饰器(Decorator)是一种高阶函数,它接受另一个对象(通常是函数或类),并返回一个经“增强”处理后的新对象。我们常见的是对函数进行装饰:@my_dec...
- Thymeleaf_thymeleaf属于前端吗
-
一、Thymeleaf简介Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和Freemarke...
- Win9去哪了?Win10避讳Windows95、98
-
10月1日,微软在旧金山发布了新一代操作系统预览版。但不是名为Windows9,而是win10,有业内人士猜测,跳过9而取10为命名是为了预示十全十美。可是小编还觉得9还代表长长久久呢!恐怕这里又说...
- 仓颉编程练习-字符串操作_仓颉编译器
-
main.cj:importstd.convert.Parsablemain():Int64{//字符串比较lets1:String="abc"...
- 一课译词:断断续续_一课译词:断断续续的意思
-
PhotobyMikefromPexels“断断续续”,或“时断时续”,意思是时而中断,时而继续地接连下去(continuefromtimetotime)。与英文惯用语“fitsan...
- 一周热门
- 最近发表
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)