复习

'''
1.模块
-- 一系列功能的集合体,用文件来管理一系列有联系的功能,该文件我们称之为模块,文件名就是模块名
-- import | from...import 来导入模块,从而使用模块中的功能
-- py文件 | 管理py文件的包 | c编译的内置模块 | c、C++通过的DLL拓展
-- 内置模块 | 自定义模块 2.导入模块完成的三件事
1)编译产生模块对应的pyc文件
2)执行模块中的代码,形成模块的全局名称空间,将模块中的名字存放在该模块的全局名称空间中
3)在到模块的文件中,形成一个与模块名同名的名字,指向模块的全局名称空间 3.起别名:原名失效 4.自定义模块:系统 | 第三方 | 自己 5.加载顺序:内存 -> 内置 -> sys.path
-- 所有能被导入的模块,一定在sys.path存放的路径中可以找到 6.环境变量sys.path:存放路径的list,可以任意操作,但默认第一个成员一定是当前执行文件所有的目录 7.from...import a as m_a, b as m_b | from...import * (__all__ = ['a', 'b']) 8.import | from...import 采用的是依赖sys.path的绝对导入 9.链式导入 => 循环导入
-- 问题:使用名字在产生名字之前,导入模块过早
-- 解决:将导入模块的逻辑放在产生名字之后,延迟导入
'''

今日内容

'''

1.导模块的细节
2.包的概念与使用
3.包中的相对导入语法
4.项目开发规范
5.logging
''' '''
常用模块
os,sys,time
json ******,pickle
re(正则) ******
'''

跨文件夹导入模块

# 1.如果a文件夹所在目录在环境变量,a文件夹中的ma模块可以被以下方式导入
import a.ma | from a import ma # 2.如果a文件夹所在目录在环境变量,a文件夹中的b文件夹的mb模块可以被以下方式导入
import a.b.mb | from a.b import mb # 3.如果a文件夹所在目录在环境变量,a文件夹中的b文件夹的mb模块中的bbb名字要被直接导入
import a.b.mb.bbb # 错误:所有.左侧必须是文件夹 *****
from a.b import mb.bbb # 错误:所有.左侧必须是文件夹
from a.b.mb import bbb # 正确

模块的两种被执行方式

# 总结:
# 1.一个py文件作为自执行文件,__name__变量的值为 '__main__'
# 2.一个py文件作为模块被导入执行,__name__变量的值为 '文件(模块)名' # 如何区别两种方式,可以让一个文件可以自执行,也可以被导入执行 共存
# 在这样的py文件中写:
if __name__ == '__main__':
# 自执行的逻辑 => 因为在文件作为模块使用时 __name__为文件名,不满足条件
pass

# 包:一系列模块的集合体,用文件夹来管理一系列有联系功能的模块,该文件夹我们称之为包,文件夹名就是包名

# 包 与 普通文件夹存在区别:包的文件夹中一定存在一个__init__.py文件
# -- py2:必须创建 py3:建议创建,不创建系统会自动创建 # __init__.py文件
# 1)产生一个全局名称空间,提供给包的,就代表包的名称空间
# 2)管理 包可以直接点出来使用的 名字 # 导包完成的三件事
# 1)编译形成包中__init__.py文件的pyc文件
# 2)执行__init__.py文件,形成一个全局名称空间,将__init__.py文件中所有名字存放其中,该名称空间就代表包的名称空间
# 3)在导包的文件中,产生一个与包名相同的名字,指向包的名称空间(__init__.py文件的全局名称空间)

直接使用包中模块

# 如果只是想作为普通文件夹,py3中可以省略__init__文件,本质上文件夹也是包

# 导入的手段:1.指名道姓到某一个模块 | 2.指名道姓到某一个模块中的名字

包的管理

# 在包中采用相对导入管理模块或模块中的名字

# 在包的__init__.py文件或是包中任意一个模块中
# . 代表当前文件所在目录
# .. 代表当前文件所在目录的上一级目录
# 注:.语法不能出包,因为包外的文件都能自执行,但拥有.开头导入的文件不能自执行

