python使用常见问题二

1.eval的用法
eval是一个强大的内置函数,可以将字符串当作表达式求值并返回结果,类似于可以实现字符串同dict、list、touple之间的转换,同样str可以将dict、list、touple转为字符串
2.os.path.splitext(path)函数使用
os.path.splitext(path)该函数的作用是将该文件路径的文件名和后缀分开,如:/log/log_2021.txt使用os.path.splitext('/log/log_2021.txt')=>'/log/log_2021'和‘txt’

3.在编写pytest时给用例打标签

a.通过pytest.mark标签名给单个用例加一条或者多条标签
b.pytestmark=[pytest.mark.smoke]给测试类所有的用例添加标签
c.执行用例的时候可以通过pytest -m 标签名 去筛选用例执行
运行时,pytest.main(['m','smoke'])

4.python 的datetime模块

datetime模块是python自带对时间的操纵,它有4个大类分别是:date、datetime、time、timedelta(python中也有time,datetime中也包含time类,datetime模块是对time模块进行了更高一级的封装)
例:
a.如何将一个“2022/07/28”加2天,并转换为“2022-07-30”这种字符串

import datetime
d="2022/07/28"
#先将字符串转化为时间
dd=datetime.datetime.strptime(d,"%Y/%m/%d")
#加两天
dd=dd+datetime.timedelta(days=2)
#将日期转换为指定的时间格式
dd=datetime.datetime.strftime(dd,"%Y-%m-%d")
参考地址:https://www.cnblogs.com/longwhite/p/10397704.html

5.python中的classmethod、staticmethod、实例方法的区别?

classmethod:是用来指定一个类的方法为类方法
class cc:
@classmethod
def f(cls,arg1,arg2,…):
pass
cls通常作为类方法的第一参数,通常self有点类似,self通常用来传递当前类对象的实例,作为实例方法的第一参数。
=====为什么会出现classmethod方法?
因为python不支持多个的参数重载构造函数,为了解决这个问题,通常classmethod修饰符的方式,这样定义出来的函数就能够在类对象实例化之前调用这些函数,就相当于多个构造函数。类方法会使用这个类来创建并返回最终实例。使用类方法的另一个好处就是继承的时候,保证了子类使用可选构造函数构造出来类是子类的实例而不是父类的实例。
参考:https://www.cnblogs.com/baxianhua/p/10845620.html

6.接口上传一个zip包

import requests
file=open(filepath,'rb')
files={'files':file}
result=requests.post(url=url,files=files,headers).json()

7.如何在pycharm中设置pytest为默认运行方式

进入pycharm,点击:file-》setting-〉Tools-》Python integrated Tools -〉Testing-》选择要使用的Default test runner

8.yaml文件中有中文时,写入 文件时,希望保存为中文,则:

with open(yamlpath,‘w’,encoding='utf-8'as f:
yaml.dump(testdata,f,allow_unicode=True)

9.写入yaml文件如何保证顺序不变

with open(yamlpath,'w',encoding='utf-8'as f:
yaml.dump(testdata,f,allow_unicode=True,sort_keys=False)

10.python包中的__init__.py作用

a.如果__init__.py在一个文件夹下,证明该文件夹是一个包不是一个目录
b.如果在某个包的__init__.py导入了一些包和模块,则在该包的其他模块下可以直接调用不需要重复导入

11.python import 导入模块执行流程分析

在python中使用import 语句导入模块时,pyton通过三个步骤来完成这个行为
1.在python模块加载路径中查找相应的模块文件
2.将模块文件编译成中间代码
3.执行模块文件中的代码
在python模块的导入动作只发生一次。当导入过后,别的文件需要继续导入时,python首先会在sys.modules这个变量中查出是否已经导入过这个模块,如果已经导入了,上面三个步骤不会执行,直接引用之前导入内存中的内容。
在步骤2中,python首先会查看对应模块的.pyc文件,看文件的最后修改时间是否早于对应.py文件,则该模块的.py文件重新编译为字节码.pyc文件。注意.一个python程序的顶层文件不会生成.pyc文件。
完成步骤2后会执行python文件中的语句,以生成对应的对象属性,比如def语句生成该模块的一个函数属性。因为这个特性,假如模块中有一个print语句,那么该模块第一次被加载的时候,该输出语句就会将内容输出,但是由于模块只能被import一次,所以当模块第二次被加载的时候,上面的三个步骤都不会被执行,那么print语句不会再次出现。

12.pymsql.cursors.DictCursor使用

pymsql.cursors的参数可选择如下:
类型 描述
Cursor 普通的游标对象,默认创建的游标对象
SSCursor 不缓存游标,主要用于操作需要返回大量数据的时候
DictCursor 以字典的形式返回
SSDictCursor 不缓存游标,将结果以字典的形式返回
这里主要分析DictCursor,在默认情况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行的查询后每条记录的结果是以list表示
如果要返回dict表示的记录,就要设置cursor参数为pymysql.cursor.DictCursor类。
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
默认情况下数据库查询的返回结果如下:

import pymysql
conn=pymsqldb.connect(host='xxx.xxx.xxx.xxx',port=3306,user='root',password='***')
cur=conn.cursor()
cur.execute('select id,name from call_table')
cur.fetchone()
# (1,'zhangsan')
cursor.close()

将cursor参数设定为pymysql.cursors.DictCursor情况下,数据库查询的返回结果如下

cur=conn.cursor(musqldb.cursors.DictCursor)
cur.execute('select id,name from call_table;')
cur.fetchone()
# {'id':1,'name':'zhangsan'}
cur.close()
conn.close()

13.字典拼接

d={}
for i in [{1:1},{2:2},{3:3,4:4}]:
	d.update(i)
print(d)
#{1:1,2:2,3:3,4:4}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值