python基础十一
Posted 想成为大师啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础十一相关的知识,希望对你有一定的参考价值。
模块
- 模块英文为Modules
- 函数与模块的关系(一个模块可以包含N多个函数)
- 在python中一个扩展名为.py的文件就是一个模块
使用模块的好处:
- 方便其他程序和脚本的导入并使用
- 避免函数名和变量名冲突
- 提高代码的可维护性
- 提高代码的可重用性
def fun():
pass
def fun2():
pass
class Student:
native_place = '吉林' # 类属性
def eat(self, name, age):
self.name = name
self.age = age
@classmethod
def cm(cls):
pass
@staticmethod
def sm():
pass
a = 10
b = 20
print(a + b)
自定义模块
创建模块
- 新建一个.py文件,名称尽量不要与python自带的标准模块名称相同
导入模块
- import 模块名称 [as 别名] (导入模块的所有内容)
- from 模块名称 import 函数/变量/类 (导入模块的指定内容)
import math # 关于数学运算
from math import pi
print(id(math))
print(type(math))
print(math)
print(math.pi)
print('---------------------------------')
print(dir(math))
print(math.pow(2, 3), type(math.pow(2, 3))) # float类型
print(pow(2, 3), type(pow(2, 3))) # int类型
print(math.ceil(9.001)) # 天花板(向上取整)
print(math.floor(9.9999)) # 地板(向下取整)
print(pi)
导入自己创建的模块
首先新建一个python file,在里面写入你需要的功能
然后点击模块所属的包,鼠标右键,选择 Make Directory as,里面有个 Sources Root(点击它就行了),包名变蓝说明成功了
以主程序形式运行
在每个模块的定义中都包括一个记录模块名称的变量_name_,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的_name_变量的值为_main_
if _name_ = '_main_':
pass
模块
def add(a, b):
return a + b
if __name__ == '__main__':
print(add(10, 20)) # 只有当点击运行calc时,才会执行运算
主程序
import calc
print(calc.add(100, 200))
python中的包
包是一个分层次的目录结构,它将一组功能相近的模块组织在一个,目录下
作用:
- 代码规范
- 避免模块名称冲突
包与目录的区别
- 包含__init__.py文件的目录称为包
- 目录里通常不包含__init__.py文件
包的导入
import 包名.模块名
# 在Demo06的模块中导入 pageage1
import pageage1.moduleA as m # m是pageage1.moduleA这个模块的别名
# print(pageage1.moduleA.a)
print(m.a)
导入带有包的模块时注意事项:
使用import方式进行导入时,只能跟包名或模块名
import pageage1
import calc
使用from…import可以导入包,模块,函数,变量
from pageage1 import moduleA
from pageage1.moduleA import a
python中常用的内置模块
sys
与python解释器及其环境操作相关的标准库
import sys
print(sys.getsizeof(24)) # 28
print(sys.getsizeof(45)) # 28
print(sys.getsizeof(True)) # 28
print(sys.getsizeof(False)) # 24
time
提供与时间相关的各种函数的标准库
import time
print(time.time()) # 1623052425.6614058
print(time.localtime(time.time())) # time.struct_time(tm_year=2021, tm_mon=6, tm_mday=7, tm_hour=15, tm_min=53, tm_sec=45, tm_wday=0, tm_yday=158, tm_isdst=0)
os
提供了访问操作系统服务功能的标准库(文件是存在磁盘上的)
calendar
提供与日期相关的各种函数的标准库
urllib(包)
用于读取来自网上(服务器)的数据标准库
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())
json
用于使用JSON序列化和反序列化对象
re
用于在字符串中执行正则表达式匹配和替换
math
提供标准算术运算函数的标准库
import math
print(math.pow(2, 3))
decimal
用于进行精确控制运算精度,有效数位和四舍五入操作的十进制运算
logging
提供了灵活的记录事件,错误,警告和调试信息等日志信息的功能
编码格式
常见的字符编码格式
- python的解释器使用的是Unicode(内存)
- .py文件在磁盘上使用UTF-8存储(外存)
文件的读取操作
内置函数open()创建文件对象
程序(对象(映射磁盘上的真实文件))----> 文件 (Output)
文件 ----> (对象(映射磁盘上的真实文件))(Input)
通过IO流将磁盘文件中的内容与程序中的对象中的内容进行同步
语法规则
file = open(filename [, mode, encoding]])
file:被创建的文件对象
open:创建文件对象的函数
filename:要创建或打开的文件名称
mode:打开模式默认为只读
encoding:默认文本文件中字符的编写格式为gbk
常用的文件打开模式
文件的类型:按文件中数据的组织形式,文件分为以下两大类
- 文本文件:存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开
- 二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开,举例:MP3音频文件,jpg图片,doc文档等
打开方式:
-
r 以只读模式打开文件,文件的指针将会放在文件的开头
-
w 以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针在文件的开头
file = open('a.txt', 'w') file.write('hello') file.close()
-
a 以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追在内容,文件指针在原文件末尾
file = open('a.txt', 'a') file.write('hello') file.close()
-
b 以二进制方式打开文件,不能单独使用,需要与共它模式一起使用,rb,或者wb
rfile = open('a.png', 'rb') wfile = open('b.png', 'wb') wfile.write(rfile.read()) wfile.close() rfile.close()
-
(+) 以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+
文件对象的常用方法
read([size])
- 从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容
readline()
- 从文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
readlines()
- 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str)
- 将字符串str内容写入文件
writelines(s_list)
- 将字符串列表s_list写入文本文件,不添加换行符
seek(offset[,whence])
- 把文件指针移动到新的位置,offset表示相对于whence的位置
- offset:为正往结束方向移动,为负往开始方向移动
- whence不同的值代表不同含义:
- 0:从文件头开始计算(默认值)
- 1:从当前位置开始计算
- 2:从文件尾开始计算
tell()
- 返回文件指针的当前位置
flush()
-
把缓冲区的内容写入文件,但不关闭文件
file = open('d.txt' ,'a') file.write('hello') file.flush() file.write('world') file.close()
close()
-
把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源
file = open('d.txt' ,'a') file.write('hello') file.close() file.write('world') file.close() # ValueError: I/O operation on closed file.
with语句(上下文管理器)
with语句可以自动管理上下文资源,无论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
print(type(open('a.txt' ,'r')))
with open('d.txt' ,'r') as file:
print(file.read())
MyContentMgr类里面的实例方法无论产不产生异常,enter和exit都会执行
class MyContentMgr(object):
def __enter__(self):
print('enter方法被调用执行了')
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print('exit方法被调用执行了')
def show(self):
print('show方法被调用执行了')
def fun(self):
print('fun方法被调用执行了')
with MyContentMgr() as file: # 相当于file = MyContenMgr
file.fun()
文件复制
with open('a.png' ,'rb') as rfile:
with open('b.png' ,'wb') as wfile:
wfile.write(rfile.read())
以上是关于python基础十一的主要内容,如果未能解决你的问题,请参考以下文章