当我们需要重复使用一段代码时,我们可以将其定义成函数,方便我们进行使用。Python中函数的定义有以下几个方面需要注意:
定义函数格式
def function_name(parameters):
"""docstring"""
statements
- function_name:表示定义的函数的函数名,需遵循Python标识符的命名规范。
- parameters:函数的参数列表,多个参数用逗号(,)分隔,也可以省略参数。
- docstring:函数的注释,用于描述函数的功能、参数、返回值等信息,是可选项。
- statements:函数体,即函数内需要执行的内容,必须缩进。
必选参数和默认参数
在Python中定义函数时,一般需要传入一些必须的参数,也可以设置默认参数。不传入默认参数时,函数使用默认值,传入时覆盖默认值。
def say_hello(name):
"""Say hello to someone"""
print("Hello, " + name + "!")
# 调用函数
say_hello("World") # Hello, World!
# 默认参数
def default_greet(name="World"):
"""Say hello to someone with default parameter value."""
print("Hello, " + name + "!")
default_greet() # Hello, World!
default_greet("Mars") # Hello, Mars!
可以看到,在定义函数时,给参数添加默认值即可定义默认参数。
不定长参数
Python中有两种不定长参数,即可变位置参数和可变关键字参数。
可变位置参数
在定义函数时,使用一个单独的符号 * 即可定义可变位置参数,在函数内部以元组的形式代表。
def sum_args(*args):
"""Sum all positional arguments."""
return sum(args)
print(sum_args(1, 2, 3)) # 6
print(sum_args(1, 2, 3, 4, 5)) # 15
可以看到,在函数定义的时候,在参数前面加上一个 * ,就能定义可变位置参数,用元组的形式接收。调用时传入的参数被认为是一个序列,可以是任意个数量的参数。
可变关键字参数
在定义函数时,可以使用两个单独的符号 **,以字典的形式表示可变关键字参数。
def print_kwargs(**kwargs):
"""Print all keyword arguments."""
for key, value in kwargs.items():
print("{0}={1}".format(key, value))
print_kwargs(a=1, b=2) # a=1 b=2
print_kwargs(name="Alice", age=20, address="Beijing") # name=Alice age=20 address=Beijing
可以看到,在函数定义的时候,在参数前面加上两个 **,就能定义可变关键字参数,用字典的形式接收。
以上就是Python函数定义方式的完整攻略,希望对你有所帮助。