打鼓社区-打鼓教学-最新活动 打鼓社区-打鼓教学-最新活动

湛江,西铁城,我真是大明星-打鼓社区-打鼓教学-最新活动

运用关键字参数来增强明晰度(Enforce Clarity with Keyword-Only Arguments)。

经过关键字传递参数是Python办法的一个十分强壮的功用。关键字参数的灵活性使你能够依据运用场景写出更明晰的代码。

例如,你想完成一个除法运算,你需求针对一些特殊状况做出十分慎重的处理。有时你既要防止除数为零的反常呈现,还要回来一个无穷大数来表明除法成果。还有的时分你想防止内存溢出的问题,可是还想回来0。此刻代码如下:

这个办法运用起来十分简略,下面是一个疏忽内存溢出的问题(float overflow):

下面是疏忽除数为零的状况:

上面的问题便是你很难了解这个布尔值参数是什么意思。此刻呈现问题就比较难调试了。处理这个问题的一个办法便是运用关键字参数。默许状况能够让办法遇到反常时永久抛出反常:

办法调用的时分能够经过设置关键字参数值决议疏忽那些状况:

尽管依照这种办法编写办法提高了可读性,可是因为这些关键字参数是可选的,所以不能约束调用者运用关键字参数的方式调用它。所以下面的调用也是合法的:

关于这些杂乱的办法,最好让调用者理解参数的含义。在Python 3中你能够要求办法运用“仅关键字”参数(keyword-only)。这类参数只能依照关键字参数的方式运用,不能依照方位参数的方式运用。

下面咱们重写safe_division 办法,让它仅支撑关键字参数方式调用。此刻*前面便是方位参数,后边便是关键字参数:

下面再来调用一下这个办法:

仅关键字参数在Python 2中的运用

Python 2不支撑仅关键字(keyword-only)参数。可是你能够经过运用**参数到达相似的作用。**参数与*参数差不多,只不过**参数能够接纳恣意数量的关键字参数。**参数在Python 2中的运用:

能够运用**参数使safe_division办法在Python 2中也支撑keyword-only参数。接下来在办法体中运用kwargs字典的pop办法的第二个参数为变量赋值。因为从字典中弹出了悉数必要参数,所以假如字典中仍存在其它字典项就阐明办法调用时传递了额定的参数过来,这便是过错的调用:

代码修正完就能够像Python3中的keyword-only参数相同调用新办法了:

履行成果:

假如依照方位参数的方式传递以上keyword-only参数就会犯错:

假如传递一些非预界说的关键字参数也会犯错:

总结

  • 关键字参数能够使办法调用更明晰;
  • 运用keyword-only关键字能够削减办法调用时的紊乱,尤其是当许多参数接纳布尔值时;
  • Python 3支撑显现的声明keyword-only参数;
  • Python 2能够经过**参数模仿keyword-only关键字。
作者:admin 分类:新闻世界 浏览:134 评论:0