了解模块/包装的问题

时间:2019-02-22 11:47:01

标签: python flask

所以我是Python和Flask的新手,我目前正在Flask / Python中玩一些CRUD语句

我想知道我是否完全了解发生了什么,但是对于以下主题我有点不安全:模块,包导入

我想用Flask连接到我的SQLite数据库。这样做,我必须进行一些导入:

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

完成导入后的第一件事是设置基本目录(= basedir):

basedir = os.path.abspath(os.path.dirname(__file__))

关于这些步骤,我有一些疑问:

问题:

import os
from flask import Flask

第一次导入(“ import os”)是否意味着我仅使用名为“ os”的模块?这是一个独立的.py-“文件”,其中包含类,一些属性和方法,对吧?

第二次导入(“从烧瓶导入烧瓶”)是否表示我正在使用软件包“烧瓶”并导入模块“烧瓶”?例如,如果还有其他导入,例如“ render_template”,那是否表示我正在使用此模块,或者这是模块“ Flask”中的方法?

第二个问题:

basedir = os.path.abspath(os.path.dirname(__file__))

我想了解这段代码。首先,我要声明一个名为basedir的变量。然后,我将将该变量的值设置为当前.py-script的绝对路径。现在进入单个步骤:

os =>表示我正在使用已经导入的模块“ os”,对吗? path =>表示我正在使用该模块中的属性? abspath =>表示我正在“ os”模块中使用一种称为“ abspath(value)”的方法? 如果我得到其他答案,那么接下来的事情就会很清楚:“

(os.path.dirname(__filename__))

__filename__ =>这是内置的Python属性,对吧?

2 个答案:

答案 0 :(得分:0)

我要回答第一个问题。基本上,当您仅执行导入操作时,python会使用其所有模块和功能导入整个文件。就像您import math一样,您可以使用math.ceil和其他功能。但是,当您说from math import add时,您只会得到ceil之类的特定模块,如ceil(2.7)。 有关更多详细信息,请阅读here

答案 1 :(得分:0)

  1. Does the first import ("import os") mean that I'm only using a Module called "os"?

正如语句所暗示的那样,您正在导入 OS模块,因此可以在python脚本的os模块中使用这些功能。

因此,现在您可以在脚本中创建os.function()语句。默认情况下,操作系统模块是使用Python安装的。 Here is info on the os module

  1. Does the second import ("from flask import Flask") mean that I'm using the package "flask" and import the module "Flask"? If, e.g., there would be another import like "render_template", does that mean I'm using this module or is it a method from the module "Flask"?

这可能会造成混淆,因为函数名称和import语句具有相同的名称。您仅从Flask模块中导入 function 烧瓶,而不是Flask模块中存在的所有函数。 这样做有多种原因。 On是简化调用函数。另一个可能是节省系统资源,因为您只是

  1. os => means that I'm using the already imported module "os", right? path => means that I'm using an attribute from that module? abspath => means that I'm using a method within the "os" module called "abspath(value)"?

确实,请阅读文档以获取模块开发人员的解释。

  1. Filename

以下是Python中filename用法的说明。