一、默认参数的作用
在Python中,函数允许设定默认值,这意味着如果没有为函数的参数指定值,那么就会使用设定的默认参数值。
这个特性允许我们创建任意数量的功能,而无需使用每个功能都传递同样的一组参数。这使得代码更加简洁、干净。
以下是一个示例函数:
def greeting(name, greeting_text="Hello, have a nice day!"):
print("{} {}".format(greeting_text, name))
这个函数采用两个参数:name,以及greeting_text。greeting_text 被指定一个默认值 "Hello, have a nice day!"。 下面是两种调用这个函数的方式:
greeting("Jane") # Hello, have a nice day! Jane
greeting("Joe", "What's up") # What's up Joe
调用greeting() 时,如果我们只传递name参数,那么我们将看到“Hello, have a nice day! name”。 调用greeting() 时传递两个参数 greeing_text和name,则输出“Hello Joe”。
二、可变数量的参数
有时候,我们面对的是一个不定数量的参数的情况。这时候,我们可 以利用Python中的“*”运算符。以下是一个示例:
def calculate_sum(*args):
result = 0
for arg in args:
result += arg
return result
这个函数不受参数个数限制,使用 calculate_sum() 时,我们可以传递任意数量的参数,由于这个函数使用了 "*" 运算符, 所有调用函数的每一个参数都会被迭代到arg。传递到这个函数中的每一个参数都加起来,最后都返回为一个结果。
这样的一个函数可以长这样:
print(calculate_sum(1, 2, 3)) # 6
print(calculate_sum(10, 20, 30, 40)) # 100
你可能会看到这个星号(*) 的编码方式在很多地方都被使用,下面的例子是一个具有更好可读性的示例(可能会非常熟悉):
def print_out(*args):
print(*args)
print_out("Hello, ", "world!") # Hello, world!
这个函数也可以这样被调用:
print_out("Hi, ", "there.", "How", "are", "you", "today", "?")
# Hi, there. How are you today ?
三、使用默认参数的方案
以下是我们常常使用的的一些使用默认参数的案例:
1. 打印日志函数中的可选参数
def log(message, logger_name=__name__):
# 【函数代码】
在这个示例中,如果日志器没有名称,那么使用 __name__ 作为默认值。这种方法允许其他开发人员使用自己的日志器名称,而无需其他步骤。
2. 对数据表进行分页
def paginate(start=0, limit=10):
# 【函数代码】
这是一种常见的对数据表进行分页的方法。它使用起始值和限制数量对结果进行筛选,在不同的查询中,我们可以使用默认值或者自己指定limit和start值。
3. 使用默认值操作Redis
def add_to_queue(item, queue_name="default_queue"):
# 【函数代码】
在这个示例中,如果没有指定队列名称,使用 "default_queue" 的名称。这使得这个队列仅对其他开发人员明确指定队列的情况下使用。
四、小结
本文详细介绍了Python中默认参数和可变参数等基础语法功能,硬币的两面。在编程时,要注意不过于依赖默认参数而让代码变得笨重,合理选择默认参数的使用场景可以让代码更简洁、更干净,更高效地完成开发任务。