最全python基础整理(三)

一、模块

1. 简介
模块化是指将一个程序分解为一个个的模块module,通过组合模块来搭建出一个完整的程序

优点:便于团队开发、方便维护、代码复用

在Python中一个.py文件就是一个模块,创建模块实际上就是创建一个.py文件,可以被其他模块导入并使用

注意:

自定义模块时要注意命名规范,使用小写,不要使用中文、特殊字符等

不要与内置模块冲突

2. 使用模块

导入模块的两种方式:

方式1:import 包名.模块名 [ as 别名]

方式2:from 包名 import 模块名
from 包名.模块名 import 变量|函数|类

导入模块的代码可以放在任意位置,但一般都放在程序的开头

# 方式1
# import py04_模块.mymodule
# print(py04_模块.mymodule.a)# 调用模块中的变量
# print(py04_模块.mymodule.plus(3, 5))

# import py04_模块.mymodule as m
# print(m.plus(3, 5))

# 方式2 # from py04_模块
# import mymodule
# print(mymodule.b)
# print(mymodule.minus(8, 2))

# from py04_模块.mymodule import b, plus, Calculator

# from py04_模块.mymodule import * # 不建议

# print(b)
# print(plus(2, 5))
# print(Calculator.sum(3, 12, 5))

''' 
__name__属性是模块的内置属性,每个模块中都有该属性 
当该.py文件是主执行文件,直接被执行时,其值为__main__ 
当该.py文件是被调用,导入执行时,其值为模块名 
'''

# print(__name__)
# 程序入门,类似于Java中的main()方法,只在当直接调用该文件时才会执行,用来执行测试
if __name__ == '__main__':
    print(Calculator.sum(1, 2, 3))

3. Python标准库
Python提供了一个强大的标准库,内置了许多非常有用的模块,可以直接使用(标准库是随Python一起安 装)

常用的内置模块:
sys:获取Python解析的信息
os:对操作系统进行访问,主要是对目录或文件进行操作
math:数学运算
random:生成随机数
datetime:处理日期和时间,提供了多个类
time:处理时间

import sys
import os
import math
import random
from datetime import datetime, timedelta
import time

print(sys.version)  # Python版本
print(sys.platform) # 系统平台
print(sys.argv) # 命令行参数
print(sys.path) # 模块搜索路径,包含了Python解析器查找模块的搜索路径
print(sys.modules) # 显示当前程序中引入的所有模块
print(sys.getdefaultencoding()) # 默认字符集
# sys.exit('程序退出') # 退出解析器
print('­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­')


print(os.name) # 操作系统的类型
print(os.environ['path']) # 系统的环境变量
print(os.getcwd()) # 当前的目录
print(os.listdir('d:/')) # 列出指定目录中的内容
# os.system('ping www.baidu.com') # 执行系统命令
print(os.path.exists('d:/soft')) # 判断路径是否存在
print('­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­')

print(math.pi)
print(math.ceil(3.4))
print(math.floor(3.4))
print(math.pow(2, 3))
print(math.trunc(2.6)) # 截尾取整
print(round(2.6))
print(round(3.1415925, 3)) # 四舍五入,保留三位小数
print('­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­')

print(random.random()) # 返回[0,1)之间的随机浮点数
print(random.randint(1, 101)) # 返回[1,100]之间的随机整数
print(random.sample([1, 21, 54, 23, 6, 2], 2)) # 从数组中返回随机两个元素
print('­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­')

print(datetime.now(), type(datetime.now())) # 返回当前时间
print(datetime.strftime(datetime.now(), '%Y­%m­%d %H:%M:%S')) # 将datetime转换为指定格式 的str
print(datetime.strftime(datetime.now(), '%Y{0}%m{1}%d{2} %H:%M:%S').format('年', '月', '日'))
print(datetime.strptime('2018­2­14', '%Y­%m­%d')) # 将str转换为datetime
print('明天:', datetime.now() + timedelta(days=1))
# timedelta表示两个时间之间的时间差,可 以用来进行日间的加减操作
print('前一秒:', datetime.now() ­ timedelta(seconds=1))
print('­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­')

print(time.time()) # 返回当前时间的时间戳
print(int(time.time())) # 秒级时间戳
print(int(time.time() * 1000)) # 毫秒时间戳 time.sleep(5) # 休眠5print(1111)

