小编V_T*_*_TS的帖子

(py2neo)如何检查是否存在关系?

假设我有以下代码:

    link = neo4j.Path(this_node,"friends",friend_node) #create a link between 2 nodes
    link.create(graph_db) #add the link aka the 'path' to the database
Run Code Online (Sandbox Code Playgroud)

但是我们稍后会说:

link2 = neo4j.Path(friend_node,"friends",this_node)
link2.create_or_fail(graph_db)
Run Code Online (Sandbox Code Playgroud)

基本上,link.create_or_fail()将是一个将link2路径添加到数据库的函数,或者如果路径已经存在则失败.

在这种情况下,当我打电话时link = neo4j.Path(this_node,"friends",friend_node),我已经创建了一条路径this_node,friend_node因此link2.create_or_fail(graph_db)不应该做任何事情.这样的功能可能吗?

python neo4j py2neo

3
推荐指数
1
解决办法
2188
查看次数

Python递归与int不同于列表?

有点蟒蛇新手,所以请耐心等待.我在python中有两个代码片段:

def summer(step, track, lst):
    if track<10:
        lst.append(1)
        summer(step,track+step,lst)
    return lst
Run Code Online (Sandbox Code Playgroud)

调用summer(1,1,[])返回

[1, 1, 1, 1, 1, 1, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)

现在让我说我有:

def summer(step, track):
    if track<10:
        track +=step
        summer(step,track)
    return track
Run Code Online (Sandbox Code Playgroud)

调用summer(1,1)返回2

请注意这两个片段之间的相似性,在第一个片段中,我将附加到列表中,最后返回该列表.它按预期工作.

在第二个中,我改为递增一个变量,但最后当我返回它时,它不能按预期工作(当它应该返回11时返回2).我明白这是因为在第二个片段中我是递归调用的

summer(step,track)
Run Code Online (Sandbox Code Playgroud)

当我应该说

return summer(step,track)
Run Code Online (Sandbox Code Playgroud)

但为什么在第一个片段中,我可以简单地打电话

summer(step,track+step,lst)
Run Code Online (Sandbox Code Playgroud)

代替

return summer(step,track+step,lst)
Run Code Online (Sandbox Code Playgroud)

它仍然有效吗?即看起来跟踪列表和递归中的int是不同的处理?

python recursion

0
推荐指数
1
解决办法
207
查看次数

标签 统计

python ×2

neo4j ×1

py2neo ×1

recursion ×1