python的基础知识点(个人总结)

一、什么是解释器?

执行代码的核心程序,负责将编写的代码转换为计算机能理解的指令并运行

默认:Cpython, 由c语言编写

二、安装python时要注意什么?

勾选add to path,保证在cmd中能使用python、pip等命令

三、python中的数据类型

1、基本数据类型

int

存在小整数的说法,[-5,256]都是小整数。小整数用is判断是相等的

float
浮点数用于表示实数(带小数点的数字)
bool
布尔值表示逻辑真(True)或假(False)。只有两个值:True 和 False(注意首字母大写)。是 int 的子类(True=1,False=0)
str

count(sub,start=0,end=len(str))
返回sub在str中出现的次数

startswith(prefix,start=0,end=len(str))
检查字符串在指定范围是否以prefix开头,
是则返回true
否则False

endswith(suffix,start=0,end=len(str))
检查字符串在指定范围是否以prefix结尾,
是则返回true
否则False

find(sub,start=0,end=len(str))
检测sub是否包含在str指定范围

index(sub,start=0,end=len(str))
与find一致,但sub不在str中会报异常

rindex(sub,start=0,end=len(str))
与index一致,但从右开始寻找

lstrip()
默认删除左边的空格

rstrip()
默认删除右边的空格

strip()
默认删除左右两边的空格

replace(old,new,max=str.count(old))
将字符串中old替换成new,若max指定,则替换不超过max次

join(seq)
以str作为分隔符,将seq中所有的元素合并为一个新字符串

split(sub=“”,num=str.count(obj))
以sub为分隔符截取字符串,若num有指定值,则截取num次

splitlines(keepends=False)
按行\r、\r\n、\n、分隔,返回一个包含各行作为元素的列表,如果参数keepends为False,不包含换行符,如果为True,则保留换行符

bytes
	b“***”

2、可变容器

list

append(obj)
在列表末尾添加新对象

count(obj)
统计某个元素在列表中出现的次数

extend(seq)
在列表末尾一次性追加另一个序列

index(obj)
在列表中找出某个值第一个匹配项的索引位置

insert(index,obj)
将对象插入列表

pop(index)
移除列表中一个元素,默认最后一个,返回该元素的值

remove(obj)
移除列表中某个值的第一个匹配项

reverse()
反向列表中元素

sort()
对原列表进行排序

clear()
清空列表

copy()
复制列表

dict

key in dict
若键在字典dict中返回True,否则返回False

item()
返回可遍历的(键,值)元组

keys()
返回一个字典所有的键

values()
返回字典中的所有值

update(dict2)
把字典dict2的键/值对添加到dict里

get(key,default=None)
返回指定键的值,若键不存在于字典中,将会返回default值

setdefault(key,default=None)
返回指定键的值,若键不存在于字典中,将会添加键并将值设为default的值

pop(key[,default])
删除键key对应的值,返回被删除的值。key不存在,返回default的值。若key不存在,default也未传值,则报错

copy()
返回一个字典的浅复制

clear()
删除字典内所有元素

若dict中重复key,如何取值
取后者

set

	{xxx,xxx}

和字典长得很像,定义用set()

3、不可变容器

tuple

count(obj)
统计某个元素在元组中出现的次数

index(obj)
在元组中找出某个值第一个匹配项的索引位置

frozenset

不可变集合类型,与set类似但不可修改
fs = frozenset([1, 2, 3, 4])
print(fs)  # 输出: frozenset({1, 2, 3, 4})

#fs.add(5)  # 会报错,因为 frozenset 不可变

#可以作为字典的键
d = {fs: "value"}

可变与不可变之间的区别
可hash,不可变
不可hash,可变

4、特殊类型

NoneType

None 是 Python 中表示空值或缺失值的特殊对象,它是 NoneType 类型的唯一实例

x = None
print(type(x))  # 输出: 

range

