如何使用Python的 def 函数定义函数?
Python是一种非常强大且易于使用的编程语言,它具有高效的编译方式和易于阅读的语法。Python中的函数是一种能够接收一定数量的参数并根据这些参数执行特定任务的独立单元。在本篇文章中,我们将学习如何使用Python的def函数定义函数。
函数定义
在Python中使用def关键字定义一个函数。"def"表示定义,而函数名称则表示可调用的函数名称。以下是函数结构的基本语法:
def function_name (parameters):
"""docstring"""
statements
return [expression]
要了解函数定义中的每个部分,请参阅下面的代码示例:
def greet(name):
"""
This function greets to person whose name is passed in as parameter
"""
print("Hello, " + name + ". Good morning!")
函数的名称是greet,而名称在两个括号之间的参数(name)将作为传递给函数的输入。
不要忘记增加一个docstring描述函数。这是可选的,但可以为程序的可读性提供巨大帮助。
return语句结束函数执行并将结果返回给调用方。在函数中省略return语句会导致函数返回"None"值。
参数传递
参数传递是指将值传递给函数。被传递的值必须匹配函数定义中的参数。
参量有两种,即:形式参数和实际参数。
形式参数是函数定义中的参数,而实际参数是传递给函数的值。
如下所示,定义一个函数,该函数的参数为两个整数,并将它们加在一起。
def add_numbers(num1, num2):
return num1 + num2
print(add_numbers(5, 7))
此例中,定义了一个名为add_numbers的函数,其两个形参是num1和num2。 在函数中,使用return语句返回两个值的总和。
上面的函数被调用,传递了实际参数5和7,并打印函数返回值12。
关键参数传递
关键参数传递时,实参是以"名称-值"对的形式传递的。 例如,对于下面的函数:
def greetings(name, message):
print(f'Hello, {name}. {message}')
在关键参数传递中,我们不能依赖于参数的位置,而需要明确说明我们要传递哪个参数,如下所示:
greetings(name="User", message="Welcome to Python")
在上面的例子中,"name"和"message"参数的位置已经改变,但函数正确地使用关键参数调用。
默认参数传递
默认参数传递时,在函数定义中,您可以为参数提供具有默认值的值。 这意味着如果在调用函数时未提供值,将使用默认值。
例如,以下函数将自动将message设置为"Good morning!":
def greetings(name, message="Good morning!"):
print(f'Hello, {name}. {message}')
在默认参数传递中,您仍可以使用关键参数传递来覆盖默认值。 调用函数时,可以如下所示省略message参数,并默认使用函数定义中的默认值-
greetings(name="User")
在上面的例子中,未提供message参数,因此函数使用默认值作为消息。
可变数量的参数传递
有时,我们不确定将传递给函数的参数数量。 在这种情况下,可以使用多种方法传递参数,因为在Python中,您可以使用"*"或"**"来传递可变数量/关键词参数。
如果在函数定义中使用星号*,则允许函数接受任意数量的参数,并将它们打包成一个元组。
例如,以下函数将接受任意数量的参数,并将它们打包成一个元组:
def my_function(*args):
for arg in args:
print(arg)
my_function("Introduction", "to", "Python")
在上面的函数myfunction中,* args表示应该打包为一个元组的任意数量的参数。 函数在循环中遍历元组中的每个参数并打印输出。
如果在函数定义中使用** (双星号),则接受的参数将保存为字典,其关键字是参数名称。 对于以下函数:
def my_function(**kwargs):
for key, value in kwargs.items():
print(f'{key} = {value}')
my_function(firstname='Eleonor', lastname='Smith')
上面的函数myfunction使用** kwargs表示应该接受任意数量的关键字参数,并将它们保存为字典。 在函数定义中,我们循环遍历字典并打印关键字和值。
通过分别调用myfunction并传递不同的参数来尝试使用这三种方法:
my_function(1, 2, 3)
my_function(name="David", email="david@gmail.com")
my_function(firstname='Eleonor', lastname='Smith')
在上面的例子中, 次调用myfunction将数字1,2和3传递给函数。 因此,*args将其中的任意数字打包到元组args中。
第二次,函数使用关键字参数name和email传递字符串,因此**kwargs将字符串作为字典键和值保存。
第三种情况下,我们传递关键字参数firstname和lastname,因此**kwargs保存值并使用名称作为键。
如果您将三种参数传递给myfunction,它会打印以下输出:
1
2
3
name = David
email = david@gmail.com
firstname = Eleonor
lastname = Smith
这就是如何使用Python的def函数定义函数,以及如何传递不同类型的参数。 您现在应该能够编写并使用自己的函数,这将极大地提高您的Python开发能力。
