2024-05-14 20:36:47 发布
网友
我一直想知道为什么从模块导入特定对象的语法是from module import x, y, z,而不是import x, y, z from module。我不是以英语为母语的人,但后者不是更正确/自然吗?
from module import x, y, z
import x, y, z from module
那么,为什么要把“开始”放在第一位呢?只是为了简化语法(不需要太多的前瞻性)?是不是想让这两种进口产品在视觉上更加鲜明?或者是其中一个明显的方式是“除非你是荷兰人,否则一开始就不明显”的情况?;)
我不知道这种语法的完整遗产,因为它可以追溯到Python1.x时代。但是我发现能够扫描源代码的左侧并快速找到脚本所依赖的模块名非常有用。如果一个语句是“import a,b,c,d,e,really_long_name,a lsdf,lsdf from blah”,我需要一段时间才能发现这个脚本依赖于blah。
一个非常疯狂的猜测,可能完全没有意义,但我从Modula-2知道这个语法(伙计,那是20年前的事了,我觉得自己老了)。。。也许Python是从中得到灵感的?
我不知道为什么会这样做,但我会这样做,因为作为一个工程类型,从一般类别开始深入到具体细节对我来说似乎更自然。
这也意味着如果按顺序处理,解析器将不得不存储更少的内容。使用:
import x, y, z from a
你必须记住x、y和z。使用:
x
y
z
from a import x, y, z
你只需要记住a。
a
这就是我第一次遇到Perl的post if variant时遇到这么多麻烦的原因:
$x = $y if $y > 40;
因为你事先不知道你读的是不是有条件的。
我不知道这种语法的完整遗产,因为它可以追溯到Python1.x时代。但是我发现能够扫描源代码的左侧并快速找到脚本所依赖的模块名非常有用。如果一个语句是“import a,b,c,d,e,really_long_name,a lsdf,lsdf from blah”,我需要一段时间才能发现这个脚本依赖于blah。
一个非常疯狂的猜测,可能完全没有意义,但我从Modula-2知道这个语法(伙计,那是20年前的事了,我觉得自己老了)。。。也许Python是从中得到灵感的?
我不知道为什么会这样做,但我会这样做,因为作为一个工程类型,从一般类别开始深入到具体细节对我来说似乎更自然。
这也意味着如果按顺序处理,解析器将不得不存储更少的内容。使用:
你必须记住
x
、y
和z
。使用:你只需要记住
a
。这就是我第一次遇到Perl的post if variant时遇到这么多麻烦的原因:
因为你事先不知道你读的是不是有条件的。
相关问题 更多 >
编程相关推荐