python基础知识总结

一、Python数据结构
不可变数据结构(3 个):Number(整数)、String(字符串)、Tuple(元组)
可变数据结构(3 个):List(列表)、Dictionary(字典)、Set(集合)
Python 支持三种不同的数值类型:整型(int)、浮点型(float)、复数(complex)
Python不同于其它语言,只有一种类型int,不区分short、int、long类型;浮点数只有一种类型float,不区分float与double类型
1.1 列表
list = [‘red’, ‘green’, ‘blue’, ‘yellow’, ‘white’, ‘black’]
list列表反转方法:
第一种,是可以通过倒序切片反转,然后步长是 -1,;
第二种,是可以通过列表的方式,列表有一个方法叫做 reverse ,可以实现反转
列表切片:
“切片”操作用于从某个对象中抽取部分值的情况。
理论上,只要条件表达式得当,可以通过单次或多次切片操作实现任意目标值切取
索引方式:object[start_index:end_index:step]

start_index:表示起始索引(包含该索引对应值)

end_index:表示终止索引(不包含该索引对应值)

step:正负数均可,其绝对值大小决定了切取数据时的"步长"

例:List = [0,1,2,3,4,5,6,7,8,9]
一个完整的切片表达式包含两个“:”,用于分隔三个参数(start_index:end_index:step)

a[-1:-6:-1]
[9, 8, 7, 6, 5]
//step=-1,start_index=-1到end_index=-6是从右往左取值
b = a[::2]
//从最开始的值取到最后的值,步长为2:[0, 2, 4, 6, 8]
当只有一个“:”时:默认第三个参数step=1
a[6:]
[6, 7, 8, 9]
//step=1,从左往右取值,从start_index=6开始,一直取到“终点”值9。
当一个“:”也没有时,start_index=end_index,表示切取start_index指定的那个元素
1.2 元组
tuple = (‘Google’, ‘Runoob’, 1997, 2000)
1.3 字典
d = {key1 : value1, key2 : value2, key3 : value3 }
tinydict = {‘name’: ‘runoob’, ‘likes’: 123, ‘url’: ‘www.runoob.com’}
1.4 集合
集合set是一个无序的不重复元素序列
parame = {value01,value02,…}
set(value)
区别:列表可以修改,而字符串和元组不能
二、Python输入输出
input() 函数接受一个标准输入数据,返回为 string 类型
注意:input语句输入的内容只能是字符串类型,如果需要输入Int类型的数据,需要使用int()方法给输入的内容制作强制类型转换
a = input(“请输入一个整数:”)
print函数可以输出的内容:
print(520) //数字
print(“helloworld”) //字符串
print(3+1) //表达式
文件输出
fp=open(‘D:/text.txt’,‘a+’)
print(‘helloworld’,file=fp)
fp.close()
print() 输出的形式:
print(“helloworld”) //换行输出;
print(‘hello’,‘world’,‘python’) //逗号分隔不换行
三、Python函数
函数与方法
函数(function)是Python中一个可调用对象,而方法(method)是一种特殊的函数
自定义函数
#计算面积函数
def area(width,height)
return width * height
不带表达式的return相当于返回 None
系统函数
list()
用于将其他序列转换为列表
range()
可创建一个整数列表,一般用在 for 循环中
range(10)

从 0 开始的十个数字 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range(1, 11)

从 1 开始到 11(不包含11)

// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

range(0, 30, 5)

步长为 5 [0, 5, 10, 15, 20, 25]

join()
用于将序列中的元素以指定的字符连接生成一个新的字符串
num2 = [‘4’, ‘2’, ‘4’, ‘2’, ‘3’, ‘2’, ‘1’]
print(‘’.join(num2))
#将列表num2转化为字符串,输出4242321
匿名函数
Python 中定义匿名函数非常简单,通过 lambda 表达式来定义就可以了;
lambda 表达式的基本句法是:lambda 空格 然后加上函数的参数,接下来在冒号后面跟上函数的返回值;,在lambda 函数中不能有return, 因为:后面就是返回值
例:

