模块导入及使用,关键字,模块搜索路径,python文件的两种用途
06.05自我总结
一.模块导入及使用
1.模块导入的两种方式
我们拿time模块并使用其中的time功能进行举例
a)第一种
import time
print(time.time)
import首次导入模块发生了3件事:
- 打开模块文件
- 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
- 在程序中会有一个模块名称指向模块名称空间(如果他是import time as f)则是f指向模块空间
- 在当前执行文件中拿到一个模块名
b)第二种
from time import time
print(time)
from...import...首次导入模块发生了3件事:
- 以模块为准创造一个模块的名称空间
- 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
- 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
- 优点:不用加前缀,代码更加精简
- 缺点:容易与当前执行文件中名称空间中的名字冲突
c)相同点和不同点
相同点:
- 两者都会执行模块对应的文件,两者都会产生模块的名称空间
- 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
不同点
- import需要加前缀;from...import...不需要加前缀
2.关键字
_all_
如果一个模块的文件内写有_all_
import 模块名字,默认导入所有模块
而当模块中出现_all_时候,他只会导入_all_后面列表内的名称
二.模块循环导入
1.情况
创建两个模块
# m1.py
print('from m1.py')
from m2 import x
y = 'm1'
# m2.py
print('from m2.py')
from m1 import y
x = 'm2'
应用程序导入模块
# run.py
import m1
2.解决办法
第一种
把m1中吧form m2 import x 将能找到的y放置form m2 import x,上面,让他在没有导入模块的时候就发现y从而不会寻找
# m1.py
print('from m1.py')
y = 'm1'
from m2 import x
第二种
把from m2 import x 用函数把他变成局部,文件加载顺序先全局在局部
def f1():
from m2 import x
y = 'm1'
f()
三.模块搜索路径
去内存中找去→内置模块中找→去环境变量中找
打印环境变量
import sys
print(sys.path)
四.python文件的两种用途
1.模块文件
2.运行文件
搜索路径以运行文件为基准
五.关键字_name_
在执行文件中_name_会被读取成'__main__'
在导入模块的时候__name__会变成模块名字
模块导入及使用,关键字,模块搜索路径,python文件的两种用途的更多相关文章
- 模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途
目录 模块的四种形式 模块 模块的四种形式 import和from...import 循环导入问题 模拟问题的发生: 解决方案 模块的搜索路径 Python文件的两种用途 模块的四种形式 Nike推荐 ...
- python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)
一.模块的循环导入问题 run.py # import m1 # 第一次导入 m1.py # 错误示范 ''' print('正在导入m1') from m2 import y #第一次导入m2 x= ...
- Python 1-3区分Python文件的两种用途和模块的搜索路径
区分Python文件的两种用途 run.py文件: import m1 m1.py文件: def f1(): print('f1') def f2(): print('f2') #当文件被执行时__n ...
- 从模块到python文件的两种用法
01模块的四种形式 模块 就是从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名是test.py的话,它的对应模块名就是test) 包 用 ...
- super关键字主要有以下两种用途
super关键字主要有以下两种用途. 1.调用父类的构造方法 子类可以调用由父类声明的构造方法.但是必须在子类的构造方法中使用super关键字来调用.其具体的语法格式如下: super([参数列表]) ...
- Angular问题04 模块导入错误???、BrowserModule模块重复加载???、material模块引入后报错
1 模块导入错误 1.1 问题描述 项目启动时报错:元数据错误,错误截图如下: 1.2 问题原因 利用VsCode开发angular项目时利用自动导入出现错误 坑01:VsCode 的自动导入功能比较 ...
- es6 中的模块导入与nodejs 中模块的导入的异同!
我们知道es6 的模块导入导出是通过import 和 export 来实现,而nodejs的模块导入导出是通过require 和module.exports 来实现,那么它们有什么异同吗? 请看如下: ...
- Python中的两种路径
Java中有两种路径,一种是操作系统的路径path,另一种是类路径classpath. Python中也是如此,一种是操作系统环境变量中的path,另一种是PYTHONPATH. 当import xx ...
- python 开启进程两种方法 multiprocessing模块 介绍
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...
随机推荐
- jsp 预编译
jspc-maven-plugin <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
- android 通知(android 8.0可用)
final String CHANNEL_ID = "com.chao.channel.id"; final String CHANNEL_NAME = "com.c ...
- [題解](水/并查集)luogu_P2170選學霸
很簡單的水題,因為智障沒有A所以發篇博客 同樣的題:luogu_P1455 搭配購買 用并查集維護一下所有實力相等的人的size,然而你可以選多個size......,於是跑個背包就行了,只要注意一下 ...
- 梳理一下我理解的aop
在看了很多网上的资料和记录之后,我大概捋了下SpringAOP的各种阶段: 基本的advice编程,利用ProxyFactory拿代理类 利用spring把ProxyFactory,advice等be ...
- python学习之列表元组,字典
list:元素性质可以不一致,元素还可以是list,可类似数组方法进行索引(也可以用负数索引,-1表示最后一个),可用.append('')进行动态增加,可用pop()删除最后一个或者pop(i)删除 ...
- nodejs Async 使用方法(解决多层回调嵌套)
由于nodejs是异步处理的,有时我们想同步从mysql里取出数据,最后在处理逻辑 就需要用到此扩展: 此扩展可以避免多层回调: 安装方法: npm install async 使用方法: 1.par ...
- # iOS Block的本质(三)
iOS Block的本质(三) 上一篇文章iOS Block的本质(二)中已经介绍过block变量的捕获,本文继续探寻block的本质. 1. block对对象变量的捕获,ARC 环境 block一般 ...
- vs2010调试sql2008存储过程
1.安装vs2010sp1补丁 2.vs中打开服务器资源管理器,并进行数据库连接,连接时要注意 3. 4.可以打开数据库中的存储过程进行调试了
- ASP.NET MVC执行流程图
- 雨林木风ghost win7 64位快速装机版V2016年
雨林木风ghost win7 64位快速装机版V2016年2月 系统下载:http://www.xitongma.com 系统概述 雨林木风ghost win7 64位旗舰装机版自动无人值守安装,采用 ...