Python 函数
Python 是一种强大的编程语言,函数是 Python 编程中的基本构建块之一,它可以帮助我们将代码模块化,提高代码的可重用性和可维护性。
1 函数定义
Python 中的函数可以使用 def 关键字定义,定义语法如下:
def 函数名(参数列表):
函数体
def function_name(arguments):
"""docstring"""
# function body
return [expression]
函数定义语法由以下组成:
def: Python 中定义函数的关键字。function_name: 函数名称,由字母、数字和下划线组成,不能以数字开头。arguments: 参数列表,由逗号分隔的形式参数和关键字参数组成。docstring: 函数文档字符串,用于描述函数的功能和使用方法。function body: 函数体,包含了执行函数需要执行的语句。return: 函数结果返回关键字,返回值可以为表达式或者省略。
以下是一个简单的函数定义示例:
def greet(name):
"""向名字问好"""
print(f"Hello, {name}!")
这个函数名称为 greet,参数为 name,函数文档字符串描述了函数的功能,函数体打印了传入名称的问候语。
2 函数调用
定义函数后,我们就可以通过函数名调用函数,将需要输入的数据传递给函数,让函数执行并返回结果,调用语法如下:
function_name(arguments)
以下是一个简单的函数调用示例:
greet('Alice')
这个函数调用传入参数 Alice,函数体内部打印了 Hello, Alice!。
3 函数参数
Python 中的函数可以接受两种类型的参数:位置参数和关键字参数。
3.1 位置参数
位置参数是函数定义的参数,按顺序传递给函数,调用时必须提供与函数定义的位置参数相同数量的参数。例如:
def greet(name, age):
"""向给定的名字和年龄发问候"""
print(f"Hello, {name}. You are {age} years old.")
greet('Alice', 20)
这个函数定义了两个位置参数,调用时必须按照顺序传入相同数量的参数,函数体内部打印了 Hello, Alice. You are 20 years old.。
3.2 关键字参数
关键字参数是通过名称指定的参数,调用时不必按顺序传递。关键字参数必须指定参数名和值。例如:
def greet(name, age):
"""向给定的名字和年龄发问候"""
print(f"Hello, {name}. You are {age} years old.")
greet(age=20, name='Alice')
在函数调用时,指定参数名称和值,函数体内部仍然可以按照参数位置进一步操作。
3.3 默认参数
如果函数定义中指定了缺省值,调用函数时可以省略该参数,使用定义时的缺省值。例如:
def greet(name, age=18):
"""向给定的名字和年龄发问候"""
print(f"Hello, {name}. You are {age} years old.")
greet('Alice')
在函数定义时,指定了 age 参数具有默认值 18,在函数调用时可以不传递 age 参数,函数体内部打印了 Hello, Alice. You are 18 years old.。
3.4 可变参数
如果想要传入可变数量的位置参数,请在参数名前面加上 * 号,可以接受一个任意数量的参数,这些参数将作为元组传递给函数体。例如:
def greet(name, *args):
"""向给定的名字和年龄发问候"""
print(f"Hello, {name}. You have {len(args)} arguments: {args}")
greet('Alice', 'Bob', 'Charlie', 'David')
# 输出 Hello, Alice. You have 3 arguments: ('Bob', 'Charlie', 'David')
在这个函数内部,使用 *args 来指定参数数量可变,所有的额外参数将作为元组传递给函数体,函数体。
如果想要传入可变数量的关键字参数,请在参数名前面加上 ** 号,可以接受一个任意数量的关键字参数,这些参数将作为字典传递给函数体。例如:
def greet(name, **kwargs):
"""向给定的名字和年龄发问候"""
print(f"Hello, {name}. You have {len(kwargs)} arguments: {kwargs}")
greet('Alice', Bob=20, Charlie=23, David=18)
在这个函数内部,使用 **kwargs 来指定参数数量可变,所有的额外参数将作为字典传递给函数体,函数体输出 Hello, Alice. You have 3 arguments: {'Bob': 20, 'Charlie': 23, 'David': 18}。
-
加了
*的参数会以元组的形式导入 -
加了
**的参数会以字典的形式导入 -
/之前的参数只能通过位置传递 -
*之后的参数只能通过关键字传递,参数中星号*可以单独出现
下面是一个例子:
def func(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
func(1, 2, 3, 4, e=5, f=6)
这个函数可以接受 6 个参数,其中 / 前面的两个参数 a 和 b 只能通过位置传递,不能通过关键字传递; / 后面的两个参数 c 和 d 既可以通过位置传递,也可以通过关键字传递;* 后面的两个参数 e 和 f 只能通过关键字传递,不能通过位置传递。 因此,下面的调用都是合法的:
func(1, 2, 3, 4, e=5, f=6)
func(1, 2, c=3, d=4, e=5, f=6)
func(1, 2, 3, d=4, e=5, f=6)
而下面的调用将会抛出异常:
func(a=1, b=2, c=3, d=4, e=5, f=6) # 不能通过关键字传递 a 和 b
func(1, 2, c=3, d=4, 5, 6) # 不能通过位置传递 e 和 f
4 函数作用域
Python 中的函数有自己的作用域,定义在函数之内的变量称为局部变量,只能在函数内部使用,无法在函数外部访问。 而在函数之外定义的变量称为全局变量,可以被整个程序访问。
函数作用域的规则可以总结为以下几点:
- 函数内部可以访问全局变量。
- 函数内部定义的变量是局部变量,只能在函数内使用。
- 函数内部可以修改全局变量,但需要在函数内部指定
global关键字。
以下是一个修改全局变量的例子:
x = 0
def increment():
global x
x += 1
increment()
print(x)
在这个例子中,函数体内使用 global 关键字来指定 x 是全局变量,函数体内部将全局变量 x 的值增加了 1,最终输出 1。
5 函数返回值
Python 中的函数可以返回单个值或者多个值。如果返回多个值,Python 会将返回值封装为元组。
以下是一个返回单个值的函数示例:
def add_numbers(x, y):
"""将两个数字相加并返回结果"""
return x + y
result = add_numbers(3, 4)
print(result)
这个函数接受两个数字作为输入,将它们相加并返回结果。函数调用返回结果并将其赋值给变量 result,最终输出 7。
以下是一个返回多个值的函数示例:
def get_name_stats(name):
"""返回给定名字的长度和第一个字母"""
length = len(name)
first_letter = name[0]
return length, first_letter
name_length, name_first_letter = get_name_stats('Alice')
print(name_length)
print(name_first_letter)
这个函数接受一个名字作为输入,返回该名字的长度和第一个字母。函数调用同时返回两个值并将其赋值给 name_length 和 name_first_letter,最终输出先输出 5,然后输出 A。
6 Lambda 函数
Lambda 函数是一种匿名函数,它可以在一行代码中定义一个简单的函数,通常用于规模较小的函数体。Lambda 函数由 lambda 关键字引入,接受任意数量的参数(但是只能有一个表达式),并返回表达式的值。以下是一个简单的 Lambda 函数示例:
f = lambda x: x ** 2
print(f(4))
这个 Lambda 函数接受一个参数 x,返回 x 的平方,并将其赋值给变量 f,最终输出 16。
Lambda 函数通常用于需要传递一个简单的函数体作为另一个函数的参数,例如 map() 或 filter() 函数。.
匿名函数:lambda [arg1 [,arg2,.....argn]]:expression
题外话
当下这个大数据时代不掌握一门编程语言怎么跟的上时代呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。


二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试宝典


简历模板

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
若有侵权,请联系删除
本文详细介绍了Python中的函数概念,包括函数定义、调用、参数类型(位置、关键字、默认和可变),作用域规则,以及返回值处理,还特别提到了Lambda函数的使用。

2279

被折叠的 条评论
为什么被折叠?