day17跨文件夹导入模块,模块的两种被执行方式,包,直接使用包中模块,包的管理的更多相关文章

  1. ansible的两种命令执行方式 : ad-hoc / playbook以及通过setup模块获取系统参数

    一.什么是ad-hoc和playbook  ad-hoc : 如果我们敲入一些命令去快速的完成一些操作,而不需要将这些执行过的命令刻意保存下来,这样的命令就叫做as-hoc命令,这里不做过多赘述. p ...

  2. springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

    参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp ...

  3. day18 时间:time:,日历:calendar,可以运算的时间:datatime,系统:sys, 操作系统:os,系统路径操作:os.path,跨文件夹移动文件,递归删除的思路,递归遍历打印目标路径中所有的txt文件,项目开发周期

    复习 ''' 1.跨文件夹导包 - 不用考虑包的情况下直接导入文件夹(包)下的具体模块 2.__name__: py自执行 '__main__' | py被导入执行 '模块名' 3.包:一系列模块的集 ...

  4. JAVA文件夹导入到Eclipse中方法:

    将JAVA文件夹导入到Eclipse中方法:方法一: 直接将java文件夹复制,然后粘贴到项目下:方法二:1.打开eclipse,点击项目的空白处,选择import:2.选择Existing Proj ...

  5. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  6. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  7. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  8. Visual Studio中把文件夹导入工程中

    VS用到的功能还是太少,记录备忘. 有的时候需要把其他库的源码导入当前工程直接使用,而这个库是源码形式,又带很多目录的. 之前从没遇到过这种情况,自己的库目录自己新建,添加. 第三方库一般有单独的Pr ...

  9. 把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式

    临床表现: Tomcat启动后首页能訪问(http://localhost:8080/). 将自己写的一个webprojectwar包放到Tomcat安装文件夹下的/webapps以下(比方hello ...

随机推荐

  1. java程序员究竟应该掌握点什么

    JAVA程序设计(基础部分) JAVA程序设计(专题)

  2. 牛客练习赛33 E tokitsukaze and Similar String (字符串哈希hash)

    链接:https://ac.nowcoder.com/acm/contest/308/E 来源:牛客网 tokitsukaze and Similar String 时间限制:C/C++ 2秒,其他语 ...

  3. oracle数据库架构

    3.1 Client/Server Oracle 采取的是 Client/Server 架构. oracle 服务端分为两部分: Instance 实例 Database 数据库 实例, 又称为数据库 ...

  4. BZOJ2160 拉拉队排练 PAM

    题意简述 询问一个串中所有奇回文按照长度降序排列,前k个奇回文的长度乘积. 做法 回文自动机(PAM)模板题. 维护每个回文自动机的结点回文串出现次数,跳fail得到每个长度的出现次数,双关键字排序后 ...

  5. ZROI 19.07.28 组合计数/lb

    T1 题意:\(n\)个变量,\(0 \leq x_i \leq c_i\),求\(\sum x_i = A\)方案数.\(n \leq 32\). Sol: \(n \leq 10\)的时候容斥很水 ...

  6. 36.React基础介绍——2019年12月24日

    2019年12月24日16:47:12 2019年10月25日11:24:29 主要介绍react入门知识. 1.jsx语法介绍 1.1 介绍 jsx语法是一种类似于html标签的语法,它的作用相当于 ...

  7. 【leetcode】1160. Find Words That Can Be Formed by Characters

    题目如下: You are given an array of strings words and a string chars. A string is good if it can be form ...

  8. 前端面试题常考&必考之--跨域的解决办法

    1.为啥出现跨域??? 在制定Html规则时,为了安全的考虑,一个源的脚本(网页,网站)不能与另一个源的资源进行交互, 所以就引发一个词叫做“同源策略”. 同源策略:同源策略是一种约定,它是浏览器最核 ...

  9. sh_04_qq号码

    sh_04_qq号码 # 1. 定义一个变量记录 QQ 号码 qq_number = " # 2. 定义一个变量记录 QQ 密码 qq_password = " # 注意:在使用解 ...

  10. (贪心+队列)String

    http://acm.hdu.edu.cn/showproblem.php?pid=6586 将26个字母各自放入队列中,并记下每个位置各字母的后缀和.往k个位置贪心的放字母,先从a开始尝试.首先字母 ...