python函数参数列表_python – 如何查找函数的所有**参数列表?

symbols()函数在创建符号时允许使用**args传递关于符号的假设,如supportedpredicates所示。此外,还可通过cls和seq参数定制符号类型。cls用于指定符号类,seq确定是否返回单个符号的序列。符号的实例化过程涉及参数检查和清理,确保只有有效的假设参数被接受。了解这些细节有助于更好地理解和使用SymPy以及其他库中可能存在的隐藏参数。
摘要由CSDN通过智能技术生成

symbols()函数

正如其他答案所指出的那样 – 在符号中使用** args是为了传递关于正在创建的符号的假设.您可以传递的假设列表在Assumptions页面下记录为supported predicates.

但是,您还应该注意,可以传入一些其他特殊命名参数.

这些都记录在您链接的部分中,并且是:

> cls =< ClassName>

Despite its name, symbols() can create symbol-like objects like instances of Function or Wild classes. To achieve this, set cls keyword argument to the desired type:

注:如果未指定,则使用默认的Symbol类.

> seq =< True | False>

文档说:

If an iterable container is needed for a single symbol, set the seq

argument to True or terminate the symbol name with a comma

代码行走

您注意到您已查看代码 – 因此我将向您展示代码中实现这些内容的位置.如果你调用symbols()函数,它会对其参数进行各种检查,包括来自** args的pop-ing cls and seq参数,然后执行更多检查等,最后调用实例化符号here,here或here.这些调用符号的构造函数(或者它的子类通过cls传递,** args中剩下的任何内容都被解释为assumptions in the constructor. – 它们是sanitized here,即此时非假设或不适用的命名参数为thrown out!

这表明Assumptions cls seq形成了一组命名参数,可以在** args中传递给symbols()

其他功能(一般情况)

在我看来,符号()可能只是作为一般问题的代表性例子.我希望上面已经说服了所有可以有效传递给symbols()的值都记录在案.这可能会让您相信SymPy中的其他功能也是如此.

但是,在一般情况下,答案是很难向自己证明可以作为keywordarguments传递的所有值都在任何库或函数的文档中.实际上,有时只有一个子集被故意记录,因为它们是库的“公共API”,而实际的代码可能需要其他参数,但出于某种原因,开发人员不希望将它们暴露给公众 – 例如因为它们的可用性可能会改变,或者它们的功能未经测试.

如果传入了无效参数,则您使用的库的行为可能会有所不同.某些库或函数会忽略它们,而如果传入无效的关键字参数,则其他库会抛出错误.

如果你想知道是否是这种情况(并且库是开源的,比如SymPy),那么你总是可以浏览代码(正如我在上面的Code Walk中所示).如果你这样做 – 你需要遵循执行的路径,寻找args.pop()的出现.如果您关注的SymPy中还有其他功能,请在评论中告诉我 – 但希望这种通用方法对您有用.

我在上面假设您了解* args和** args语法.如果这对您来说并不完全清楚 – python official tutorial的这一部分将对其进行处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值