“来自......导入......”的含义是什么?

时间:2012-07-06 12:18:53

标签: python

from sys import argv
from os.path import exists

script, from_file, to_file = argv

print "Copying from %s to %s" % (from_file, to_file)

# we could two on one line too, how?
input = open(from_file)
indata = input.read()

print "The input file is %d bytes long" % len(indata)
print "Does the output file exist? %r" % exists(to_file)
print "Ready, hit return to continue, CTRL-C to abort."

raw_input()

output = open(to_file, 'w')
output.write(indata)

print "Alright, all done."

output.close()
input.close()

在前两行我对发生的事情有所了解,但我想确保我完全理解它,因为这似乎很重要。

3 个答案:

答案 0 :(得分:17)

如果执行import sys,您将可以通过sys.foosys.bar()访问模块sys中的函数和变量。这可以进行大量的输入,特别是如果使用子模块中的某些内容(例如,我经常需要访问django.contrib.auth.models.User)。 为避免这种冗余,您可以将一个,多个或所有变量和函数引入全局范围。 from os.path import exists允许您使用函数exists(),而无需一直使用os.path.作为前缀。

如果你想从os.path导入多个变量或函数,你可以这样做 from os.path import foo, bar

理论上,您可以使用from os.path import *导入所有变量和函数,但通常不鼓励这样做,因为您最终可能会覆盖局部变量或函数,或隐藏导入的变量或函数。有关说明,请参阅What's the difference between "import foo" and "from foo import *"?

答案 1 :(得分:8)

from module import x

表示:

加载名为module的模块,但仅将x提取到当前名称空间。

答案 2 :(得分:2)

在骨头方面,这意味着,

from USA import iPhone # instead of importing the whole USA for an iPhone you now will just import the iPhone into your program,

为什么你需要这样的东西?

考虑到这一点,如果没有from ... import语句,您的代码将如下所示

import USA

variableA = USA.iPhone()

使用from ... import语句,

from USA import iPhone

variableA = iPhone()