Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 当执行“时,解释器做什么?”;从xyz导入Abc;?_Python 2.7_Python 2.x_Python - Fatal编程技术网

Python 2.7 当执行“时,解释器做什么?”;从xyz导入Abc;?

Python 2.7 当执行“时,解释器做什么?”;从xyz导入Abc;?,python-2.7,python-2.x,python,Python 2.7,Python 2.x,Python,在这些情况下,口译员做什么 从xyz导入Abc 从xyz导入* 它是否必须解析完整的文件xyz.py?一种方法应该比另一种更快吗?或者,人们更喜欢第一种方法而不是第二种方法,这仅仅是可读性的问题吗?这不应该对性能产生任何影响,因为整个模块都必须以任何方式处理 区别在于可读性和名称空间的污染。为了最大限度地减少名称冲突和由于名称隐藏而导致的意外行为,谨慎的做法是只导入您实际使用的对象 发件人: 导入到模块中的所有顶级名称也可以从该模块再次导入 除非设置了\uuuuuuuuuuuuuuuuuuu参数

在这些情况下,口译员做什么

  • 从xyz导入Abc
  • 从xyz导入*

  • 它是否必须解析完整的文件xyz.py?一种方法应该比另一种更快吗?或者,人们更喜欢第一种方法而不是第二种方法,这仅仅是可读性的问题吗?

    这不应该对性能产生任何影响,因为整个模块都必须以任何方式处理

    区别在于可读性和名称空间的污染。为了最大限度地减少名称冲突和由于名称隐藏而导致的意外行为,谨慎的做法是只导入您实际使用的对象

    发件人:

    导入到模块中的所有顶级名称也可以从该模块再次导入 除非设置了
    \uuuuuuuuuuuuuuuuuuu
    参数。因此,你通常会得到更多的物品 添加到您的本地名称空间,而不是您所期望的


    每个命令后的命名空间不同:

    >>> from math import *
    >>> len(vars())
    46
    >>> vars()
    {'pow': <built-in function pow>, 'fsum': <built-in function fsum>, 'cosh': <built-in function cosh>, 'ldexp': <built-in function ldexp>, 'hypot': <built-in function hypot>, 'acosh': <built-in function acosh>, 'tan': <built-in function tan>, 'asin': <built-in function asin>, 'isnan': <built-in function isnan>, 'log': <built-in function log>, 'fabs': <built-in function fabs>, 'floor': <built-in function floor>, 'atanh': <built-in function atanh>, 'sqrt': <built-in function sqrt>, '__package__': None, 'frexp': <built-in function frexp>, 'factorial': <built-in function factorial>, 'degrees': <built-in function degrees>, 'pi': 3.141592653589793, 'log10': <built-in function log10>, '__doc__': None, 'asinh': <built-in function asinh>, 'fmod': <built-in function fmod>, 'atan': <built-in function atan>, '__builtins__': <module '__builtin__' (built-in)>, 'copysign': <built-in function copysign>, 'cos': <built-in function cos>, 'ceil': <built-in function ceil>, 'atan2': <built-in function atan2>, 'isinf': <built-in function isinf>, 'sinh': <built-in function sinh>, '__name__': '__main__', 'trunc': <built-in function trunc>, 'expm1': <built-in function expm1>, 'e': 2.718281828459045, 'tanh': <built-in function tanh>, 'radians': <built-in function radians>, 'sin': <built-in function sin>, 'lgamma': <built-in function lgamma>, 'erf': <built-in function erf>, 'erfc': <built-in function erfc>, 'modf': <built-in function modf>, 'exp': <built-in function exp>, 'acos': <built-in function acos>, 'log1p': <built-in function log1p>, 'gamma': <built-in function gamma>}
    
    
    >>> ================================ RESTART ================================
    
    
    >>> from math import log10
    >>> len(vars())
    5
    >>> vars()
    {'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', 'log10': <built-in function log10>, '__doc__': None}
    
    数学导入中的
    >>*
    >>>len(vars())
    46
    >>>vars()
    ,,“acosh':,“acosh':,,“acosh':,,“acosh':,“tan':,“asin':,“asin':,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“atan2”:,“isinf:,“sinh:,”名字“,”特鲁克“,”expm1“,”e:”2.718281828459045,“tanh:,”弧度“,”sin“,”lgama“,”erf“,”erfc“,”modf“,”exp“,”acos“,”log1p“,”gamma“:”
    >>>=================================================重新启动================================
    >>>从数学导入日志10
    >>>len(vars())
    5.
    >>>vars()
    {uuuu内置项:,'uuuuu包:无,'uuuuu名称:''uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
    
    似乎在任何地方都没有“名称空间污染”的定义。你能更清楚地说明它的意思吗?有趣的是,wikipedia是在xyz import*@erikb85中的Python
    上下文中的:您导入到模块中的所有顶级名称,也可以从该模块中再次导入,除非设置了
    \uuuuuuuuuuuuu
    参数。因此,您通常会在本地名称空间中添加比预期多得多的项。名称空间用于防止同名的类/函数/变量相互冲突。通过导入模块中的所有内容,可以增加不想与实际想使用的项目一起使用的项目的机会。使用合格的进口产品可以最大限度地降低这种风险。我在答案中添加了Martijns解释,并给了它一个勾号,因为我认为现在它非常完整和富有表现力。如果没有更详细的解释,我无法给你一个勾号,但这对未来的读者来说肯定非常重要+1.