python的函数定义方式

  • Post category:Python

当我们需要重复使用一段代码时,我们可以将其定义成函数,方便我们进行使用。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函数定义方式的完整攻略,希望对你有所帮助。