我正在玩Python 2.7,每个人都知道,在每个程序的开头,你总是需要导入模块。例如:import random
import time
for x in range(1, 300):
print random.randint(1,100)
time.sleep(1)
print "Done!"
无论如何,我在想,为什么我必须手动导入我的所有模块?为什么Python不会像这样导入它们。
当然,我可以理解为什么它不像这样导入:from random import randint
from time import *
for x in range(1, 300):
print randint(1,100)
sleep(1)
print "Done!"
由于某些功能名称可能会发生冲突。但是,如果你必须在开始时定义函数的位置,例如random.在random.randint(1,100)。
现在,现代计算机如此强大,似乎合乎逻辑的是自动导入每个模块而不是浪费代码行,并且必须找到您需要的模块然后手动导入它时可以轻松实现自动化。那么,为什么python不会在启动时自动导入每个模块?编辑1 :(已删除)编辑2:我已经制作了一个小程序的新版本,可以通过运行导入我找到的每个模块:import sys
sys.builtin_module_names
这是我的程序的第2版。不幸的是它没有每个模块(还有!)x = int(1000000)
def test():
global x
x -= 1
print "Iterations Left: ", x
import __builtin__
import __main__
import _ast
import _bisect
import _codecs
import _codecs_cn
import _codecs_hk
import _codecs_iso2022
import _codecs_jp
import _codecs_kr
import _codecs_tw
import _collections
import _csv
import _functools
import _heapq
import _hotshot
import _io
import _json
import _locale
import _lsprof
import _md5
import _multibytecodec
import _random
import _sha
import _sha256
import _sha512
import _sre
import _struct
import _subprocess
import _symtable
import _warnings
import _weakref
import _winreg
import array
import audioop
import binascii
import cPickle
import cStringIO
import cmath
import datetime
import errno
import exceptions
import future_builtins
import gc
import imageop
import imp
import itertools
import marshal
import math
import mmap
import msvcrt
import nt
import operator
import parser
import signal
import strop
import sys
import thread
import time
import xxsubtype
import zipimport
import zlib
def start():
from timeit import Timer
t = Timer("test()", "from __main__ import test")
print t.timeit()
start()
这花了不到一秒钟,在任务管理器中,Python shell目前在Windows 8.1中使用24.5MB的RAM。另外,我没有配备固态硬盘或任何东西的功能强大的电脑,我有一台大约4岁的戴尔笔记本电脑!