range 表示一个不可变的数字序列,通常用于循环中
r = range(5)        # 0, 1, 2, 3, 4
r2 = range(1, 10, 2) # 1, 3, 5, 7, 9

function

在 Python 中,函数也是对象,类型为 function
def greet(name):
return f"Hello, {name}!"

print(type(greet))  # 输出: 

type

type 在 Python 中有双重作用:
	作为获取对象类型的函数
		x = 5
		print(type(x))  # 输出: 


	作为所有类的元类(用于创建类)
		MyClass = type('MyClass', bases, namespace)
		
			类名字符串 ('MyClass')
				作为新类的名称
				通常与赋值给它的变量名相同(但不是必须的)
			基类元组 (bases)
				包含新类要继承的父类
				如果为空元组 (),则默认继承 object
				例如 (BaseClass,) 注意逗号表示这是元组
			命名空间字典 (namespace)
				包含类的属性和方法
				字典键是属性/方法名
				字典值是属性值或函数定义
				
		# 使用 type 动态创建类
			MyClass = type('MyClass', (), {'x': 10})
			obj = MyClass()
			print(obj.x)  # 输出: 10

四、什么是切片

切片是 Python 中一种强大而灵活的操作,用于从序列类型(如列表、字符串、元组等)中提取子序列
语法
[start,end,步长]

举例
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 获取索引2到5(不包含)的元素
print(nums[2:5])  # 输出: [2, 3, 4]

# 从开始到索引4(不包含)
print(nums[:4])   # 输出: [0, 1, 2, 3]

# 从索引6到末尾
print(nums[6:])   # 输出: [6, 7, 8, 9]

# 获取所有元素,步长为2
print(nums[::2])  # 输出: [0, 2, 4, 6, 8]

# 获取最后3个元素
print(nums[-3:])  # 输出: [7, 8, 9]

# 从第3个元素到倒数第2个元素
print(nums[2:-1])  # 输出: [2, 3, 4, 5, 6, 7, 8]

# 反转列表
print(nums[::-1])  # 输出: [5, 4, 3, 2, 1, 0]

# 从索引4到索引1,步长-1
print(nums[4:1:-1])  # 输出: [4, 3, 2]

五、f" “、r” “、b” "分别代表什么

f:
格式化字符串,允许在字符串中直接嵌入变量或表达式

r:
取消转义字符(如 \n、\t)的特殊含义,字符串内容保持原样。
常用于 正则表达式、文件路径、Windows 路径 等需要大量反斜杠 \ 的场景

b:
表示 字节序列(bytes) 而非普通字符串(str)
用于 二进制数据操作(如文件读写、网络传输)

六、class包含内容

属性

类属性
	变量
实例属性
	实例方法中,self.变量(__init__)

方法

实例方法
	第一个参数self
类方法
	@classmethod装饰,第一个参数为(cls)
静态方法
	@staticmethod装饰

实例化

类名(参数1,参数2)

调用
obj.属性名
obj.方法名

七、装饰器

装饰器是 Python 中一种强大的语法特性,它允许你在不修改原函数代码的情况下,动态地扩展函数的功能

用法

@decorator
def func()

等价于
func=decorator(func)

创建

def decorator(Func):
  def w():
    功能加强
    调func
    return
return w

八、什么是继承

继承是面向对象编程(OOP)的三大特性之一(封装、继承、多态),它允许我们基于已有的类创建新类,新类会自动获得父类的属性和方法,并可以添加自己的新特性

语法

class ParentClass:
# 父类属性和方法
pass

class ChildClass(ParentClass):  # 继承ParentClass
# 子类特有的属性和方法
pass

可重写父类方法
super()调用父类的方法、属性

九、运算符

算术运算符
+、-、*、/、//、%、**

逻辑运算符
<、>、>=、<=、!=、==、not、and、or、in、is

十、可迭代对象

str、list、tuple、dict、bytes、set

如何判断是否可迭代?
用iter(),报错就不可迭代

