python 基础操作

1.Python 的装饰器是什么?

  • 本质上是一个 Python 函数
  • 为已存在的方法提供额外的功能
  • 可以将大量与方法本身提供的功能无关的代码提取出来,方便重用

 

2.Python 的装饰器一般是用来干嘛?

  • 可以直接用框架提供的装饰器,一般会用到 pytest、allure 的装饰器,以下是自己写的:
  • 异常捕捉:会给自己封装的每个方法加上这个异常捕捉装饰器,如果调用的封装方法报错了,就会进入这个装饰器,捕捉到指定异常后,我会刷新页面,再次执行刚刚报错的封装方法,然后会记录一次失败日志
  • 日志:一般自己封装的方法都希望有日志,那如果每个封装的方法里单独调用日志类就会显得很臃肿重复,所以可以用一个日志装饰器代替
  • 前置操作:比如多个方法执行前都需要调用同一个方法,那可以将依赖方法写在装饰器中
  • 后置操作:比如每次执行方法后都需要还原数据集,可以将清理操作写在装饰器中
  • 权限校验:执行方法前先进行权限校验,校验通过才会允许执行方法

3.return与yieid的区别

  • return 是返回值后结束,不在执行函数体内的代码
  • yieid  是返回值后暂停,此时是一个生成器,等待下一次调用。下次则会从yieid后继续执行函数内代码。

      

 

4.python 连接数据库操作

  

 

 

5.python中mock 的使用 

  通过mock.Mock()  进行mock返回值

 

 6.open与with open 读写模式
  1)open的使用方法

    打开文件:file=open("路径+文件名",“读写模式”)      注意:打开文件使用完成后,记得关闭。否则长时间会导致内存泄漏。
           

    一般读写模式有:

    w      以写的方式打开(会覆盖原有的文件)

    r      以只读的方式打开

    a      以追加的模式打开(在原文件的末尾追加要写入的数据,不覆盖原文件)

    b      以二进制文件的方式打开 

    rb  以二进制读的方式打开        注意:常用于文件上传内使用

    wb  以二进制写的方式打开

    ab  以二进制追加的模式打开

 

  2)with open的使用方法 (可以open操作无论成功失败,都会自动关闭文件)

     1)with open("path_file", "r") as f1:         # 以读取的方式打开file文件,并且将文件的所有内容存储到f1变量中   path_file是file文件的文件路径(path)和文件名(file)

         f2 = f1.readlines()                             # 将file文件中的所有行都读取,并且存储到变量f2中

         for line in f2:                                      # 从file文件中的所有行里,每次提取一行,进行后续的操作

     2)with open("path_file", "w") as f1:   # 以写入的方式打开file文件,并将文件存储到f1变量中

 

 

7、正则表达式

  使用场景与模块

  1)适合用来对匹配字符串,提取相关信息。使用 re 模块

  常见函数

  1)re.match    含义:从字符串的起始位置匹配,如不是起始位置返回none

    语法:*re.match(匹配的正则表达式, 要匹配的字符串)

  2)re.findall     含义:找到正则匹配的所有字串,返回一个列表

  

 

 


 


 

8、枚举,使用枚举值:类.name.value

   类继承enum这个库,就是枚举类。枚举其实也就是常量,但跟常量不一样的是,枚举不能在使用中修改,不能类.name.value = 新值。

   同时枚举使用 @unique这个装饰器,可以保持枚举名称的唯一性,当不唯一是会报错。

   枚举的使用多是在对数据的管理,统一抽离出来,方便修改应用。

  

 9、异常处理

  1)异常处理格式: try 执行代码块,except 异常类型块 as 实例Exception 万能异常处理

  

 

 

   2)一个try 至少对应一个except,也可对应多个except。同时try/except 后可以继续else,当无异常仍可执行else。

  3)try...finally...语句无论是否发生异常都将会执行最后的代码,比如打开文件后,可以finally 关闭文件。

  

 

 

   4)常用的异常处理类型:

  • 找不到文件打开。   IOError类型的错误
  • assert 断言语句失败。    AssertionError   
  • 传入的对象类型与要求不符。   TypeError 
  • 使用一个未赋予对象的变量。       NameError

10、抛出异常

  为什么要抛出异常?

  1)对于异常场景可以主动抛出然后处理,或者进行提示。比如余额不足无法体现,提前抛出异常。

  抛出异常的方法?

  1)raise 异常类型 (value)

  

 

11、openpyxl

  用于读取/写入Excel 2010  xlsx 、xlsm 、xltx 、xltm 文件

  

 

12、深拷贝与浅拷贝

  浅拷贝:直接copy使用,拷贝父对象不拷贝子对象,当父对象改变,子对象也会改变。

  深拷贝:导入copy模块,使用copy.deepcopy 使用,同事拷贝父对象与子对象。不受原对象影响。

 

13、给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效

 

  有效字符串需满足:

 

  左括号必须用相同类型的右括号闭合。
  左括号必须以正确的顺序闭合。
  注意空字符串可被认为是有效字符串。   

 

 

解答思路:先判断字符串的长度是否为奇数,如是则false。如为0 则true。
     然后在把内容存成字符串,循环判断是否存在同组key和value。存在删除,不存在就写入列表内。最终列表为空则是true,反之false
class
Solution: def isValid(self, s: str) -> bool: len_s=len(s) if len_s%2 !=0: return False if len_s==0: return True #利用进栈出栈的思想 str_dict={'(':')','[':']','{':'}'} stacked=[] for i in range(len_s): #判断stacked是否为空,以及stacked的最后一个元素是否存在于字典的关键字之中 #判断字符串中的下一个字符是否与stacked中存储的最后一个元素相等,相等则删除stacked中的最后一个元素 #不相等则存入stacked之中,用于接下来的判断 if stacked and stacked[-1] in str_dict.keys() and s[i]==str_dict[stacked[-1]]: stacked.pop() else: stacked.append(s[i]) #若输入为有效字符串则最终stacked中的左右元素将会被完全删除 if stacked==[]: return True else: return False

14、列表如何去重

set

15、文件如何排序

 

16、字符串如何去掉某些字符

replace

17、多线程使用

#多线程实例
import time
import threading

def mark(index):

    print("线程使用,第%d次"%index)

    #暂停一秒,不然看不到效果哦

    time.sleep(1)

if __name__=="__main__":

    for i in range(6):

        #定义子线程,执行mark函数 

        t=threading.Thread(target=mark,args=(i,))

        #启动子线程

        t.start()

 

posted @ 2021-09-15 23:43  Jc_code  阅读(123)  评论(0编辑  收藏  举报