首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python函数中的输入参数

Python函数中的输入参数
EN

Stack Overflow用户
提问于 2018-07-31 04:57:12
回答 1查看 688关注 0票数 -1

我是Python语言的新手,我有点沮丧。

直到今天,我还认为在函数调用中传递参数名不是强制性的。例如,如果您有以下函数:

def computeRectangleArea(width=7, height=8):
    return width * height

我认为可以像这样调用computeRectangleArea(width=7,height=8)只是为了更清楚地理解参数的含义,但实际上并不需要输入参数的关键字,所以您也可以这样调用相同的函数:computeRectangleArea(7, 8)

今天,在使用openpyxl.styles.PatternFill()的时候,我意识到在调用这个函数时,fill_type关键字是必须的。

假设您以这种方式调用函数:openpyxl.styles.PatternFill('FFFFFF','FFFFFF','solid'),那么对输入参数的解释将是错误的。

我有一些使用OOP语言(Java,C#)的经验,这些东西在那里是不存在的。

在我看来,一些参数名(如上面示例中的start_colorend_color )是可选的,而其他参数名(如fill_type)必须在它们的值之前指定,这似乎是一种不一致的行为。

谁能给我解释一下为什么这项政策看起来很奇怪?此外,如果有人能给我指出一些有用的资源来理解它的实现方式,我会很高兴的。

EN

回答 1

Stack Overflow用户

发布于 2018-07-31 05:12:10

位置和关键字参数的工作方式与您熟悉的语言中的工作方式相同。您需要转到您正在使用的方法的文档并查看签名。要创建PatternFill对象,请转到类的__init__方法。

class PatternFill(Fill):
    def __init__(self, patternType=None, fgColor=Color(), bgColor=Color(),
                 fill_type=None, start_color=None, end_color=None):

只要按顺序提供所有参数,而不跳过任何参数,就可以指定不带关键字的参数。例如,您失败的呼叫可以合法地指定为:

PatternFill(None, 'FFFFFF', 'FFFFFF', 'solid')

这些参数将与前四个参数匹配。任何时候您提供的参数顺序不正确时,都必须为该参数和该调用中的所有后续参数提供关键字。例如,对于上面的调用,如果您想让它们的样式默认为None,那么您必须为您提供的三个参数提供关键字。如果您简单地省略了None,那么解析器仍然会尝试从前面按顺序匹配它们:

patternType <= 'FFFFFF'
fgColor <= 'FFFFFF'
bgColor <= 'solid'

..。并且您的调用无法通过解析。

这是不是把事情搞清楚了一点?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51602174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档