当前位置: 首页 > news >正文

怎么看自己的网站是用什么做的贵阳好的网站建设公司

怎么看自己的网站是用什么做的,贵阳好的网站建设公司,wordpress教程_博客吧,wordpress淘宝客模板下载前言 本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点#xff0c;供大家学习探讨 项目地址#xff1a;https://gitee.com/yu_xiao_qi/pytest-auto-api2 阅读本文前#xff0c;请先对该框架有一个整体学习#xff0c;请认真阅读作者的README.md文件。 本文…前言 本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点供大家学习探讨 项目地址https://gitee.com/yu_xiao_qi/pytest-auto-api2 阅读本文前请先对该框架有一个整体学习请认真阅读作者的README.md文件。 本文目录如下 文章目录 前言ast.literal_eval()os.sep.join 和 os.path.join的区别python中def方法中加一个*号是什么意思python的property循环删除文件pytest的钩子函数staticmethodclassmethod普通method有什么区别关于缓存关于安全读取yaml数据枚举类型enum1、enum模块2、枚举类型的使用其他获枚举取值的方式枚举值valuename的映射函数_value2member_map_ python中re.sub函数 ast.literal_eval() 参考文章https://blog.csdn.net/xili2532/article/details/115393854 功能类似于evaleval()官方文档里面给出来的功能解释是将字符串string对象转化为有效的表达式参与求值运算返回计算结果但是eval也有很大的安全隐患比如用户输入一些恶意字符串执行操作。eval在处理空字符串时会返回EOF错误或者语法格式问题缺括号等等 所以这里就引出了另外一个安全处理方式ast.literal_eval.会判断需要计算的内容计算后是不是合法的Python类型如果是则进行运算否则就不进行运算。从而大大降低了系统的危险性 os.sep.join 和 os.path.join的区别 os.sep.join和os.path.join都是用于拼接文件路径的方法但是两者的作用不同。 os.sep是一个字符串常量表示操作系统路径分隔符如在Windows系统中为\\在Unix系统中为/。而os.sep.join方法则是将列表或者元组中的字符串用os.sep拼接起来形成一个路径字符串。 举个例子 import ospath_list [usr, local, bin] path_str os.sep.join(path_list)print(path_str) # Unix系统中输出usr/local/bin # Windows系统中输出usr\local\bin而os.path.join方法则是根据不同操作系统的不同路径分隔符自动拼接起来路径字符串。这样就能在不同操作系统中正确拼接文件路径了。 举个例子 import ospath_str os.path.join(usr, local, bin)print(path_str) # Unix系统中输出usr/local/bin # Windows系统中输出usr\local\bin因此如果要拼接路径推荐使用os.path.join方法这样能保证代码的可移植性。而os.sep.join方法更适合在拼接路径中需要自定义路径分隔符的情况下使用。 python中def方法中加一个*号是什么意思 在 Python 的函数定义中*args 和 **kwargs 分别表示接收可变数量的位置参数和关键字参数。当在函数定义时使用单个 * 作为形参前缀时表示接收可变数量的位置参数而使用双星号 ** 前缀时表示接收可变数量的关键字参数。 当在函数调用时使用单个星号 * 作为实参前缀时表示将一个可迭代对象比如一个列表或元组拆分成独立的位置参数而使用双星号 ** 前缀时表示将一个字典类型的对象拆分成独立的关键字参数。 因此如果在函数定义中使用 *args表示函数将接收任意数量的位置参数这些参数将被收集到一个元组中如果在函数定义中使用 **kwargs则表示函数将接收任意数量的关键字参数这些参数将被收集到一个字典中。如果在函数定义中同时使用 *args 和 **kwargs则表示函数将接收任意数量的位置参数和关键字参数。 如果在函数定义中在参数前加一个单星号 *表示将所有的位置参数收集到一个元组中。如果在函数定义中在参数前加两个星号 **表示将所有的关键字参数收集到一个字典中。如果同时使用 * 和 **则表示将位置参数收集到一个元组中关键字参数收集到一个字典中。 python的property 在 Python 中property 装饰器用于将一个方法转化为只读属性让类的调用者可以像访问属性一样调用该方法而无需显式地调用方法名。通常情况下如果需要获取一个属性的值则需要编写一个 getter 方法。但是使用 property 装饰器后该方法可以像类的其他属性一样调用从而简化代码。 下面是一个使用 property 装饰器的示例 class Person:def __init__(self, name):self._name namepropertydef name(self):return self._name在上述示例中property 装饰器将 name 方法转化为只读属性。这意味着如果要获取 Person 实例的 name 属性只需使用实例对象的 name 属性访问即可如下所示 person Person(Alice) print(person.name)这将输出 Alice即 person 实例的 name 属性的值。注意这里不需要显式调用 name() 方法来获取值。 需要注意的是property 装饰器只能用于只读属性如果需要设置属性的值则需要使用类似于 name.setter 的装饰器来定义一个 setter 方法。 循环删除文件 def del_file(path):删除目录下的文件list_path os.listdir(path)for i in list_path:c_path os.path.join(path, i)if os.path.isdir(c_path):del_file(c_path)else:os.remove(c_path)pytest的钩子函数 官网https://docs.pytest.org/en/6.2.x/_modules/_pytest/hookspec.html#pytest_terminal_summary pytest_terminal_summary def pytest_terminal_summary(terminalreporter):收集测试结果_PASSED len([i for i in terminalreporter.stats.get(passed, []) if i.when ! teardown])_ERROR len([i for i in terminalreporter.stats.get(error, []) if i.when ! teardown])_FAILED len([i for i in terminalreporter.stats.get(failed, []) if i.when ! teardown])_SKIPPED len([i for i in terminalreporter.stats.get(skipped, []) if i.when ! teardown])_TOTAL terminalreporter._numcollected_TIMES time.time() - terminalreporter._sessionstarttimeINFO.logger.error(f用例总数: {_TOTAL})INFO.logger.error(f异常用例数: {_ERROR})ERROR.logger.error(f失败用例数: {_FAILED})WARNING.logger.warning(f跳过用例数: {_SKIPPED})INFO.logger.info(用例执行时长: %.2f % _TIMES s)try:_RATE _PASSED / _TOTAL * 100INFO.logger.info(用例成功率: %.2f % _RATE %)except ZeroDivisionError:INFO.logger.info(用例成功率: 0.00 %) 这会在用例执行完毕之后显示在控制台的 pytest_configure 钩子函数源码都在\Lib\site-packages\_pytest\hookspec.py文件夹中 这个相当于是pytest.ini中设置pytest的执行规则主要是为了解决自定义标记 warnings信息。 在pytest.ini中设置和在conftest.py文件中用config.addinivalue_line设置mark标记是一样的效果。 pytest_collection_modifyitems 总结改变用例的执行顺序 参考https://blog.csdn.net/mashang_z111/article/details/127266694 【严格意义上来说我们在用例设计原则上用例就不要有依赖顺序这样才能更好的体现出测试用例的意义。测试用例的执行不需要按照顺序来执行而是随即执行】 pytest_collection_modifyitems 是在用例收集完毕之后被调用可以用来调整测试用例执行顺序 它有三个参数分别是session会话对象 config配置对象 items用例对象列表改变items里面用例的顺序就可以改变用例的执行顺序了这三个参数分别有不同的作用都可以拿来单独使用修改用例执行顺序主要是使用 items 参数【用例执行之前收集到的测试用例会以元素对象的方式存放在用例对象列表items中】staticmethodclassmethod普通method有什么区别 在 Python 中类定义中的函数可以被定义为三种不同类型的方法staticmethod、classmethod 和普通方法也称为实例方法。这些方法的区别如下 普通方法 普通方法是类中最常见的方法类型。这些方法可以访问并操作类的实例属性和方法同时还可以使用 self 关键字来引用调用该方法的实例。普通方法通常用于在类实例上执行某些操作。 例如 MyClass:def my_method(self, arg1, arg2):self.arg1 arg1self.arg2 arg2return self.arg1 self.arg2obj MyClass() result obj.my_method(1, 2) print(result)在这个例子中my_method 是一个普通方法它可以访问 MyClass 类的实例属性 arg1 和 arg2并返回它们的和。 staticmethod staticmethod 是一个被装饰器 staticmethod 修饰的方法。这个装饰器使方法变为静态方法即该方法既不需要访问类的实例属性和方法也不需要访问类的类属性和方法因此不需要传递 self 或 cls 参数。静态方法通常用于实现与类相关的辅助函数。 例如 MyClass:staticmethoddef my_static_method(arg1, arg2):return arg1 arg2result MyClass.my_static_method(1, 2) print(result)在这个例子中my_static_method 是一个静态方法它不需要访问类的实例属性和方法也不需要访问类的类属性和方法因此不需要传递 self 或 cls 参数。 classmethod classmethod 是一个被装饰器 classmethod 修饰的方法。这个装饰器使方法变为类方法即该方法需要访问类的类属性和方法因此需要传递 cls 参数。类方法通常用于实现与类相关的工厂方法。 例如 MyClass:count 0classmethoddef from_count(cls):obj cls()obj.count cls.countcls.count 1return objobj1 MyClass.from_count() obj2 MyClass.from_count() print(obj1.count, obj2.count)在这个例子中from_count 是一个类方法它需要访问类的类属性 count因此需要传递 cls 参数。这个方法用于创建 MyClass 类的实例并将其 count 属性设置为类的类属性 count 的值。这个方法在每次调用时都会递增 count 属性的值以便为每个新实例创建一个唯一的标识符。 关于缓存 我的问题 我将一个文件的内容直接读取到python的缓存中从而避免频繁的IO操作我想知道python可以有多大的缓存保证我读取的文件数据不丢失呢 Python 语言没有直接限制缓存大小的参数因此理论上讲Python 缓存的大小可以无限制增加但实际上这取决于你的计算机的硬件和操作系统的限制。 一般来说Python 在内存中创建的对象都会占用一定的空间而 Python 的内存使用是受限于计算机的物理内存大小的。因此当你读取大型文件时缓存大小应该小于计算机的可用内存大小以避免内存不足的情况。 另外还需要注意的是将整个文件读入内存中可能会导致 Python 解释器崩溃或程序崩溃尤其是对于非常大的文件。因此如果你需要处理大型文件最好使用逐行读取或者分块读取的方式而不是将整个文件读入内存中。这样可以有效减少内存的占用并避免出现程序崩溃的情况。 关于安全读取yaml数据 示列代码: res yaml.load(data, Loaderyaml.FullLoader)这段代码是将读取到的 YAML 格式数据 data解析为 Python 对象。 yaml.load()的作用是将读取到的 YAML 字符串解析为 Python 对象这里使用的是 yaml.FullLoader。 yaml.FullLoader是 yaml 库中一个安全的 Loader它可以反序列化任何 Python 对象并且不会执行任何代码。 这里的 res 变量将会保存 Python 对象。 需要注意的是这个函数在较新版本的 PyYAML 库中已经不推荐使用了因为会存在安全问题。 新版本的 PyYAML 库建议使用 **yaml.safe_load()**函数来代替 yaml.load()函数以避免 Python 序列化攻击等安全问题。 yaml.safe_load()函数仅仅序列化基本 Python 对象类型不能反序列化任何带有Python对象类型的数据。 同时Python 3.10 后yaml.FullLoader 将被标记为危险的建议改用 yaml.SafeLoader 来代替。 枚举类型enum 参考文章https://blog.csdn.net/yuxuan89814/article/details/128592704 1、enum模块 python的枚举类型是继承enum模块的Enum类定义自己的枚举类枚举元素相当于类变量 from enum import Enum class colorEnum(Enum):red 1yellow 2blue 3枚举类型是namevalue的形式name是不能重复value可以重复但是重复的值的别名是第一个的 print(colorEnum.red) #1colorEnum.red print(colorEnum.gray) #1colorEnum.red print(colorEnum.red.value) #11如果要枚举类中的name不相同则需要引入unique from enum import Enum, unique unique class colorEnum(Enum):red 1yellow 2blue 3gray1 print(colorEnum.red) # ValueError: duplicate values found in enum colorEnum: gray - red2、枚举类型的使用 from enum import Enum class colorEnum(Enum):red 1yellow 2blue 3print(colorEnum.red) print(type(colorEnum.red)) print(colorEnum.red.value) print(type(colorEnum.red.value))########### 结果 colorEnum.red enum colorEnum 1 class int其他获枚举取值的方式 枚举变量是namevalue的形式: 可以使用value取值value或者name 可以使用name变量去取值value或者name print(colorEnum(1)) print(colorEnum(1).value) print(colorEnum[red]) print(colorEnum[red].value)#### 结果 colorEnum.red 1 colorEnum.red 1获取所有的names和values 使用魔术方法__members__获取values和names,结果是dict数组 print(colorEnum.__members__.values()) print(colorEnum.__members__.keys())########## dict_values([colorEnum.red: 1, colorEnum.yellow: 2, colorEnum.blue: 3]) dict_keys([red, yellow, blue])实用性举例 判断变量是否在我们枚举类中在的话打印出值 colors[red,blue,pink] for color in colors:if color in colorEnum.__members__.keys():print(colorEnum[color].value)########## 1 3枚举值valuename的映射函数_value2member_map_ from enum import Enum class colorEnum(Enum):red 1yellow 2blue 3print(colorEnum._value2member_map_) ### {1: colorEnum.red: 1, 2: colorEnum.yellow: 2, 3: colorEnum.blue: 3}使用举例 color_nums[1,2,4] for color_num in color_nums:if color_num in colorEnum._value2member_map_:print(colorEnum(color_num).name)###### red yellowclass colorEnum(Enum):red 1yellow 2blue 3gray 1for color_num in colorEnum._value2member_map_.keys():print(color_num)print(colorEnum._value2member_map_.keys()) print(type(colorEnum._value2member_map_.keys()))########### 1 2 3 dict_keys([1, 2, 3]) class dict_keyspython中re.sub函数 参考文章https://blog.csdn.net/jackandsnow/article/details/103885422 re是正则的表达式sub是substitute表示替换 re.sub是相对复杂点的替换 re.sub(pattern, repl, string, count0, flags0)re.sub的参数5个参数 参数1pattern 表示正则中的模式字符串。 参数2repl 就是replacement表示被替换的字符串可以是字符串也可以是函数。 参数3string 表示要被处理和替换的原始字符串 参数4count 可选参数表示是要替换的最大次数而且必须是非负整数该参数默认为0即所有的匹配都会被替换 参数5flags 可选参数表示编译时用的匹配模式如忽略大小写、多行模式等数字形式默认为0。 例子 只替换前两个 import re a 44444 b re.sub(4, 2, a, 2) print(b) # 22444匹配多个连续汉字 import re a (rr 我)#1 (d 只是)#1 (p 以)#1 (vi 笑) (v 作答)#1#2#3 (。 。) a re.sub(u[\u4e00-\u9fa5], *, a) # 匹配多个连续汉字替换为* print(a) ## 输出(rr *)#1 (d *)#1 (p *)#1 (vi *) (v *)#1#2#3 (。 。)匹配除了汉字之外的其他符号 # 正则表达式 u[\u4e00-\u9fa] 表示所有的汉字 [^...] 表示除了...之外 a “设置文件名怎么样” a re.sub(u[\u4e00-\u9fa], , a) print(a) # 设置文件名怎么样
http://www.pierceye.com/news/199893/