c = lambda x,y=2: x+y #使用了默认值
c(10) #不输入数据的话,使用默认值2
12
函数参数定义
函数的参数定义方式有三种:必传参数、默认参数、可变长参数
函数重载机制
函数重载主要是为了解决两个问题:第一个,是可变参数类型,第二个,是可变参数个数;
在 Python 当中参数不需要申明类型,函数是可以接受任何类型的参数的;如果函数的功能相同,一个函数就可以处理了;
在 Python 当中通过 一个 * 号 和 两个 ** 号 来处理可变参数个数;所以在 Python 里面他不需要处理函数重载;
四、数据结构
顺序
有序序列包括:列表,元组,字符串 (list,tuple,string)
无序序列:字典,集合 (dictionary,set )(python3.6的版本显示出来的字典是有序的)
重复
列表和元组的元素可以重复
集合是一个无序不重复元素集
字典的键是不能重复的,值可以重复
是否可变
元组是有序不可修改的,是只读的,不能修改,一旦创建就固定了
更改列表数据类型
要将列表的数据类型进行更改,可以使用tuple()或者set()
is和==
==比较两个对象或值的相等性。
is运算符用于检查两个对象是否属于同一内存对象。
五、垃圾回收
Python垃圾回收机制主要以引用计数为主,分代回收为辅。
Python 中一切皆对象,引用计数法的原理是每个对象维护一个引用计数,用来记录当前对象被引用的次数,当这个对象的引用计数(指针数)为 0 的时候,说明这个对象永不可达,自然它也就成为了垃圾,需要被回收。
匿名函数lambda
Lambda函数是不带名称的单行函数,可以具有n个参数,但只能有一个表达式。也称为匿名函数。
a = lambda x, y:x + y
print(a(5, 6))
11
五、Python语句
1,分支选择语句
switch语句是实现多分支选择功能,根据列表值测试变量。
switch语句中的每个值都被称为一个case。
在Python中,没有内置switch函数,但是我们可以创建一个自定义的switch语句。
装饰器
python装饰器本质上是一个函数,装饰器的返回值也是一个函数对象。。它封装一个函数,并且使用不同的操作方式来修改这个被封装函数的行为。让其他函数在不需要做任何代码变动的前提下增加额外功能,他们有助于让我们的代码更简短。
装饰器用于以下场景:插入日志(统计函数执行时间)、权限校验、性能测试、事务处理、缓存等场景
三方库和模块
1,python造数
使用python三方库:Faker
Faker 是一个生成伪造数据的 Python 库,Faker 数据通常用于测试或用一些伪数据填充数据库。
Python-OOPS
面向对象编程:抽象(Abstraction)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)
类和对象
在Python中为类创建一个对象,例如:obj = num()
使用类的对象,我们可以访问类的所有成员,并对其进行操作。
继承
继承允许一个类获取另一个类的所有成员和属性。继承提供代码可重用性,可以更轻松地创建和维护应用程序。被继承的类称为超类,而继承的类称为派生类/子类。
过滤器
用过滤器可以筛选字典中,大于某个阈值的项 当我们处理一些数据时,常常需要对数据进行筛选、转换等操作,过滤器很好用
迭代器
迭代器(iterator)是一种可以记住遍历对象位置的对象
对于序列的数据结构我们可以使用iter()方法创建迭代器
之后调用next()函数进行迭代输出
生成器
使用了 yield(产出) 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
调用生成器的主要目的是节省存储空间,假如我们需要打印一个含有1000个有规律的元素列表,如果我们创建了这个列表,那么将会占用很大的空间,使用生成器时仅会保存当前的运行信息,并在下次执行时从当前位置开始执行,节省了空间
常用函数
1,增加元素
append:在列表末尾添加新元素。
insert:在列表的特定位置添加元素。
extend:通过添加新列表来扩展列表。
2,删除元素
remove:将删除列表中的第一个匹配值,它以值作为参数。
del:使用索引删除元素,它不返回任何值。
pop:将删除列表中顶部的元素,并返回列表的顶部元素。
3,split()函数
Python中,split函数的基本用法是将字符串按照指定的规则或者要求进行分割,并返回list值
4,map()函数
map() 会根据提供的函数对指定序列做映射。
Python 2.x 返回列表。
Python 3.x 返回迭代器。
高频编程题
(简单)反转Python字符串
1,使用索引切片
切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法
string = ‘hello’
string[::-1]
‘olleh’
2,使用reverse()函数
(简单) 给你一个随机字符串,统计它的长度
如果想要动态获取用户输入的字符串长度,可以使用input( )函数来获取用户输入的字符串。示例代码如下:
random_str = input("Please enter a random string: ")
length = len(random_str)
print(“The length of the string is:”, length)
(一般) 给你一个随机字符串,统计里面大小写字母出现的次数

随机字符串

random_str = “AbcDeFgHijklMNOpqRstUVWXYZtuvwxyz”

统计大写字母和小写字母的数量

upper_count = 0
lower_count = 0

遍历字符串中的每个字符

for char in random_str:

如果是大写字母,则将大写字母数量加1

if char.isupper():
upper_count += 1

如果是小写字母,则将小写字母数量加1

elif char.islower():
lower_count += 1

输出结果

print(“The number of uppercase letters is:”, upper_count)
print(“The number of lowercase letters is:”, lower_count)
其中,random_str是一个随机字符串,isupper()方法可以判断一个字符是否为大写字母,islower()方法可以判断一个字符是否为小写字母。通过遍历字符串中的每个字符,可以统计大写字母和小写字母的数量,最后使用print()函数输出结果。
编写程序,查找文本文件中最长的单词
def longest_word(filename):
with open(filename, ‘r’) as infile:
words = infile.read().split()
max_len = len(max(words, key=len))
return [word for word in words
if len(word) == max_len]print(longest_word(‘test.txt’))

[‘comprehensions’]
编写程序,检查序列是否为回文
a = input(“Enter The sequence”)
ispalindrome = a == a[::-1]
ispalindrome
True
六,面试常见问题总结
(难) Python怎么解析日志文件,说说用到的库和思路
解析日志文件是软件测试和故障排查中的常见操作。
通常的思路是:读取日志文件,对每一行数据进行解析和处理,然后对所需的信息进行保存或者展示。在处理过程中应该考虑到数据结构和复杂度,以及代码的可重用性和可维护性等问题。
.re(正则表达式):通常情况下,日志文件都有特定的格式,使用re库可以方便地从日志文件中提取出所需的信息。例如,使用re.findall()方法可以根据正则表达式匹配日志行,并从中提取出关键信息。
.Pandas:Pandas是一个功能强大的数据处理和分析库,可以用于处理大规模日志数据集。它提供了灵活的数据结构、数据的读写和过滤等功能,并且可以进行统计、聚合以及可视化等操作。
.Numpy:Numpy是Python中最基础的科学计算库之一,它提供了高效的数值计算和矩阵运算,可以用于日志文件中数据的处理和分析。
.Scipy:Scipy是针对科学和工程计算的Python库。它提供了多种算法和工具,例如优化、信号处理、统计分析等,可以在日志数据的预处理和分析中发挥作用。
脚本打包
使用Python第三方打包库PyInstaller将py文件打包成一个可执行的exe文件
在使用时无需安装Python也可以点击运行
(需要提前准备ico图标文件)
打包执行代码命令:pyinstaller -F --icon=tp.ico te st.py;

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值