python------模块和包及异常处理
一、模块
所有的模块导入都应该尽量往上写,且顺序为:
a:内置模块
b:扩展模块
c:自定义模块
#my_module.py
print('from the my_module.py')
money=1000
def read():
print('in my_module->',money) # #test.py导入my_module模块
# import my_module
# money = 200
# my_module.read()
# # from the my_module.py
# # in my_module-> 1000 # 模块不会重复被导入 : sys.moudles
# 从哪儿导入模块 : sys.path
导入自定义模块
每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突
#测试一:money与my_module.money不冲突
#demo.py
import my_module
money=10
print(my_module.money) '''
执行结果:
from the my_module.py
1000
'''
测试一:money与my_module.money不冲突
#测试二:read1与my_module.read1不冲突
#demo.py
import my_module
def read1():
print('===')
my_module.read1() '''
执行结果:
from the my_module.py
my_module->read1->money 1000
'''
测试二:read1与my_module.read1不冲突
#测试三:执行my_module.change()操作的全局变量money仍然是my_module中的
#demo.py
import my_module
money=1
my_module.change()
print(money) '''
执行结果:
from the my_module.py
1
'''
测试三:执行my_module.change()操作的全局变量money仍然是my_module中的
#from import
# from 模块名 import 变量名
#直接使用 变量名 就可以完成操作
#如果本文件中有相同的变量名会发生冲突
#导入的函数read1,被当前位置定义的read1覆盖掉了
#demo.py
from my_module import read1
def read1():
print('==========')
read1()
'''
执行结果:
from the my_module.py
==========
'''
重命名覆盖的情况
from 模块名 import 变量名字 as 重命名变量名
from 模块名 import 变量名1,变量名2
from 模块名 import *
将模块中的所有变量名都放到内存中
如果本文件中有相同的变量名会发生冲突
from 模块名 import * 和 __all__ 是一对
没有这个变量,就会导入所有的名字
如果有all 只导入all列表中的名字
__name__
在模块中 有一个变量__name__,
当我们直接执行这个模块的时候,__name__ == '__main__'
当我们执行其他模块,在其他模块中引用这个模块的时候,这个模块中的__name__ == '模块的名字'
二、包
包是一种通过使用'.模块名'来组织python模块名称空间的方式。
1.包是目录级的(文件夹级),文件夹是用来组成py文件(包的本质就是一个包含__init__.py文件的目录)
2.无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,必须提高警觉,知道这是关于包才有的导入语法。
3.import导入文件时,产生名称空间中的名字来源于文件,import包,产生的名称空间的名字同样来源于文件,即包下的__init__.py 强调:
1.在python3中,即使包下没有__init__.py文件,import包仍然不会报错,而在python2中,包下一定要有该文件,否则import包报错
2.创建包的目的不是为了运行,而是被导入使用。包只是模块的一种形式而已,包即就是模块 注意事项:
1.凡是在导入时带点的,点的左边都必须是一个包,否则非法。
2.对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都是可以用点的方式调用自己的属性)
3.对比import item 和 from item import name 的应用场景:如果我们想直接使用name,那必须使用后者。
需要注意的是from后的import导入的模块,必须是明确的一个不能带点,否则会有语法错误 绝对路径和相对路径的区别:
绝对路径:不管在包内部还是外部,导入了就能用; 不能挪动,但是直观。
相对路径:可以随意移动包,只要找到包的位置,就可以使用包里的模块;
包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能再包内直接执行了。 三、异常处理
程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
使用try和except就能处理异常
try是我们需要处理的代码
except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
except支持多分支
有没有一个能处理所有错误的类型 : Exception
有了万能的处理机制仍然需要把能预测到的问题单独处理
单独处理的所有内容都应该写在万能异常之前
else : 没有异常的时候执行else中的代码
finally : 不管代码是否异常,都会执行
finally和return相遇的时候 依然会执行
函数里做异常处理用,不管是否异常去做一些收尾工作
try:
print('')
# 1/0
print('')
# name
# 2+'3'
# [][3]
# {}['k']
ret = int(input('number >>>'))
print(ret*'*')
except ValueError:
print('输入的数据类型有误')
except Exception:
print('你错了,老铁')
else:
print('没有异常的时候执行else中的代码')
print('===========')
try
def func():
try:
f = open('file','w')
''''''
return True
except:
return False
finally:
print('执行finally了')
f.close() print(func())
python------模块和包及异常处理的更多相关文章
- Python模块、包、异常、文件(案例)
Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...
- Python/模块与包之模块
Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...
- 【Python】解析Python模块与包
模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. import语句是用来导入模块或者从模块里导入特定的类或者函数.如前面我们用过的math模块,从而可以 ...
- python 模块和包深度学习理解
python 模块和包 简单说相当于命名空间 1,python 模块 python模块就是一个文件,里面有函数,变量等 import 模块 模块.方法 from 模块 import fu ...
- (三)运用Python模块和包
1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...
- Python模块04/包/logging日志
Python模块04/包/logging日志 目录 Python模块04/包/logging日志 内容大纲 1.包 2.logging日志 3.今日总结 内容大纲 1.包 2.logging日志 1. ...
- Python模块和包
模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...
- python模块与包的导入
1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...
- python模块及包的导入
一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...
- 简述Python模块和包
我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在windows的C盘根目录下,那么外部的包一般放在:C:\Python34\Lib\sit-packages下,此目录下有以.p ...
随机推荐
- Linux安装postgresql及基础操作
安装环境说明 系统环境说明 [root@slave1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@sl ...
- Katalon Recorder初探
缘由 最近工作中,有大量web页面上的重复操作,实在麻烦,就想利用selenium ide录制出一些操作集合,以便复用.新版本的selenium ide 3目前只支持firefox最新的版本,而且代码 ...
- leetcode x进制数 python3
不少题目都是实现吧10进制数转换成x进制数,实际上都是一个套路,下面是7进制的,想换成什么进制,把7替换成相应数字即可,输出的是字符串 16,32进制这种有特殊要求的转不了,其他的应该通用 class ...
- substring c# js java
c# String.SubString(int index,int length) String.SubString(int start) 等效于 javascript stringObject.su ...
- adb server version (31) doesn’t match this client (36); killing…
版权声明:蜜蜂采花酿蜂蜜,奶牛吃草产牛奶. https://blog.csdn.net/codehxy/article/details/52175186 案例1 报错信息如下 C:\Users\lin ...
- pytorch 指定GPU训练
# 1: torch.cuda.set_device(1) # 2: device = torch.device("cuda:1") # 3:(官方推荐)import os os. ...
- Python比较两个excel文档内容的异同
#-*- coding: utf-8 -*- #比对两个Excel文件内容的差异#---------------------假设条件----------------#1.源表和目标表格式一致#2.不存 ...
- Test 7.12 T2
题目描述 有一张 n 个点 m 条边的无向图,其中有 s 个点上有加油站.有 Q 次询问(a,b,c), 问能否开一辆油箱容积为 c 的车从 a 走到 b. 输入格式 第一行三个整数 n,s, ...
- LeetCode--049--字母异位词分组(java)
给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "tan&quo ...
- 如何将word内容粘贴到富文本编辑器里面
Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧?Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无法 ...