python异常处理、模块的使用、__all__的调用、模块的发布和安装

异常处理

#encoding=utf-8
#异常处理
try:
	print(33/ 0)
	open("cc.v")
	print("处理异常的情况")
except (NameError,FileNotFoundError):#这里注意一点,在python3中,错误不能用.连接,需要()表示成元组
	print("名字有错误,出现异常")
except Exception as ret:#查看异常的类型,异常的具体情况
	print('捕获上面异常没有捕获到的')
	print(ret)
else:
	print("没有异常才会执行的功能")
finally:
	print("是否出现异常都会执行	")

import time
try:
	f=open('D:\\vivien.tang\\桌面\\614问题总结.docx')
	try:
		while True:
			content=f.readline()
			if len(content)==0:
				break
			time.sleep(2)#这里用来延迟时间
			print(content)
	except:
		print("file")
		pass
	finally:
		f.close()
		print("关闭文件")
except:
	print("没有这个文件")

#异常的传递:像函数一样可以嵌套,嵌套过去的出现异常,如果函数本身没有try,则会反应到调用的函数上面

#抛出自定义异常
class ExceptionCreat(Exception):#其中exception是所有异常的父类'''自定义的异常类'''
	def __init__(self):
		print("自定义的类")


def main():
	try:
		print()
		raise ExceptionCreat()#raise引发一个自定义的异常,其实自定义了一个类
	except 	ExceptionCreat as result:#前面是类创建的对象
		print("出现这个异常为%s"%result)#result是一个变量,指向自定义的exception对象的引用
	else:
		print("什么都没有发生")


class test(object):
	def __init__(self,switch):
		self.switch=switch
	def calc(self,a,b):
		try:
			return a/b
		except Exception as result:
			if self.switch:
				print("捕获开启,信息如下:")
				print(result)
			else:
				raise #异常正常的抛出去

a=test(True)
a.calc(11,0)
'''
捕获上面异常没有捕获到的
division by zero
是否出现异常都会执行	
file
关闭文件
捕获开启,信息如下:
division by zero
'''

#0表示假,非0表示真,1 -1 "a"
#任何的None,[](空列表) {} ()(空元组) ""(空字符串) 0 
import random
print(random.randint(0,2))#在0到2之间产生一个随机数,0 1 2都有可能
#.py就是一个模块
#linux sudo pip install pygames pip是python中自带的安装工具,是管理python模块的一个工具
#pip是管理python2的工具,pip3是管理python3的工具

#两种导入python模块的方式
#import pygame #若没有提示错误,说明安装成功
#import 模块的名称,不需要加.py
#在调用模块时,会在调用模块中中间生成一个文件(.pyc 字节码),便于翻译运行

#from 模块名 import 方法名
#在调用的方法太多时,采用上面的方式效率低
#from 模块名 import *
#尽量少用import*
#from send import *
#from rece import *   //若两个文件中有相同的函数名,则后面的函数会将前面的替换掉,尽量少用* 
#
import time as test #给模块起个别名,若模块名太长的话,可以用来替换
print(__name__)#如果是在执行模块,而不是调用,则结果为__main__
#若调用模块的话,结果为调用该模块的模块名
#为了保证只在本模块测试的时候调用某些方法,则采用:
#if __name__==="__main__"


__all__=[ ]的使用

#encoding=utf-8
from learn_All import *
test1()
print(num)#若learn_All 模块中没有将全局变量放入到__all__=[]中时,则不能访问

#encoding=utf-8
__all__=["test1","test2","num"]#列表里面存放当import all_learn from *,所导入进去的函数
def test1():
	print("---test1---")
def test2():
	print("---test2----")
num=100 #这种全局变量也需要存放到__all__中才可以访问
class Test(object):
	pass


#encoding=utf-8
from learn_All import *
test1()
print(num)#若learn_All 模块中没有将全局变量放入到__all__=[]中时,则不能访问

#若一个文件夹下面有很多模块,我们不能通过导入文件夹再导入模块的方式调用模块
#需要在文件夹下添加模块__init__.py 来调用文件夹下的模块,整个文件夹称之为包
#__init__.py的作用使文件夹称为一个包
#为了使得包中的模块被调用,在__init__.py中进行修改:
#__all__=["模块名"]
#在import 文件夹名 时会执行__init__.py
#
#在__init__.py中

#__all__=["模块名"]   在导入文件夹后就可以调用模块
#下面的方法适用于python2
#import 模块名   可以这么使用:文件夹.模块名.函数名
#python3中的使用
#from . import 模块名
#
#若文件夹中有__init__.py,则称之为包,将文件夹下的东西导入到__init__.py中
import os
os.__file__ #python解释器默认安装的模块的路径

#将包放在系统路径上,每次调用时不需要考虑路径问题
#在当前路径在新建一个setup.py
#


#在__init__.py中输入:__all__=["learn_All","testHello"],调用下面的方法
from packTest import  testHello
testHello.test()

from packTest import learn_All#这种方法适用于python3
learn_All.test1()


#在__init__.py中输入:
#from . import learn_All
#from . import testHello #.表示当前路径
#在python3中调用时可以采用这种方式:

import packTest
packTest.learn_All.test1()
#packTest.learn_All.test1()

cmd安装、发布

#encoding=utf-8
#将文件安装到系统中去,任何路径下都可以直接访问
#发布及安装
#在与安装包同一路径下新建setup.py,其中的输入包相关的信息
#python setup.py build
#python setup.py sdist生成发布压缩包,在同一目录下生成dist,下面有个压缩包
#cp dist/dollar-1.0.zip
#python setup.py install#安装到系统默认的模块路径
#import packTest
from packTest import learn_All#这种方法适用于python3
learn_All.test1()
#packTest.learn_All.test1()

setup.py

#encoding=utf-8
from distutils.core import setup

setup(name="dollar",version="1.0",description="setup",author="dollar",py_modules=["packTest.learn_All","packTest.testHello"])
#后面存放要发布的模块名


#encoding=utf-8
__all__=["test1","test2","num"]#列表里面存放当import all_learn from *,所导入进去的函数
def test1():
	print("---test1---")
def test2():
	print("---test2----")
num=100 #这种全局变量也需要存放到__all__中才可以访问
class Test(object):
	pass


#在__init__.py中输入:__all__=["learn_All","testHello"],调用下面的方法
from packTest import  testHello
testHello.test()

from packTest import learn_All#这种方法适用于python3
learn_All.test1()


#在__init__.py中输入:
#from . import learn_All
#from . import testHello #.表示当前路径
#在python3中调用时可以采用这种方式:

import packTest
packTest.learn_All.test1()
#packTest.learn_All.test1()


#encoding=utf-8
#将文件安装到系统中去,任何路径下都可以直接访问
#发布及安装
#在与安装包同一路径下新建setup.py,其中的输入包相关的信息
#python setup.py build
#python setup.py sdist生成发布压缩包,在同一目录下生成dist,下面有个压缩包
#cp dist/dollar-1.0.zip
#python setup.py install#安装到系统默认的模块路径
#import packTest
from packTest import learn_All#这种方法适用于python3
learn_All.test1()
#packTest.learn_All.test1()

这里有一点,若文件与要用到的文件都处在同一路径下,则可以调用包;若把包压缩封装好后,在别的路径调用时,则调用已封装好的包,若原来的文件发生改动,不会影响到此时的使用(现在用到的是已打包好的,固定的)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枚努力的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值