96SEO 2026-02-19 11:22 0
lower()将字符串所有字符变为小写非原地upper()将字符串所有字符变为大写title()将字符串内每一个单词首字母大写capitlize()将首字母大写.swapcase()将字符串中的大写字符变成小写字符小写字符变成大写字符strip()去除首尾空白字符lstrip()去除左边空白字符rstrip()去除右边空白字符想重复输出某个字符串可以使用*号split()从字符串的左边开始切分默认的切分参数第一个是空格第二个参数可以选择指定切分次数返回列表rsplit()从字符串的右边开始切分其他同上isalpha()判断字符串是否只包含字母isalnum()判断字符串是否全部由字母和数字组成isdigit()判断字符串是否只包含数字isdecimal()判断字符串是否只包含十进制数字isnumeric()判断字符串是否只包含数字注意s.isdigit、isdecimal

区别isspace()判断字符串是否只包含空格(回车、换行、水平制表符).center()居中对齐第一个参数指定宽度第二个参数可以指定填充字符是什么默认是空格如果设定的宽度小于原字符串宽度则返回原字符串.ljust()左对齐参数同上rjust()右对齐参数同上zfill()右对齐只接受一个参数指定宽度默认使用0填充.isidentifier()判断指定的字符串是否是合法的标识符.encode()编码方法可以指定编码的类型传入参数即可.decode()解码方法可以指定解码的类型
max()参数为一个可迭代对象得到其中的最大值min()同上得到其中的最小值sum()第一个参数为一个可迭代对象第二个参数为结果相加值默认为0即返回值会加上这个数得到迭代对象的和abs()返回传入参数的绝对值ord()返回传入参数的ASCII码数值hex()返回传入十进制整数的十六进制返回类型是字符串bin()返回传入十进制整数的二进制返回类型是字符串pow(x,y)返回x^y.count()
统计列表中传入参数出现的次数.index(参数)得到传入参数在列表中第一次出现的下标是多少从0开始未找到则报错.find()查找传入参数在序列中的索引下标未找到返回-1string.join(iterable)
.replace(old,new,max)可将字符串中的某些字符替换为其他字符,第一个参数是原字符第二个参数是新字符第三个参数是替换次数默认替换全部注意该函数不是原地替换
函数返回一个浮点数该浮点数是指定数字的舍入版本并带有指定的小数位数。
set(序列集合或迭代器)函数创建集合对象。
集合列表中的项目是无序去重的因此它将以随机顺序出现。
hasattr(obj,name)函数用于判断对象是否包含对应的属性
setattr(obj,name,value)函数用于设置属性值如果该对象已经拥有该属性值则对其进行修改如果没有该属性则创建该属性后对其赋值
这里还有一个值得注意的点python中的整型是“无限长”的因此它可以表示任何数
有True和False两种其中要注意的是python的bool可以作为数字进行运算
想输出的字符串末尾不能是反斜杠因为如果末尾是反斜杠就变成了\即一个已经存在的转义字符
列表元素按照顺序有序排序索引映射唯一一个元素列表可以存储重复数据列表可以任意数据类型混合存储列表会根据需要动态分配和回收内存空间
这里值得强调的是切片得到的列表与原列表的id是不同的说明新的列表是拥有了新的内存空间此外切片三个参数中的中间参数不管是正序遍历还是逆序遍历都是“开的一边”即不会遍历的stop本身
值得强调的是append()方法是“原地添加元素”extend()方法适用于两个列表的拼接也是原地拼接
删除一个指定索引位置上的元素指定索引不存在则抛出异常如果不指定索引则默认删除最后一个元素
调用列表的sort()方法默认将列表进行升序排序如果指定参数reverseTrue则可实现降序排序该方法是原地排序调用内置函数sorted()同理可传入参数reverseTrue实现降序排序会产生新列表
与列表一样字典也是python的一种数据结构它以键值对的形式存储数据
字典是无序的即添加的第一个元素不一定被放在第一个位置添加的第二个元素也不一定在第二个位置这是因为元素的位置是由字典的key经过哈希函数的结果来决定的所以也会要求字典的key是不可变序列类似字符串就是不可变序列来避免元素的位置被频繁改变
.keys()方法获取字典中所有的key.values()方法获取字典中所有的value.items()方法获取字典中所有的键值对
该函数用于将可迭代对象作为参数将对象中对应的元素打包成一个元组然后返回由这些元组组成的列表
[(Fruits,96),(Books,78),(Others,85)]
元组是python中内置的数据结构之一是一个不可变序列即元组不能被增删改
字符串、元组这些不可变序列如果进行了增删改就相当于直接修改了地址创建了一个新的对象反之可变序列
只包含一个元素的元组需要使用逗号和小括号使用内置函数tuple()需要强调的是tuple()函数内还需要使用小括号
如果说元组中的对象本身是可变对象则可变对象的引用不能被修改但是可变对象的数据可以修改
此外想输出元组内的多个元素也可以使用切片操作不过需要注意的是元组的切片也是使用的中括号
集合也是python所提供的内置数据结构之一并且它属于可变无序序列我们通常使用“没有value的字典”来理解它也就是说集合中的元素不能重复
.add()方法一次添加一个元素.update()方法一次添加一个或多个元素参数是可迭代对象
一次删除一个指定元素如果元素不存在则抛出异常.discard()同上一次删除一个指定元素但是如果元素不存在不会报错.pop()该方法无参数它会随机删除集合中的一个元素.clear()该方法用于清空集合
值得强调的点是这个isdisjoint()方法该方法如果两个集合没有交集返回True,反之返回False
使用.symmetric_difference()可以得到两个集合的
python对字符串仅保留一份相同且不可变的方法不同的值被保留在字符串的驻留池内python对相同的字符串只保留一份拷贝后续创建相同字符串时不会开辟新空间而是把该字符串的地址赋给新创建的变量
字符串的长度为0或1时符合标识符的字符串字符串只在编译时进行驻留而非运行时[-5256]之间的整数数字
即可以使用sys中的intern方法强制两个字符串指向同一对象
这里需要注意的是pycharm对字符串进行了优化即可能不满足上述条件的字符串也会被驻留
首先比较两个字符串的第一个字符如果相等就继续比较下一个字符串以次比较下去直至两个字符串中的字符不相等其比较结果就是两个字符串的比较结果此后后续字符不再进行比较比较原理
但是因为字符串是不可变类型不具备增删改操作切片操作将产生新的对象
如上图所示的0与1分别代表format参数的第一个参数与第二个参数
如上图代码所示我们定义了一个函数fun且传入两个参数分别时不可变类型int与可变类型list我们发现在调用fun后n1还是n1但是列表n2却被改变了
如果参数是不可变对象在函数体内的修改不会影响实参的值如果是可变对象则在函数体内会影响实参的值
如果函数没有返回值return可以省略不写函数的返回值如果存在多个返回的类型为元组
函数定义时我们可以给形参设置默认值如果不希望使用默认值时则可以传递实参反之不传实参则默认使用默认值
定义函数时可能无法事先确定传递的位置实参的个数时使用可变的位置参数
定义函数时可能无法事先确定传递的位置实参的个数时使用可变的关键字参数
值得强调的是如果一个函数的形参既有个数可变的位置形参也有个数可变的关键字形参那么我们定义
在函数内部定义的变量只在函数内部有效但如果局部变量使用global声明这个变量就会成为全局变量全局变量
python与其它高级程序语言一样提供了异常处理机制可以在异常出现时进行捕获然后内部“消化”让程序继续运行
try....except....else....finally语句
如上图所示我们可以使用这样的语句来实现捕获异常在try子句内编写可能会出现异常的语句块except后书写异常类型然后在except语句块内编写如果出现该异常需要执行的代码
当然我们可以书写多个except语句如果书写多个except语句的话我们希望从上到下按照异常的范围大小从小到大排下来这样我们更能精确地处理异常
其次上述语句也可以补充使用else语句else语句块的内容表示如果try语句块中未出现异常所需要执行的代码
最后我们还可以添加finally语句块该语句块无论是否发生异常都会被执行通常用来释放try语句块中申请的资源
类方法和实例方法相似它最少也要包含一个参数只不过类方法中通常将其命名为
参数注意绑定的不是类对象。
也就是说我们在调用类方法时无需显式为
静态方法其实就是我们学过的函数和函数唯一的区别是静态方法定义在类这个空间类命名空间中而函数则定义在程序所在的空间全局命名空间中
解释器不会对它包含的参数做任何类或对象的绑定。
也正因为如此类的静态方法中无法调用任何类属性和类方法
python是一门动态语言在对象创建后允许动态地绑定属性和方法
封装可以提高程序的安全性封装即将属性和方法包装到类对象中在方法内部对属性进行操作在类的外部调用方法
需要强调的是在python中没有专门的修饰符用于表示属性的私有我们通常在我们希望的私有成员前面使用两个下划线_
定义子类的构造方法时必须在其中调用父类的构造方法(利用super())
如果子类对继承自父类的某个属性或方法不满意可以在子类中对其进行重新编写子类重写的方法中也可以通过super().xxx调用父类的方法
object类是所有类的父类因此所有类都有object类的属性和方法object类中存在一个__str()__方法用于返回一个对象的描述我们通常会将其重写使其返回更加确切的类描述
如上图所示如果我们没有重写__str__方法则print(p)会输出该对象的地址反之则输出了我们重写方法__str__返回的内容
如果x是一个实例对象的话那么返回实力对象的属性字典如果x是一个类名则返回该类的属性与方法的字典x.__class__
类似C实现了类与类之间的运算符操作一样如果我们想使得两个类可以相加我们就需要实现它__len__(self)同理如果我们想要得到len(类)那么我们需要在该类中实现该方法
中前者用于创建对象后者则用于初始化前者创建的对象具体可参考通俗的讲解Python中的__new__()方法
值得强调的是发现__new__方法是传入类(cls)而__init__方法传入类的实例化对象(self)而有意思的是__new__方法返回的值就是一个实例化对象ps:如果__new__方法返回None则__init__方法不会被执行并且返回值只能调用父类中的__new__方法而不能调用毫无关系的类的__new__方法
变量的赋值操作实质上是形成两个变量指向同一个对象浅拷贝使用copy模块中的copy方法python中的拷贝一般都是浅拷贝拷贝时对象包含的子对象内容不拷贝因此源对象与拷贝对象会引用同一个子对象深拷贝使用copy模块中的deepcopy方法递归拷贝对象中包含的子对象源对象与拷贝对象中的所有子对象均不同
如上图所示我们发现computer对象与浅拷贝对象computer2是不同的对象但是他们的子对象都是相同的
上图则使用了深拷贝我们发现源对象与拷贝对象都不同包括他们的子对象
方便其他程序或脚本的导入并使用避免函数名和变量名的冲突提高代码的可维护性提高代码的可重用性有利于团队协作开发
我们在自定义模块时名称尽量不要与python自带的标准模块名称相同
简单地说就是我们的模块中因为可以包含语句例如print因此在我们导入某个模块运行时该模块的语句也会被执行如果我们不希望它被执行就在该语句加上if
包是一个分层次的下包使得我们的代码更为规范避免了模块名称的冲突包在创建时通常会包含__init__.py文件而目录不会
但是使用from...import...可以导入包、模块、函数、类
.py文件被解释器所运行而解释器会用到操作系统中的资源进行相关操作
文本文件存储的是普通’字符‘文本默认为unicode字符集可以用记事本打开二进制文件把数据内容用’字节‘进行存储无法用记事本打开例如MP3jpg图片
close()关闭流对象但是先刷新一次缓冲区关闭之后流对象不可以继续再使用了。
flush()仅仅是刷新缓冲区(一般写字符时要用,因为字符是先进入的缓冲区)流对象还可以继续使用
with语句可以自动管理上下文资源无论说明原因跳出with块都能确保文件的正确关闭以此来达到释放资源的目的该语句可以避免遗忘关闭文件的行为
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback