IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python基础学习4 -> 正文阅读

[Python知识库]python基础学习4

前言:本文为小编自主学习python的过程中的笔记和对应的练习应用?,希望能帮助到大家,也希望大家能一起交流学习,如对你学习有帮助记得点赞加关注哦,每个星期小编都会更新一篇的。

目录

一、异常

1.捕获异常(try/except语句)

2.else和finally

3.主动抛出异常 raise

二、模块

1.模块分类

2.模块的导入方式

3.__all__变量

4. __name__变量(入口)

三、包


一、异常

Python使用 异常对象 来表示异常状态,并在遇到错误时 引发 异常。异常对象未被处理(或
)时,程序将终止并显示一条错误消息( traceback )。

1.捕获异常(try/except语句)

try / except 语句用于捕获异常。语法格式:
try:
    被检测的代码块
except 异常类型:
    try中一但检测到异常,就会执行这个位置的逻辑

如:

try:
    x = int(input('请输入被除数:'))
    y = int(input('请输入除数: '))
    print(x / y)
except ZeroDivisionError:
    print("除数不能为0")
如果你运行上述程序,并在提示时输入一个非数字值,将引发另一种异常,这是因为该程序中的except子句只捕获ZeroDivisionError异常,而这新的异常将成为漏网之鱼,导致 程序终止。为同时捕获这种异常,可在try / except 语句中再添加一个 except子句
try:
    x = int(input('请输入被除数:'))
    y = int(input('请输入除数: '))
    print(x / y)
except ZeroDivisionError:
    print("除数不能为0")
except ValueError:
    print("请输入数字")
如果要使用一个 except 子句捕获多种异常,可在一个元组中指定这些异常,如:
try:
    x = int(input('请输入被除数:'))
    y = int(input('请输入除数: '))
    print(x / y)
except (ZeroDivisionError, ValueError):
    print("请正确输入数字")

还能用万能异常

except Exception as e:  # 万能异常
    print(e)  # 报错详细信息
在上述代码中,如果用户输入除数为零或输入非数字值都将打印同样的错误消息。当然,仅仅打印错误消息帮助不大。另一种解决方案是不断地要求用户输入数字,直到能够执行除法运算为止。

2.else和finally

# else 代码不出现异常的时候执行的 ? ?放在except后面,可以省略的

# finally 代码无论有没有异常都会进行输出 ? finally一定要放到最后,可以省略的

try:
    print(name)
except Exception as e:
    print(e)
else: 
    print("成功获取到了数据")
finally: 
    print("成功执行了")

在这个代码里,因为已经出现异常所以只会执行except和finally里的代码,如果在这串代码前补上变量name对应的值,那么就会执行else和finally里的代码

3.主动抛出异常 raise

raise[exceptionName[(reason)]]

1.创建一个Exception的对象

2.raise抛出这个异常对象

def funa(age):
    if age<=0 or age>120:
        raise ValueError("值错误")
        print(123) 
    else:
        print(f"您的年龄为{age}")

# 捕获异常
try:
    funa(-18)
except ValueError as e:
    print(e)

?# raise 抛出错误,解释器不会主动捕获

# 这里注意到raise后面的语句是不会执行

二、模块

为了使代码更容易维护,提高代码重用价值,可以将一组相关功能的代码写入一个单独的py文件中供别人导入使用,这个.py文件就被称作是一个模块

1.模块分类

  • 内置模块

也叫标准库。此类模块就是python解释器给你提供的。不需要额外去下载,直接import导入就可以了,大约有200多个。

  • 第三方模块

第三方库。一些python大神写的非常好用的模块,必须通过pip install指令安装的模块。即需要下载然后再导入使用

  • 自定义模块

我们自己在项目中定义的一些模块,本质就是新建一个py文件在其他的文件中导入使用

2.模块的导入方式

有下面几种导入方式:

import 模块名

import 模块名 as 别名

import 模块名1,模块名2