十一、is与==的区别

is判断对象
==判断值

十二、函数相关知识点

1、常见函数

len

	返回对象的长度(元素个数),适用于字符串、列表、元组、字典、集合等可迭代对象
		len(object)

print

	输出内容到控制台,可以打印字符串、变量、表达式等
		print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
		*objects:要打印的内容,多个值用逗号分隔。

	sep:分隔符(默认是空格)。
	
	end:结束符(默认是换行 \n)。
	
	file:输出目标(默认是标准输出 sys.stdout)。
	
	flush:是否强制刷新缓冲区(默认 False)

input

	从用户输入读取一行字符串(默认返回 str 类型)
		input(prompt)
		prompt:可选,提示信息(显示在输入前)

type

	返回对象的类型(如 int、str、list 等)
		type(object)

isinstance

	检查对象是否是指定类型(或元组中任一类型)
		isinstance(object, classinfo)
		num = 10
		print(isinstance(num, int))      # True
		print(isinstance(num, (int, float)))  # True

hash
返回对象的哈希值

range

	生成不可变的整数序列
		range(start, stop, step)

max/min
返回可迭代对象中的最大值/最小值

zip

	将多个可迭代对象打包成元组迭代器
		zip(*iterables)
		
		names = ["Alice", "Bob"]
		ages = [25, 30]
		for name, age in zip(names, ages):
		    print(name, age)  # Alice 25, Bob 30

filter

	过滤可迭代对象,保留满足条件的元素
		filter(function, iterable)
		nums = [1, 2, 3, 4]
		even = filter(lambda x: x % 2 == 0, nums)
		print(list(even))  # [2, 4]

sorted

	返回排序后的新列表(原对象不变)
		sorted(iterable, *, key=None, reverse=False)
		nums = [3, 1, 4]
		print(sorted(nums))                # [1, 3, 4]
		print(sorted(nums, reverse=True))  # [4, 3, 1]

传参

(1)直接传值
(2)传键值对k=v
(3)混合用k=v放后面

入参

位置参数:必传
默认参数:可以不传
可变参数:*args,元组,不传是空元组
关键字:**kwargs,字典
def func(位置,可变,默认,关键字)

return

(1)返回单个、多个(元组)
(2)结束当前函数执行
(3)若无return返回None

高阶函数
函数入参或值是一个函数

十三、生成器

生成器是 Python 中一种特殊的迭代器,它允许你按需生成值而不是一次性计算并存储所有值,从而节省内存并提高效率
(1)包含yield的函数
(2)调用含yield的函数会返回生成器而不是结果
(3)g函数有yield,用next(g)多次调到执行完为止,每次到yield都会停下来

十四、列表生成器

列表生成器(又称列表推导式)是 Python 中一种简洁高效的创建列表的方式,它可以用一行代码替代传统的多行循环语句来生成列表

语法

[expression for item in iterable]

expression:对 item 的处理表达式(可以是变量、函数调用、运算等)。

item:迭代变量,取自可迭代对象 iterable(如列表、字符串、range 等)
# 生成 0~9 的平方列表

例如
# 传统方式
squares = []
for x in range(5):
    squares.append(x**2)

#列表生成器方式
squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]

举例:

# 生成 0~9 的平方列表
squares = [x ** 2 for x in range(10)]
print(squares)    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 将字符串转为大写
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words]
print(upper_words)    # ['HELLO', 'WORLD', 'PYTHON']

十五、流程控制语句语法

if

if condition1:
# 条件1成立时执行
elif condition2:
    # 条件2成立时执行
else:
    # 其他情况执行

for

for item in iterable:
# 循环体
else:
    # 循环正常结束后执行(非 `break` 退出时)

while

while condition:
# 循环体
else:
# 条件变为 False 后执行(非 `break` 退出时)

十六、变量的作用范围

