Python 什么是;从…起“进口…”;什么意思?

Python 什么是;从…起“进口…”;什么意思?,python,Python,在前两行中,我对正在发生的事情有些了解,但我想确保我完全理解它,因为这似乎很重要。如果您导入sys,您将可以通过sys.foo或sys.bar()访问模块sys中的函数和变量。这会导致大量键入,尤其是使用子模块中的内容时(例如,我经常必须访问django.contrib.auth.models.User)。 为了避免这种冗余,可以将一个、多个或所有变量和函数引入全局范围从os.path导入exists允许您使用函数exists(),而无需始终使用os.path. 如果您想从os.path导入多个

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

如果您导入sys,您将可以通过
sys.foo
sys.bar()
访问模块sys中的函数和变量。这会导致大量键入,尤其是使用子模块中的内容时(例如,我经常必须访问
django.contrib.auth.models.User
)。 为了避免这种冗余,可以将一个、多个或所有变量和函数引入全局范围<代码>从os.path导入exists允许您使用函数
exists()
,而无需始终使用
os.path.

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

理论上,您可以从os.path import*使用
导入所有变量和函数,但通常不鼓励这样做,因为您可能最终会覆盖本地变量或函数,或隐藏导入的变量或函数。请参阅以获取解释

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()
指:


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

在bonehead术语中,这意味着

from module import x
你为什么需要这样的东西

考虑到这一点,没有来自。。。import语句您的代码如下所示

from USA import iPhone # instead of importing the whole USA for an iPhone you now will just import the iPhone into your program,
与来自。。。导入语句看起来像

import USA

variableA = USA.iPhone()

你能把这个比喻成烹饪吗?做煎饼?从冰箱进口鸡蛋。这比每次说“加厨房、冰箱、鸡蛋、蛋黄[2]”要容易得多,可以是餐具室、橱柜或冰箱。。。无论我想从哪里得到原料,进口的正是我想要的原料——面粉、牛奶和/或鸡蛋。这比烹饪时实际生产每种配料都要容易。我在这里走对了吗?如果您的
冰箱
餐具室
都包含
pop
,那么使用:
从冰箱导入*
,然后使用
从餐具室导入*
将覆盖您以前对
pop
的定义。然后,你会认为你用了冰箱.pop,但实际上却用了餐具室.pop,这意味着你喝了一杯热饮料:P
from USA import iPhone

variableA = iPhone()