python3学习笔记(11)python常用数据库和IO操作

Python常⽤库与IO操作

模块与包

在Python⾥⾯,每⼀个Python⽂件都是都可以成为⼀个模块,在⼀个包中可以包含多个Python⽂件,也就是多个
Python的⽂件。包与模块的关系具体如下:

 

 创建文件夹 创建包  创建模块

 

 同包之间的模块调用(只能调用函数或者变量)有两种方式:

# 包名为feichuan  包下的两个模块为www.py 和hhh.py

1.import package.module

import feichuan.hhh #先将整个模块导入
feichuan.hhh.fun()  #调用hhh模块的函数
print(feichuan.hhh.age) #调用模块的变量

2.直接导入模块的所有函数和变量

from feichuan.hhh import *
fun()
print(age)

输出结果:

世界你好
28

3.不同包的不同模块的调用

此时是:chi.hhh调用了feichuan.hhh里面的函数和变量

 

 4,包和包嵌套之间的调用

from package包.package包(嵌套的包).module模块 import *(所有)函数/变量/类

常用库

'''
在python里面,常用的库分为如下两类:
1、标准库:安装了Python的解释器,解释器内部自动带的
2、第三方的库,由很多的顶级程序员开发的,需要额外的安装
   安装:pip3 install 第三方库的名称
        pip3 install pytest
        pip3 install flask
        pip3 install django
        pip3 install requests
        pip3 install pymysql
        pip3 install xlrd
   卸载:pip3 uninstall  第三方库的名称
   '''

IO操作

IO库主要是对路径的处理

1.先导入IO库

import IO

# 获取当前路径   当前是在常用安装库的下面IO操作的模块中
print(os.path.dirname(__file__))

输出结果:

D:\code\testdev\常用库的安装
# 获取当前路径的上一级
print(os.path.dirname(os.path.dirname(__file__)))
 

输出结果:

D:\code\testdev
# 获取目录下所有的文件
# for item in os.listdir("d:/"):
# print(item)

 

获取当前的操作系统

import os   #导入库
print(os.name)

路径的拼接——>自动获取路径——>读取文件

复制代码
import os

base_dir=os.path.dirname(os.path.dirname(os.path.dirname(__file__)))   #获取文件所在的目录并定义为变量
userPath=os.path.join(base_dir,"test","user.txt")
f=open(userPath,"r",encoding="utf-8")
print(f.read())
f.close()
复制代码

 

 

装饰器

  • 在编程中有两个原则是要遵守的,也就是开放和封闭的原则
  1. 开发:对现有功能的拓展开放
  2. 封闭:已实现的功能代码不应该被修改
  • 如果我们的代码中有N个函数,我们需要在这N个函数中增加或者减少一个功能,那么就意味我们需要把相同的代码增加多次或者减少多次,这样就很不符合编程开放跟封闭的原则,而且也不是一个好的编程风格,解决这样问题的思路就是装饰器
  • 有一个登录,查看数据,查看钱包的代码如下:
     View Code

     按照现在的代码,如果我们需要更改登录代码的判断,·那我们后面查看数据跟查看钱包的代码都要更改,我们现在需要装饰器解决这个问题

    复制代码
    dict1={"isLogon":False}   #标识
    
    def outer(func):
        def inner():    #内部函数
            if dict1["isLogon"]:    #这里的函数就相当于if dict1["isLogon"]==True
                return func()
            else:
                print("请先登录")
        return inner   #返回执行函数inner
    
    def logon():
        '''登录'''
        username=input("输入账号:\n")
        password=input("输入密码:\n")
        if username=="tang" and password=="123":
            dict1["isLogon"]=True   #满足如果条件的话,会把字典dict1的value值改为True
            print("登录成功")
        else:
            print("登录失败")
    
    @outer
    def order():
        '''查看数据'''
        print("已授权查看后台数据")
    @outer
    def admin():
        '''查看钱包'''
        print("已授权查看钱包")
    
    while True:
        a=int(input("1.登录 2.查看数据 3.查看钱包 4.退出\n"))
        if   a==1:
            logon()
        elif a==2:
            order()
        elif a==3:
            admin()
        elif a==4:
            break
    复制代码
    • 执行的顺序为:
    1. 执行outer函数
    2. 执行内部函数inner
    3. 执行inner函数的返回值
    4. 执行inner函数里面的表达式
    • ⼀旦结合装饰器后,调⽤fun其实执⾏的是inner函数内部,原来的fun被覆盖
    • ⼀旦这个函数被装饰器装饰之后,被装饰的函数重新赋值成装饰器的内层函数
posted @ 2021-11-25 22:44  柏晓宁  阅读(289)  评论(0)    收藏  举报