在Python中有没有“最佳”做法?

1 投票
4 回答
640 浏览
提问于 2025-04-16 03:43

我刚开始学习Python,主要是想用它来和Maya以及它的API一起工作。我发现当我在做某件事情的时候,通常有2到3种方法可以实现我想要的功能。例如:

for key, value in locNameConnector.iteritems():
    value = locNameConnector[key]
    cmds.connectJoint(value, key, pm=True)

或者

for name in locNameConnector:
    cmds.connectJoint(locNameConnector[name][0], name, pm=True)

现在这段代码是在调用Maya里的特定功能,但我想问的是,哪种写法更正确呢?我觉得第一种可能更好,因为它利用了Python的优势,而第二种写法似乎可以用任何语言来实现。有没有更正确的写法?哪种方法更快呢?

4 个回答

0

我遵循一个原则:“只要能用的就是好的”。问问自己,哪种方式最适合我、我的代码或者我的应用,这就足够了。
不过,有些非常专业的Python程序员看到不“符合Python风格”的代码时,会非常生气。想了解更多,可以看看这里的内容。

1

通常来说,满足要求的方法不止一种,但往往只有一种是正确的。这其实是Python的一个核心设计原则(跟Perl之类的语言不同)。在你的例子中,当你需要键值对,而不仅仅是键或值时,就可以使用 iteritems

5

Python的一个哲学理念是:

应该有一种——最好只有一种——明显的方法来做这件事。

(你可以在Python的命令行中输入 import this 来查看这些理念,这些理念被称为《Python之禅》。)

Python确实努力让事情变得简单,尽量只有一种做法。但对于任何超出基本功能的编程语言来说,做任何复杂的事情总会有不止一种方法,这就是编程的特点。不过,即使有多种方法,通常也会有一种被认为更“符合Python风格”。

关于你提到的例子,它们似乎并不相同——第一个是在 l_LegJointConnectors 中查找 value,而第二个是在 locNameConnector 中查找。第一个例子中的第二行是应该存在的吗?如果不是,那么第一个例子肯定比第二个更符合Python的风格。

撰写回答