4. 第三方模块
Python社区提供了大量的第三方模块,使用方式与标准库类似
安装第三方模块:

  • 使用包管理工具pip(随Python一起安装的)
pip install 模块名
  • 使用PyCharm来安装
    Settings——>Project——>Project Interpreter
    报错: AttributeError: module ‘pip’ has no attribute ‘main’
    解决:找到PyCharm安装目录下的helpers/packaging_tool.py文件,替换其中的do_install和do_uninstall 函数
    注:官方仓库比较慢,可以使用豆瓣提供的镜像仓库 https://pypi.douban.com/simple/

pyecharts是一个用于Echarts图表的类库,便于在Python中根据数据生成可视化的图表

Echarts是百度开源的一个数据可视化JS库,主要用来进行数据可视化。
参考:http://pyecharts.org
安装pyecharts库

新版本的pyecharts默认不带地图文件,如果需要使用地图,需要自行安装地图文件包

二、异常处理和IO操作

1. 异常处理
语法:

try:
    可能出现异常的代码
except:
    出现异常后要执行的操作
else:
    不出现异常时执行的操作
finally:
    无论是否出现异常都必须要执行的操作

try:
    print('try...')
    a = 5 / int('abc')
# except: # 捕获所有异常
# except ZeroDivisionError as e: # 捕获ZeroDivisionError异常,获取到异常对象
except (ZeroDivisionError, ValueError, Exception) as e: # 捕获多种异常
    print('出现异常啦', e)
else:
    print('没有异常时执行')
finally:
    print('finally...')


# 自定义异常,继承自Exception(Exception类是所有异常类的父类)
class UsernameExistsException(Exception):
    pass

def fn(username):
    if username == 'admin' or username == 'tom':
        raise UsernameExistsException('用户名已存在') # 使用raise抛出异常
    else:
        print('ok')

fn(input('请输入用户名:'))

2. IO操作
文件操作

''' 
读写模式: 
    r 读模式 
    w 写模式(覆盖) 
    a 追加模式 
    r+ 读写模式 
    b 二进制模式 
'''

# ­­­­读取文件
try:
    f = open('itany.txt', mode='r', encoding='utf­8') # 打开一个文件,返回一个对象,这个对 象就代表着当前打开的文件
    print(f.read()) # 一次性读取所有内容
except FileNotFoundError as e:
    print('文件找不到:', e)
finally:
    if f:
        f.close() # 文件操作后一定要关闭

print('­' * 80)


# 简写,使用with...as语句,会自动调用close()
with open('itany.txt', mode='r', encoding='utf­8') as f:
    # print(f.read())
    # print(f.read(3)) # 每次读取3个字符
    # print(f.read(3))
    # print(f.readline().strip()) # 每次读取一行
    # print(f.readline())
    lines = f.readlines() # 一次性读取所有行,返回list
    # print(lines)
    for line in lines:
        print(line.strip())
print('­' * 80)


# ­­­­写文件
with open('itany.txt', mode='a', encoding='utf­8') as f:
    f.write('xxx\n')
    f.write('yyy')
print('­' * 80)

# ­­­­读写二进制文件
with open('baidu.png', mode='rb') as f:
    with open('itany.png', mode='wb') as out:
        out.write(f.read())
        print('拷贝成功')

文件操作模块

import os
import shutil

# ­­­­操作文件和目录
print(os.path.exists('itany.txt')) # 判断是否存在
print(os.path.abspath('itany.txt')) # 文件的绝对路径
print(os.path.isfile('itany.txt')) # 判断是否为文件
print(os.path.isdir('itany.txt')) # 判断是否为目录
print(os.listdir('.')) # 列出指定目录下所有内容
# 找出当前目录下所有的文件夹
dirs = [f for f in os.listdir('.') if os.path.isdir(f)]
print(dirs)

# 创建/删除目录
# os.mkdir('world')
if os.path.exists('world'):
    os.rmdir('world')
# 重命名文件或目录
# os.rename('itany.txt', 'aaa.txt')

# 删除文件
# os.remove('aaa.txt')

# 拷贝文件
shutil.copy('baidu.png', 'bbb.png')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

初夏0811

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

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

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

打赏作者

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

抵扣说明:

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

余额充值