from 模块名 import 函数名 [as 别名]

from 模块名 import *

?例如现自定义一个py文件,命名为demo.py 其内容如下:

a = 10
print(a)
def funa():
    print("123")

funa()

?然后我们在另一个新的py文件中运行一下代码

# import 模块名
import demo  #  加载文件,自动执行demo模块的功能

# 还可以通过模块名.的方式去使用
print(demo.a) # 输出demo文件a属性
demo.funa() # 调用demo文件funa()函数

?还可以对导入的模块进行改名字来方便自己运用

# import 模块名 as 别名
import demo as de
# 别名.的方式去调用
print(de.a)
de.funa()

下面再创建一个名为demo2.py的文件,内容如下

print('hello word')

然后我们使用方法3,就可以同时导入2个模块且自动执行了

# import 模块名1,模块名2
import demo,demo2

下面重新定义demo文件内容

a = 10
def funa():
    print("123")

?然后通过方法4导入里面的函数funa

# from 模块名 import 函数名 [as 别名]
from demo import funa # 从模块中导入某个函数
funa()

而as是导入函数后对函数取别名

# from 模块名 import 函数名 as 别名
from demo import funa as fa # 从模块中导入某个函数,同时取别名
fa()
# from 模块名 import *   从模块里面导入所有
from demo import *
funa()
print(a)

3.__all__变量

__all__ 变量的值是一个列表,存储的是当前模块中一些成员(变量、函数或者类)的名称。通过在模块文件中设置 __all__ 变量,当其它文件以“ from 模块名 import * ”的形式导入该模块时,该文件中只能使用 __all__ 列表中指定的成员

a = 10
def funa():
    print("123")
__all__  = ["a"] # 变量和函数名都需要用双引号包裹起来
# 当其他文件导入这个文件只允许a这个变量可以使用

ps:import导入某个模块的整个功能,from.....import....导入模块的某个功能

?py文件的两种功能:

  1. 脚本,一个文件就是整个程序,用来被执行
  2. 模块,文件中存放着一堆功能,用来被导入使用

4. __name__变量(入口)

是python的内置变量。它是每个python模块必备的属性,它的值取决于你是如何执行这段代码的。

print(__name__)

但你运行这个代码时,如果打印出的是__main__,说明你运行的是当前文件。

如果你是在其他文件导入了这个模块,运行后将打印出导入的文件块名

  • if __name__ ?== "__main__": 当其他文件导入这个文件的时候这个里面的代码不执行
print(__name__)  # 如果打印出了__main__,就说明运行的是当前文件

print(123)
if __name__  == "__main__": # 当前文件运行的代码
    print(456)

快捷方式:main 回车 就可以快速编写? ?if __name__ ?== "__main__":

三、包

包是一个有层次的文件目录结构,它定义了由n个模块和n个子包

具体表现形式:包含__init__.py文件的目录,这个目录下一定得有这个__init__.py文件和其他模块或子包

为什么要使用包?

随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

在python工程里,当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)

注意:__init__.py可以是一个空文件

创建方法:右键-new-python package创建一个包,包里面包含一个__init__.py文件,默认会执行这个文件

如:创建了一个包,名为bao,在这个文件夹里面创建一个py文件,名为test,里面内容如下

print(123)

然后我们就可以在一个新的py文件中导入它了,方法为

import bao

?如果test文件内容改为

a = 10
def funa():
    print("hello")

?那么可以导入包里的具体文件,并使用具体的内容

from bao import test
test.funa()
print(test.a)

?也可以对那个文件进行取别名

import bao.test as test1
test1.funa()
print(test1.a)

还可以用如下方法,不过需要在__init__.py文件去设置__all__,否则会报错。__all__列表里写对应的py文件名

from bao import * 
test.funa()
print(test.a)

:可以理解为包的集合

库>包>模块

如有哪些地方写错,欢迎纠正

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:27:01  更:2021-10-20 12:28:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:42:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码