Julia未使用`using`语句为何能调用包?技术问询
Julia未显式导入包却能调用内容的原因
作为从Python转来的开发者,你遇到的这种情况是Julia模块与项目环境机制带来的特性,主要有几个原因:
脚本共享父级代码的作用域
这个示例脚本大概率是被包内其他已经执行过using Silico和using Mehrotra的代码通过include()加载的。Julia中,include的代码会完全继承当前模块的作用域——就像Python里在一个已经import了库的文件里用exec运行另一个脚本,子脚本可以直接用父脚本的导入,不用重复写。包开发环境的上下文关联
这个示例属于Silico包的开发仓库,运行时肯定是用julia --project=.激活了包的本地环境。如果Silico的主模块代码里已经导入了Mehrotra,那么在这个环境下运行脚本时,脚本会默认处于Silico模块的作用域内,自然能直接调用两个包的内容。模块的导出与传递导入
Julia的模块支持把其他包的内容导入后再导出。比如Silico的主模块里可能写了using Mehrotra并导出了相关函数,这种情况下,只要处于Silico的作用域中,就能直接用Mehrotra的内容,不用额外导入。
内容的提问来源于stack exchange,提问作者user3180
相关产品推荐
相关产品推荐

