介绍
函数是程序中经常使用的一种结构,它们可以独立执行、提高代码的可读性以及重复使用。
在Python语言中,函数可以被定义为可调用的代码块;可以传递任意数量的参数,可以从中返回值或引发异常。定义函数可以使程序的逻辑更加清晰,易于阅读和维护。
本文将带领大家了解Python中如何编写函数以及如何调用它们。
定义函数
函数的语法
在Python中,我们可以使用def关键字定义函数。函数的语法如下:
def function_name(parameters):
"""docstring"""
statement(s)
其中,
function_name:函数名称,为便于阅读和理解,函数名通常使用小写字母,单词之间使用下划线分割。
parameters:可选项,函数参数,通过逗号分隔。如果函数不需要参数,则在括号中不需要添加任何内容。
docstring:可选项,函数的文档说明。建议在函数体开始的位置编写文档说明。
statement(s):必要项,Python语句,通过缩进确定代码块。
示例
下面是一个简单的函数的示例,该函数用于计算两个数之和:
def add_numbers(num1, num2):
"""This function adds two numbers"""
result = num1 + num2
return result
作为参数,该函数接受两个数值,并返回这两个数值的和。
在上述示例中,def关键字用于定义函数,add_numbers是函数名,在括号中是参数列表(num1, num2)。这表示该函数接受两个参数num1和num2。函数体开始的双引号之间的内容是文档字符串。该字符串提供有关函数的信息,使其他人能够更好地阅读和理解代码。
调用函数
在Python中,要调用函数,只需要向函数名称传递参数(如果有)。下面是调用上述add_numbers函数的示例:
result = add_numbers(5, 10)
print(result)
在上述示例中,我们要执行的函数是add_numbers。通过传递两个参数,即5和10。将add_numbers返回的值赋值给变量result。随后调用print语句打印变量的值。
程序输出为:
15
默认参数
Python中的一个强大的功能是支持默认参数。默认参数是指向函数中指定参数的默认值,在调用该函数时,如果不提供该参数的值,则将使用默认参数的值。
函数的语法
定义函数时指定参数的默认值是非常简单的。只需将默认值放在参数名称后面,在函数定义中以等号("=")分隔。下面是具有默认参数的示例:
def greet(name, message='Good morning!'):
"""This function greets to the person with the provided message."""
print("Hello, " + name + ', ' + message)
greet('Kate')
greet('Bruce', 'How do you do?')
在上述示例中,函数greet()接受两个参数:name和message。message参数具有默认值'Good morning!'。如果调用函数时未传递message,将使用默认值。
当函数未提供参数时,默认参数的值是在定义函数时指定的。当函数调用时提供参数时,则使用提供的值而不是默认值。
关键字参数
关键字参数是一种在函数调用时传递参数的方法,通过这种方法,可以忽略传递参数的位置。在这种情况下,关键字参数通过指定其名称来传递。
函数的语法
要指定关键字参数,我们可以使用参数名称作为函数调用中的前缀。下面是一个示例:
def greet(name, message):
"""This function greets to the person with the provided message."""
print("Hello, " + name + ', ' + message)
greet(message='Good morning!', name='Kate')
greet(name='Bruce', message='How do you do?')
在上述示例中,函数greet()接受两个参数:name和message。关键字参数通过指定参数名称来传递,这明显表明它们含义。
在这种情况下,参数的顺序无关紧要;只需要将需要传递的参数名称作为关键字参数使用即可。例如,
greet(message='Good morning!', name='Sam')
greet(name='Jess', message='How do you do?')
与以下代码块具有相同的输出:
greet('Sam', 'Good morning!')
greet('Jess', 'How do you do?')
关键字参数的优势在于,可以明确指定哪个参数具有哪个值,使代码更加清晰易读。
收集参数
在Python中,收集参数是一种允许我们将函数传递给其他参数的方法。我们使用基于可变数量的参数收集,*args和基于关键字的参数收集,**kwargs。
*args参数
*args参数使用形式参数中添加*。在函数定义中,*args参数的参数名称可以是任意名称。它使用参数列表(*args)将任意数量的位置参数收集到元组中。以下是一个示例:
def print_parameters(*args):
for arg in args:
print(arg)
print_parameters('Hello', 'World', 2021, 'Python')
在上述示例中,*args参数用于从函数调用中接受任意数量的变量。我们使用for循环遍历args元组并将其打印到控制台。
**kwargs参数
除了位置参数以外,Python还支持基于关键字的参数传递方式,称之为关键字参数。类似于*args参数,我们可以使用形式参数中添加** kwarg。在函数定义中,**kwargs参数的参数名称可以是任意名称。它使用字典(**kwargs)来接受任意数量的位置参数。以下是一个示例:
def print_parameters(**kwargs):
for key, value in kwargs.items():
print(key, value)
print_parameters(name='Kate', age=30, city='New York')
在上述示例中,**kwargs参数用于从函数调用中接受任意数量的关键字参数。我们使用for循环遍历kwargs字典并将其打印到控制台。
lambda函数
lambda函数,也称为匿名函数,是一种一次性函数,可以在函数定义中创建它们并将其传递给其他一些函数。lambda表达式不同于def语句,def语句可以创建具有名称的函数而lambda声明是一次性的,并且返回一个函数对象。
函数的语法
lambda函数具有一个简单的语法。可以只传递一个表达式。Lambda函数可以有任意数量的参数,将这些参数1包含在冒号后面,并且它们之间使用逗号分隔。以下是一个示例:
add = lambda num1, num2: num1 + num2
print(add(10, 20))
在上述示例中,我们使用lambda函数将两个数字相加。在函数定义中,我们命名了函数并定义了传递给函数的参数。这个lambda函数将两个数字相加并将结果返回。
结论
到目前为止,我们对Python中函数的定义和调用有了基本了解。学习这些基础知识应该是每一个Python程序员的首要任务。本文中提到的函数进一步展示了Python的优雅和可读性。
学会如何定义和调用函数时,可以将您的代码打造成完全重用和可读性更强的模块化。它们还允许您在使用脚本编写代码时更好地组织代码。
在今天的教程中,我们已经介绍了Python中函数的定义和调用、默认参数、收集参数以及lambda函数的重要性。掌握这些内容是成为Python程序员的重要步骤。