Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #47582
| References | <c854d114-bcfa-4491-8a4a-a377998bdf0e@googlegroups.com> |
|---|---|
| From | Zachary Ware <zachary.ware+pylist@gmail.com> |
| Date | 2013-06-10 12:01 -0500 |
| Subject | Re: Questions on "import" and "datetime" |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2974.1370883714.3114.python-list@python.org> (permalink) |
On Mon, Jun 10, 2013 at 10:37 AM, Yunfei Dai <yunfei.dai.sigma@gmail.com> wrote: > Hi all, Hi Yunfei, > > I have some questions on "import": > > 1."from datetime import datetime" works well. But I am confused why "import datetime.datetime" leads to importerror. "from xlrd import open_workbook" could be replaced by "from xlrd.open_workbook" without any problem. I assume you mean "import xlrd.open_workbook" here, as "from xlrd.open_workbook" would be a SyntaxError :) > The only difference here is that if "from xlrd import open_workbook" is used we do not have to write "xlrd.open_workbook" in the following code but just "open_workbook". So my understanding of the difference is "from...import..." shortens the code (just like "using namespace std" in C++) but maybe leads to name clash. "from ... import ..." imports an object from a module and assigns it to a local name that is the same as the name in the other module. In other words, the following two examples do the same thing: from foo import bar import foo;bar = foo.bar If foo.bar happens to be a module (module 'bar' in package 'foo'), you could also do this: import foo.bar as bar ...and that restriction is where your problem lies. > But what is the problem of datetime? I'm not familiar with xlrd, but I believe the difference between xlrd.open_workbook and datetime.datetime would be that xlrd.open_workbook is a module in a package, while datetime.datetime is a class in a module. 'from ... import ...' can import any object from the target module/package, and assign it to a local name. 'import ...' on the other hand can only import a module (you'll notice the ImportError you get when you try 'import datetime.datetime' is 'No module named datetime'. This particular example is a bit confusing due to there being a class in a module of the same name, but try 'import datetime.date' for a clearer message. > 2.I am also comfused that "datetime.datetime" is a function but whithin "datetime.datetime" there are lots of other functions. So what is the type of "datetime.datetime" on earth? is it a function, or a class or a folder(library) here? datetime.datetime is actually a type of type 'type' (as can be seen with 'import datetime;type(datetime.datetime)'). In Python 2, this means it is a new-style class (meaning it is a subclass of 'object'). In Python 3, it's just a class (since there are no longer old-style classes). > Thanks very much in advance! Very looking forward to your answers. > > Best, > Yunfei > I hope I have actually answered your question and not just muddied things further for you. You can of course ask again if I've made things worse :) -- Zach
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-10 08:37 -0700
Re: Questions on "import" and "datetime" Zachary Ware <zachary.ware+pylist@gmail.com> - 2013-06-10 12:01 -0500
Re: Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-12 03:29 -0700
Re: Questions on "import" and "datetime" Dave Angel <davea@davea.name> - 2013-06-10 15:10 -0400
Re: Questions on "import" and "datetime" Yunfei Dai <yunfei.dai.sigma@gmail.com> - 2013-06-12 03:41 -0700
csiph-web