前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

AI最火语言Python之函数_ai python

我们通常说的函数主要分为两大类,内置函数和自定义函数。内置函数就是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的值。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言