许多框架将其配置文件保留为与程序其余部分不同的语言。例如,Appengine以yaml格式保持配置。比较,DJango settings.py是一个python模块。我可以看到很多不利之处。
如果它与程序的其他部分使用相同的语言,我可以
在配置文件中做一些有趣的事情。
MEDIA_DIR = os.path.join(os.path.dir(__file__), 'media')
#Or whaever the correct cals are, you get the idea.
import conf
等。如果它是像C / C ++这样的重量级语言,我可以看到它的优点,但对于python,为什么它才有意义。这似乎就是在不增加任何好处的情况下夺走权力。
答案 0 :(得分:12)
一些框架设计人员认为配置文件不适合重逻辑。正如MVC框架阻止您将逻辑放在它不属于的地方一样,配置文件也会阻止您将编程放在不属于它的位置。
这是品味和哲学的问题。
那就是说,我更喜欢Django的方法。
答案 1 :(得分:5)
Python可能并不总是唯一可以运行appengine的语言。 因此,相同的yaml配置文件可以驱动用例如java或perl
编写的appengine应用程序答案 2 :(得分:5)
有时您需要使用自动/ GUI工具来解析和/或生成和/或修改配置文件。如果你的conffile是一个python脚本,这并不容易。
答案 3 :(得分:2)
有一个很好的理由:如果你的程序是在一个不安全的环境中分发的,比如用户计算机,那么执行一个容易修改的文本文件就会对许多病毒开放。对于应用程序托管在服务器上的django应用程序而言,情况就不那么好了 - 这是一个安全的环境。但是使用py2exe在Windows上分发应用程序时,你应该避免让你的程序执行随机的东西。
使用像YAML这样的语法的另一个原因是你可以使用其他工具操作文件,甚至是其他语言,这种格式是可移植的并且有足够的文档记录。
那就是说,当我需要一个带有python程序的配置文件时,我使用了一个带有一些安全措施的python dictionnary:
答案 4 :(得分:-1)
他们可能没有想到他们可以做到这一点。许多程序员来自过去,脚本语言很慢,并且不像编程语言那么简单(只需看看Unix shell之类的东西)。当漂亮的动态语言出现时,他们只是坚持“仅文本配置文件”,因为这是他们一直以来所做的。