小编unc*_*ive的帖子

Python中默认参数的范围

我正在学习Python并遇到了一个我不太了解的例子.在官方教程中,给出了以下代码:

i = 5

def f(arg=i):
    print(arg)

i = 6
f()
Run Code Online (Sandbox Code Playgroud)

来自c ++,直觉对我来说这将打印5.但我也想理解技术解释:"默认值在定义范围内的函数定义点进行评估." "定义范围"在这里意味着什么?

python parameters scope parameter-passing default-parameters

5
推荐指数
1
解决办法
174
查看次数

检查 Prolog 中的单元素列表

我对 Prolog(来自 C++)非常陌生,并且无法理解使用列表作为参数。特别是,我想知道如何解释列表只有一个元素(尾部为“空”)的情况。为什么我不能将 [L] 单独作为参数?为什么必须明确包含尾部?

/** Trying to print out the head of the list */
writeList([L|_]) :- write(L).      /** Works fine */
writeList([L]) :- write(L).        /** Doesn't work. Will return false, but why? */
writeList([L]) :- write([L]).      /** I thought I'd try this to see if it was a 
                                   problem with write(), but this returns false as well. */
Run Code Online (Sandbox Code Playgroud)

我想出的唯一解决方案(不在“:-”之后创建测试)是:

writeList([L|[]]) :- write(L).
Run Code Online (Sandbox Code Playgroud)

但必须指定尾部是[],似乎有点乱。有没有更干净的方法来做到这一点?

抱歉,如果这个问题非常愚蠢——我试图找到这个(非常基本)问题的答案,但我怀疑我的基本理解存在问题。

list prolog

4
推荐指数
1
解决办法
9968
查看次数