强制使用关键字传参

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

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关键字的方式进行传参。相较于文章开头全部使用位置参进行传递的方式而言,提高了代码可维护性。


相关文章
|
2月前
|
存储 安全 算法
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
【C/C++ 关键字 函数说明符 】C++ noexcept 关键字(指定某个函数不抛出异常)
27 0
|
4天前
|
Python
python函数的返回值、嵌套方式以及函数中的变量(二)
python函数的返回值、嵌套方式以及函数中的变量(二)
|
4天前
|
存储 Python 容器
python函数的返回值、嵌套方式以及函数中的变量(一)
python函数的返回值、嵌套方式以及函数中的变量(一)
|
2月前
|
算法 编译器 C语言
【C/C++ 关键字 函数说明符 】C/C++ _Noreturn关键字(表明调用完成后函数不返回主调函数)
【C/C++ 关键字 函数说明符 】C/C++ _Noreturn关键字(表明调用完成后函数不返回主调函数)
35 1
|
2月前
|
算法 C语言 C++
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
20 0
|
5月前
|
编译器 C++
C++ 中 const 和 constexpr 关键字解析:常量、函数和指针
很多 C++ 的初学者看到 const 这个关键字的第一反应都是一头雾水,主要是因为 const可 以出现在很多的位置,以及后面加入的 constexpr 更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用
104 0
|
7月前
|
测试技术 Python
软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用
软件测试|Python函数参数之必传参数、默认参数、可变参数、关键字参数的详细使用
59 0
|
12月前
|
开发者 Python
一日一技:限定Python函数只能被特定函数调用
一日一技:限定Python函数只能被特定函数调用
89 0
|
Python
关键字、函数和方法
关键字、函数和方法
96 0
【Swift4】(5) 函数基本使用 | 可变参数 | inout引用传递 | 函数类型返回值 | 函数嵌套
【Swift4】(5) 函数基本使用 | 可变参数 | inout引用传递 | 函数类型返回值 | 函数嵌套
159 0