相关文章:

  • 网站开发好还是app好wordpress 禁用修订
  • win7云主机怎么做网站贵州建设监理网站培训通知栏
  • 制作网站免费建站成都设计公司deanzhang
  • 10个网站用户体验优化的研究结果免费图片设计
  • 做明星网站打广告新闻20条摘抄大全
  • 佛山提供网站设计方案公司wordpress 2.0漏洞
  • wordpress建站教程视频教程百度推广登录首页
  • dede织梦php文章图片网站源码 完整后台 带在线音乐做企业网站进行推广要多少钱
  • 网站正在建设中手机版基于wordpress论文
  • 建设培训网站查询战网
  • 正能量网站下载做网站沧州
  • 网站维护需要什么技能wordpress博客评论删除
  • 行业网站设计师招聘广州番禺网站建设公司推荐
  • 正规网站模板设计软件工程学科评估
  • 网站集约化建设 要求惠州做棋牌网站建设哪家技术好
  • c#如何做公司网站做网站背景图怎么插
  • 国外做耳机贸易的平台网站定制网站
  • seo做的最好的十个网站加工订单网
  • 网站项目建设主要内容网站导航优化的描述
  • 网站后台修改图片网站制作多少钱公司
  • 做网站后台需要写代码吗益阳seo网站建设
  • 小程序网站做多大尺寸辽阳住房和城乡建设网站
  • 昆山app网站制作网站的管理权限有什么用
  • 购物网站建设开题报告企业宣传方案模板
  • cdr做好排班怎么做网站我的免费网是个什么网站
  • 如何做别人网站镜像地区性中介类网站建设
  • 做的网站怎么查看点击率安装wordpress主题失败
  • 网站历史权重查询免费的黄冈网站有哪些下载软件
  • 宝安三网合一网站建设河北智能网站建设平台
  • 在百度上做网站有用吗wordpress环境虚拟机安装