当导用模块与包的import与from的问题(模块与包的调用)

当在views.py里写impor models会不会报错呢?

1、Python里面的py文件都是每一行的代码。

2、Python解释器去找一个模块的时候,只去sys.path的路径里找

3、django项目启动(django项目的启动文件是manage.py)启动项目是将manage.py的路径添加如:F:\pylx\day75\form_lx\manage.py 添加到sys.path就是按这里面的顺序去找

4、单独执行脚本(一个py文件),把当前文件路径添加到sys.path里面,

模块与包之间的调用

模块的概念

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。

使用模块有什么好处?

最大的好处是大大提高了代码的可维护性。

其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

所以,模块一共三种:

  • python标准库
  • 第三方模块
  • 应用程序自定义模块

另外,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突

模块的导入方法

1、import

当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?答案就是解释器有自己的搜索路径,存在sys.path里。

import的两个过程:》》创建新的名称空间  》》执行被调用的模块(第二次不会被执行)

2、form...import

这个声明不会把整个modulename模块导入到当前的命名空间中,只会将它里面的name1或name2单个引入到执行这个声明的模块的全局符号表。

其中, from…import* 语句提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。

三、包

1、如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

2、每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。

调用包就是执行包下的__init__.py文件

3、添加路径到sys.path

import sys,os
BASE_DIR=os.path.dirname(os.path.dirname(os.path.static)))
sys.path.append(BASE_DIR)

原文地址:https://www.cnblogs.com/jassin-du/p/8394830.html

时间: 2024-10-05 02:36:20

当导用模块与包的import与from的问题(模块与包的调用)的相关文章

包的定义和导入,系统常用的包

包的定义 package是在使用多个类和接口的时候,为了避免名字重复而采用的一种措施,直接在程序中加入package关键字即可. 包的定义格式: package 包名称.子包名称: package org.lxh.demo08 ; // 定义一个包 class Demo{ public String getInfo(){ return "Hello World!!!" ; } }; public class PackageDemo01{ public static void main(

python中import或from使用及模块和包的使用总结

一.简介 1.模块(module):根据python官方的解释,所谓模块就是一个.py文件,用来存放变量,方法的文件,便于在其他python文件中导入(通过import或from); 2.包(package): 包是更大的组织单位,用来组织区别管理多个模块文件;引用官方的说法:"假设你想要设计一个模块(包)来统一处理声音文件和声音数据的集合.有许多不同的声音文件格式(例:.wav,.aiff,.au,.mp3等),因此您可能需要创建和维护不断增长的模块集合,以便在各种文件格式之间进行转换.对于声

基础入门_Python-模块和包.深入Celery之应用配置/独立模块配置实践?

配置简介: 说明: Celery的配置文件非常强大,支持在应用上设置,也可以使用一个独立的配置模块,具体需要调整的默认选项可通过http://docs.jinkan.org/docs/celery/configuration.html#configuration 获取. # 方式一 : 直接在应用上设置,通过app.conf.update可一次性设置多个选项,常用于小型项目 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date    : 20

第十七节(is-a 、is-like-a 、has-a,包和 import )

is - a 类与类之间的继承关系: is - like - a 类与接口之间的关系: has - a 关联关系: public class Animal{ public void method01(); } // 类与类之间的关系 class Dog extends Animal{ // Dog is a Animal } /////////////////////////////////////////// public interface I{ public void method1();

es6(六):module模块(export,import)

es6之前,社区模块加载方案,主要是CommonJS(用于服务器)和AMD(用于浏览器) 而es6实现的模块解决方案完全可以替代CommonJS和AMD ES6模块设计思想:尽量静态化,在编译时就能确定模块的依赖关系,以及输入输出的变量 而CommonJS和AMD模块,都只能在运行时确定这些东西 同时:模块中使用的是严格模式 <script type="module" src="es7-1.js" ></script> <script

Java学习(匿名对象、内部类、包、import、代码块)

一.匿名对象 概念:匿名对象是指在创建对象时,只有创建的语句,却没有把对象地址值赋给某个变量. 特点: (1)匿名对象直接使用,没有变量名.当做形参使用. new Person().name="张三"; (2)匿名对象只能调用一次方法,再次调用相当于又创建了一个新的匿名对象 new Person().setName("小明"); System.out.println(new Person().getName()); //输出为空,因为又创建了一个新的匿名对象,跟上一

Python中import导入上一级目录模块及循环import问题的解决

使用python进行程序编写时,经常会使用第三方模块包.这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入.不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用:为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用.本篇就针对常见的模块调用方法汇总下. 一.同级目录下的调有 程序结构如下: -- src     |-- mod1.p

[Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题

http://www.cnblogs.com/mizhon/p/4242073.html [Eclipse] - 解决导入flask模块出现的Unresolved Import flask问题 最近想学习一下flask,在安装了flask之后在Eclipse里import flask模块的时候发现会有如下问题: Google了一圈,相应的资料都看了,这几篇有帮助(需FQ),我按照第一个参考设置了一下,红叉仍然没有去掉. 第二个博客是英文的且无图无真相,就没仔细看(但其实是解决了问题的).这里就自

基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?

简单介绍: 说明: 此模块提供了一系列自省函数,可获取模块/类/方法/函数/traceback/帧对象/代码对象的信息 快速安装: 内置模块 测试相关: inspect.ismodule(object) -> True/False 说明: 判断object是否为模块 inspect.isclass(object) -> True/False 说明: 判断object是否为类 inspect.ismethod(object) -> True/False 说明: 判断object是否为方法