百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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...