如何使用PyClips获取规则激活来调用python函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用PyClips获取规则激活来调用python函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1043字,纯文字阅读大概需要2分钟。
内容图文
![如何使用PyClips获取规则激活来调用python函数](/upload/InfoBanner/zyjiaocheng/776/4e6e2b34c9034ed7bbde8bbc6af4019c.jpg)
我正在尝试使用PyClips,我希望将它与Python紧密集成,以便在激活规则时调用python函数.
这是我到目前为止:
import clips
def addf(a, b):
return a + b
clips.RegisterPythonFunction(addf)
clips.Build("""
(defrule duck
(animal-is duck)
=>
(assert (sound-is quack))
(printout t "it’s a duck" crlf))
(python-call addf 40 2 )
""")
但是,当我断言“动物是鸭子”的事实时,我的python函数没有被调用:
>>> clips.Assert("(animal-is duck)")
<Fact 'f-0': fact object at 0x7fe4cb323720>
>>> clips.Run()
0
我究竟做错了什么?
解决方法:
有一个错位的括号会很快关闭规则而忽略了python-call:
clips.Build("""
(defrule duck
(animal-is duck)
=>
(assert (sound-is quack))
(printout t "it's a duck" crlf))
(python-call addf 40 2 ) ^
""") ^ |
| this one
|
should go here
如果要验证addf实际返回42,结果可以绑定并打印出来:
clips.Build("""
(defrule duck
(animal-is duck)
=>
(assert (sound-is quack))
(printout t \"it's a duck\" crlf)
(bind ?tot (python-call addf 40 2 ))
(printout t ?tot crlf))
""")
clips.Assert("(animal-is duck)")
clips.Run()
t = clips.StdoutStream.Read()
print t
内容总结
以上是互联网集市为您收集整理的如何使用PyClips获取规则激活来调用python函数全部内容,希望文章能够帮你解决如何使用PyClips获取规则激活来调用python函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】