强制使用关键字传参

简介: 强制使用关键字传参

Python小技巧

使用匿名可变位置参数,强制使用者使用关键字传递函数参数。

当一个函数的参数很多的时候,在调用的时候,习惯于直接通过位置参数进行传参,即按照顺序直接进行传递参数。

不推荐的写法

def handle_file(
    filename,
    mode,
    buffer_size = 1024,
    check_exist = True
):
    pass
# 使用时
handle_file(
    'test.py', 
    'r',
    2048, 
    False
)

当函数的参数变多以后,尤其是在需要团队协作的情况下,这种直接传参的方式,会导致代码难以维护,后来者在查看这种代码的时候,需要查看函数的注释,甚至是需要深入源代码去查看每个参数是什么意思。一种比较好的实践方法是,对于一个拥有多个参数的函数而言,只允许最常见的参数可以通过位置参数进行传递,对于一些需要进行理解的参数,通过可变位置参数来进行屏蔽,强制使用者使用关键字传参。

推荐的写法

def handle_file(
    filename,
    mode,
    *,
    buffer_size = 1024,
    check_exist = True
):
    pass
# 使用时
handle_file(
    'test.py', 
    'r',
    buffer_size=2048, 
    check_exist=False
)

通过不带有名字的可变位置参数*来屏蔽多余的位置参数,在需要传递*后面的参数时,必须使用arg=value关键字的方式进行传参。相较于文章开头全部使用位置参进行传递的方式而言,提高了代码可维护性。


相关文章
|
6月前
|
存储 安全 算法
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
77 0
|
1月前
|
Java Go C++
【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量
【Python】函数的定义和调用、形参和实参、函数的返回值、多元赋值、全局和局部变量
23 0
|
6月前
|
存储 安全 编译器
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
【C++ 关键字 类型限定符 】揭秘C++编程中的神秘元素:深入了解volatile关键字的强大作用
54 0
|
6月前
|
存储 Python 容器
python函数的返回值、嵌套方式以及函数中的变量(一)
python函数的返回值、嵌套方式以及函数中的变量(一)
243 2
|
6月前
|
Python
python函数的返回值、嵌套方式以及函数中的变量(二)
python函数的返回值、嵌套方式以及函数中的变量(二)
244 1
|
6月前
|
算法 编译器 C语言
【C/C++ 关键字 函数说明符 】C/C++ _Noreturn关键字(表明调用完成后函数不返回主调函数)
【C/C++ 关键字 函数说明符 】C/C++ _Noreturn关键字(表明调用完成后函数不返回主调函数)
64 1
|
6月前
|
算法 C语言 C++
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
46 0
|
6月前
|
编译器 C++
C++ 中 const 和 constexpr 关键字解析:常量、函数和指针
很多 C++ 的初学者看到 const 这个关键字的第一反应都是一头雾水,主要是因为 const可 以出现在很多的位置,以及后面加入的 constexpr 更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用
179 0
|
开发者 Python
一日一技:限定Python函数只能被特定函数调用
一日一技:限定Python函数只能被特定函数调用
129 0
|
C语言 Python
简单认识:结构体的嵌套,结构体的传参
简单认识:结构体的嵌套,结构体的传参
184 0
简单认识:结构体的嵌套,结构体的传参