LEGB
局部作用域(Local, L):函数或方法内部。
闭包作用域(Enclosing, E):嵌套函数的外层作用域。
全局作用域(Global, G):模块(文件)级别。
内置作用域(Built-in, B):Python 内置变量(如 print, len)

十七、模块引用

标准库
from *** import ***(变量、函数、方法)

第三方
from 包 import 模块 as 名字

注意:
(1)被引入的模块都会执行
(2)引入语句放文件顶部
(3)pythonPath的路径引导寻找包

十八、try语法与抛出异常

try:
    # 可能引发异常的代码
except ExceptionType as e:
    # 处理特定异常
except (ExceptionType1, ExceptionType2) as e:
    # 处理多个异常
except:
    # 捕获所有其他异常(不推荐,应明确指定异常类型)
else:
    # 如果没有异常发生,执行此块
finally:
    # 无论是否发生异常,都会执行此块(常用于清理资源)
    
raise ExceptionType("错误信息")  # 抛出指定类型的异常

十九、常见错误类型

语法错误:代码不符合 Python 语法规则
SyntaxError: expected ‘:’

缩进错误:缩进不正确(常见于 if、for、def 等代码块)
IndentationError: expected an indented block

名称错误:尝试访问未定义的变量或函数。
NameError: name ‘unknown_var’ is not defined

类型错误:操作或函数应用于不适当类型的对象
TypeError: can only concatenate str (not “int”) to str

断言错误
AssertionError: x 应该等于 20

除零错误
ZeroDivisionError: division by zero

索引错误:访问列表、元组或字符串时,索引超出范围
IndexError: list index out of range

键错误:访问字典中不存在的键
KeyError: ‘age’

值错误:函数接收到正确类型但无效的值
ValueError: invalid literal for int() with base 10: ‘abc’

属性错误:尝试访问对象不存在的属性或方法
AttributeError: ‘str’ object has no attribute ‘append’

文件未找到错误
FileNotFoundError: [Errno 2] No such file or directory: ‘nonexistent.txt’

导入错误:导入不存在的模块或模块中的对象
ModuleNotFoundError: No module named ‘non_existent_module’
ImportError: cannot import name ‘non_existent_function’ from ‘math’

递归错误:递归深度超过最大限制(默认 1000 层)
RecursionError: maximum recursion depth exceeded

内存不足:程序内存不足
MemoryError

超时错误:某些操作超时
TimeoutError: Request timed out

二十、文件操作

语法

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

	file	文件路径(字符串或字节串)	必填
	
	mode	文件打开模式(如 'r' 只读,'w' 写入等)	'r'
	
	encoding	文件编码(如 'utf-8'、'gbk')	None
	
	errors	编码错误处理方式(如 'ignore' 忽略错误,'strict' 抛出异常)	None
	
	newline	控制换行符(如 None、'\n'、'\r\n')	None

打开模式

'r'	只读(默认模式)	报错
'w'	写入(覆盖已有内容)	创建新文件
'a'	追加(在文件末尾写入)	创建新文件
'x'	独占创建(文件必须不存在)	报错
'b'	二进制模式(如 'rb'、'wb')	-
't'	文本模式(默认)	-
'+'	读写模式(如 'r+' 可读可写,'w+' 可读可写并清空文件)	-

常用方法

file.read(size)	读取 size 字节(不指定则读取全部)

file.readline()	读取一行(包括 \n)

file.readlines()	读取所有行,返回列表(每行一个元素)

file.write(str)	写入字符串(返回写入的字符数)

file.writelines(list)	写入字符串列表(不会自动加换行符)

file.seek(offset)	移动文件指针到 offset 字节处(如 file.seek(0) 回到文件开头)

file.tell()	返回当前文件指针位置

file.close()	关闭文件(with 语句可自动调用)

二十一、json与字典的转换

(1)json转dict

json.loads()

(2)dict转json

json.dumps()

你可能感兴趣的:(个人笔记,python,开发语言)