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())

おすすめ

転載: blog.csdn.net/xuexiwd/article/details/117659755