尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Python基础知识点

Python基础知识点 Python是一种面向对象的解释型计算机程序设计语言。Python是强类型的动态脚本语言。编译型和解释型语言各有优缺点解释型缺点执行慢优点可以跨平台操作系统编译型缺点不能跨平台优点执行快1 注释1.1 单行注释1.2 多行注释使用方式三组英文双引号或三组英文单引号1.3 批量注释/取消注释选中后按 (Ctrl/)2 输入输出1.1输出print()sep 设置多语句输出的分隔符默认为空格print(哈哈哈,嘿嘿嘿,嘻嘻嘻) # 输出哈哈哈 嘿嘿嘿 嘻嘻嘻 ​ print(哈哈哈,嘿嘿嘿,嘻嘻嘻sep,) # 输出哈哈哈嘿嘿嘿嘻嘻嘻end 设定以...结尾默认值是\n。也可用于字符串拼接print(字符串1,end字符串2) # 输出字符串1字符串2第二个print里的值字符串输入输出必须加上引号单引号双引号均可1.2输入input()name input(请输入姓名) print(name)3 变量标识符的命名规范3.1 合法的标识符:字母数字(不能开头),下划线py3可以用中文不建议py2不可以。3.2 注意大小3.3 不能使用关键字和保留字关键字 if,while,for,as,import保留字inputprintrange3.4没有长度限制3.5望文生义看到名字就知道要表达的意思。4 数据类型4.1 数值类型整数int浮点型float布尔型bool复数complex固定写法z a bja是实部b是虚部j是虚数单位4.2核心数据类型数据类型查询print(type(数据名))字符串strHello或Python。数字int/float42或3.14。布尔值boolTrue或False。列表list[1, 2, 3]可修改。元组tuple(1, a)不可修改。字典dict{name: Alice}键值对。5 表达式数字、算符、数字分组符号括号、变量等对象的组合叫做表达式表达式均有固定字面值6 运算符6.1 算术运算符基本运算加、-减、*乘、/除返回浮点数。特殊运算//整除结果向下取整%取模余数符号与除数一致**幂运算右结合性如2**3**2 2^(3^2) 512。6.2 位运算符操作二进制位仅支持整数类型需掌握二进制转换如5→101。关键运算符~按位取反结果为-(x1)如~5 -6。右移正数补0负数补1如-5 2 -2。6.3 比较运算符结果类型返回布尔值True/False支持数值、字符串、列表等。易错点值相等 vsis内存地址相同如1 1.0为True但1 is 1.0为False。链式比较如1 2 3等价于1 2 and 2 3。字符串比较按ASCII码顺序如A aabc abd。6.4 逻辑运算符组合布尔值notandor优先级支持短路求值。6.5 赋值运算符基础形式赋值复合形式如、-、*等。注意Python无或--自增运算符需用x 1替代。6.6 运算符优先级从高到低幂运算**。按位取反~、正负号x/-x。算术运算乘*、除/、整除//、取模% 加、减-。位运算左移、右移 按位与 按位异或^ 按位或|。比较运算、、等和身份运算is、is not。逻辑运算notandor。赋值运算及其复合形式优先级最低。强制优先级使用括号()明确运算顺序。6.7 特殊规则结合性同优先级运算符按“左结合”从左到右或“右结合”如幂运算**从右到左。类型限制位运算仅支持整数算术运算支持数值类型。7 字符串7.1 字符串基础特性不可变性定义后无法直接修改单个字符如s[0] A会报错需通过切片或拼接生成新字符串。可迭代性支持遍历每个字符三种表示形式引号类型语法示例适用场景单引号Hello短文本内部可嵌套双引号如He said Hi双引号Python功能同单引号内部可嵌套单引号如Its a cat三引号多行\n文本或多行\n文本多行文本或保留换行/空格也可作多行注释7.2 字符串访问与操作1. 索引获取单个字符规则正向从0开始反向从-1开始。s Python print(s[0]) # 输出: P正向索引0 print(s[-1]) # 输出: n反向索引-12. 切片截取子串语法[start:end:step]左闭右开包含start不包含endstep默认为1。s Python print(s[1:4]) # 输出: yth索引1到3 print(s[::2]) # 输出: Pto全串步长2 print(s[::-1]) # 输出: nohtyp步长-1反转字符串3. 常用操作拼接用连接字符串仅支持字符串间拼接。print(Hello World) # 输出: Hello World重复用*重复字符串n次。print(- * 10) # 输出: ----------成员判断用in/not in判断字符/子串是否存在。print(ll in hello) # 输出: True7.3 字符串内置方法1. 大小写转换s.upper()全部转为大写。s.lower()全部转为小写。s.title()每个单词首字母大写。print(hello.upper()) # 输出: HELLO print(HELLO.lower()) # 输出: hello print(hello world.title()) # 输出: Hello World2. 去除空白字符s.strip()去除首尾空白含空格、换行符\n、制表符\t。s.lstrip()/s.rstrip()仅去除左/右空白。s \n Python \t print(s.strip()) # 输出: Python3. 查找与替换s.find(sub)返回子串sub第一次出现的下标不存在返回-1。s.replace(old, new, count)替换old为newcount可选指定替换次数默认全部。s hello world print(s.find(l)) # 输出: 2 print(s.replace(l, x, 2)) # 输出: hexxo world4. 分割与连接s.split(sep)按sep分割字符串返回列表sep默认为空白。sep.join(list)用sep连接列表元素为字符串。s a,b,c print(s.split(,)) # 输出: [a, b, c] print(-.join([a, b])) # 输出: a-b5. 类型判断s.isdigit()判断是否全为数字。s.isalpha()判断是否全为字母。print(123.isdigit()) # 输出: True print(abc.isalpha()) # 输出: True7.4 字符串格式化1. f-stringname Elysia age 18 print(fHello, {name}!) # 输出: Hello, Elysia!2.format()方法print(Hello, {}!.format(name)) # 输出: Hello, Elysia!3.%格式化最常用print(Hello, %s! % name) # 输出: Hello, Elysia! print(姓名: %s,年龄: %d % (name,age)) # 输出: 姓名: Elysia,年龄: 18%6d输出整数位数为6不足的话用空格补全%06d输出整数位数为6不足的话用0补全7.5 转义字符Python用反斜杠\转义特殊字符print(\n) # 换行符 print(\t) # 制表符 print(\\) # 输出\ print(%%) # 输出%使用原始字符串r\n可忽略转义print(r\n) # 输出: \n7.6 注意事项引号必须成对使用且开始与结束的引号类型需一致。字符串拼接时非字符串类型需用str()转换如Num: str(123)。字符串方法均返回新字符串不修改原字符串不可变性。8 判断语句8.1 if判断例age input(请输入你的年龄) if age 18: input内部默认字符串类型而字符串与整形不能进行大小比较故将整形变为字符串类型 print(未成年人不能上网) if age 18: print(年龄通过祝您愉快)8.2 if-else判断8.3 if嵌套9 循环9.1 循环类型while循环条件循环条件循环通过判断条件决定是否执行循环体分为当型循环和直到型循环。语法初始化计数器 while 条件: 循环体 更新计数器特点需手动初始化计数器并更新条件否则可能形成死循环。适用于循环次数未知的场景 。for循环迭代循环遍历循环用于迭代序列如str、list、tuple、dict或可迭代对象。语法for 元素 in 可迭代对象: 循环体for i in range(1,6): print(i) # 输出1,2,3,4,5特点循环次数由序列长度决定无需手动更新计数器。遍历顺序为元素在序列中的原始顺序。9.2 循环控制语句break作用立即终止整个循环无论条件是否满足。场景搜索算法中提前退出、用户输入满足条件时停止。示例for i in range(10): if i 5: break print(i) # 输出0-4continue作用跳过当前迭代直接进入下一次循环。场景过滤数据时跳过不符合条件的元素。示例for i in range(5): if i 2: continue print(i) # 输出0,1,3,49.3 循环选择建议for循环优先用于已知迭代次数或需遍历序列的场景while循环适用于循环次数未知或需动态判断条件的场景10 列表(list)10.1 列表的创建与特性创建方式直接定义list1 [1, hello, True, [2, 3]]支持嵌套和混合类型空列表list2 []或list2 list()转换其他对象list3 list(abc) # 输出: [a, b, c] list4 list((1, 2, 3)) # 输出: [1, 2, 3]核心特性可变可直接修改元素增、删、改内存地址不变。有序元素按插入顺序排列支持索引访问从0开始。可重复允许存储相同值的元素如[1, 1, 2]。类型无限制可存储整数、字符串、列表、字典等任意类型。10.2 索引与切片访问元素索引正向索引从左到右第一个元素为0如lst[0]。反向索引从右到左最后一个元素为-1如lst[-1]。示例lst [10, 20, 30, 40] print(lst[0]) # 输出: 10 print(lst[-1]) # 输出: 40切片语法lst[start:end:step]返回新列表不修改原列表。规则start起始位置默认0。end结束位置不包含默认列表长度。step步长默认1负数表示反向切片。示例lst [10, 20, 30, 40, 50] print(lst[1:3]) # 输出: [20, 30] print(lst[::2]) # 输出: [10, 30, 50] print(lst[::-1]) # 输出: [50, 40, 30, 20, 10]10.3 列表的相关操作增加元素lst [10, 20, 30, 40, 50]方法功能示例append(x)在末尾添加一个元素lst.append(60)→[10,20,30,40,50,60]extend(iterable)在末尾添加可迭代对象的所有元素(对于字符串分散添加)lst.extend([60,70])→[10,20,30,40,50,60,70]insert(index, x)在指定索引处插入元素指定位置如果有元素原有元素会后移lst.insert(2, 25)→[10,20,25,30,40,50]删除元素方法功能示例remove(x)根据元素的值进行删除默认删除最先出现的元素lst.remove(1)→ 删除第一个1pop([i])删除指定位置元素 (若无索引则默认删除最后一个元素)popped lst.pop(2)→ 删除索引2的元素clear()清空列表lst.clear()→[]del删除列表或删除指定位置元素del lst→ 删除列表lstdel lst[2]→ 删除索引2的元素修改元素通过索引直接修改lst [1, 2, 3] lst[0] 10 # 修改第一个元素 → [10, 2, 3]查询与统计name_list [bingbing,susu,zizi]方法功能示例index(x)返回元素第一次出现的索引lst.index(3)→ 返回3的索引count(x)统计元素出现的次数lst.count(1)→ 统计1的个数排序与反转lst [2,3,5,1,4]方法功能示例sort()排序列表默认升序排列即从小到大lst.sort()→print 输出[1, 2, 3, 4, 5]reverse()反转列表顺序lst.reverse()→ print输出[4, 1, 5, 3, 2]#降序排列 ls [2,3,5,1,4] ls.sort() #升序排列从小到大 ls.reverse() #倒叙排列 print(ls) #输出列表 #输出结果为降序[5, 4, 3, 2, 1]复制与浅拷贝copy()返回列表的浅拷贝相当于a[:]。lst_copy lst.copy() # 浅拷贝修改不影响原列表10.4 高级操作列表推导式简洁创建列表的方式可结合条件语句squares [x**2 for x in range(10) if x % 2 0] # 输出: [0, 4, 16, 36, 64]嵌套列表列表中可包含其他列表形成多维结构matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]]11 元组(tuple)11.1 元组基本格式tua (1,2,3,a,b,c) #定义元组不同元素可以是不同数据类型 tua () #定义空元组 tua (1,) #只有一个元素时末尾必须加上,否则返回唯一的值的数据类型11.2 元组与列表的区别元组只有一个元素末尾必须加逗号列表不用元组只支持查询操作不支持增删改元组只读11.3 应用场景12 字典(dict)12.1 基本格式字典名 {键1 值1 键2 值2}字典中键具有唯一性但值可以重复如果键发生重复不会报错但相同键名前面的值会被后面的值所覆盖12.2 字典常见操作一查看元素变量名[键名]键名不存在会报错变量名.get(键名)键名不存在默认返回None变量名[键名]不可以根据下标查询字典里没有下标查找元素需要根据键名键名相当于下标dic {name:bingbing,age:18} #创建字典 print(dic[age]) #查找元素需要根据键名 print(dic[sex]) #键名不存在会报错变量名.get(键名)键名不存在会返回Nonedic {name:bingbing,age:18} #创建字典 print(dic.get(sex)) #键名不存在默认返回None print(dic.get(sex,不存在)) #可自行设置返回值目前返回‘不存在’修改元素添加元素删除元素方法功能示例del 字典名删除整个字典del dicdel 字典名[键名]删除指定键值对键值对不存在会报错del dic[age].pop()删除指定键值对键值对不存在会报错dic.pop(age).clear()清空字典内容保留字典本身dic.clear()→print(dic)输出结果为{}12.3 字典常见操作二len()求长度求字典中键值对个数求列表中元素个数求字符串中字符个数不包括\0.keys()返回字典里包含的所有键名dic {name:bingbing,age:18} print(dic.keys()) #输出 dict_keys([name,age]) # for循环取出键名 for i in dic.keys(): #只取出键名 print(i) #输出 name \n age.values()返回字典里包含的所有值dic {name:bingbing,age:18} print(dic.values()) #输出 dict_values([bingbing,18]) # for循环取出值 for i in dic.keys(): #只取出值 print(i) #输出 bingbing \n 18.item()返回字典里包含的所有键值对键值对以元组形式输出12.4 字典的应用场景使用键值对存储描述一个物体的相关信息13 集合(set)13.1 集合的基本格式集合中的元素可以是不同的数据类型13.2 集合的特性无序性同一个集合每次打印输出时输出的字符元素顺序都各不相同但数字集合运行结果一致且不能修改集合中的值不能通过下标去查询唯一性可以自动去重13.3 集合的常见操作集合具有无序性所以不能通过下标去查询或修改添加元素集合的唯一性决定了如果需要添加的元素在原集合中已经存在就不进行任何操作方法功能示例.add()整体添加一次只能添加一个元素但可用元组类型整体添加s2.add(5)→ 向原有集合s2中增添一个元素5s2.add(5,6)→报错一次只能添加一个元素s2.add((5,6))→ 向原有集合s2中添加一个元组56.update()拆分元素逐个放入集合括号里需要放可迭代对象如字符串、列表、元组s2.update(567)删除元素方法功能示例.remove()指定元素删除若指定元素集合中没有则报错s2.remove(3)→ 删除原集合s2中的元素3.pop()括号中无参默认删除根据hash表无序排列后的第一个元素s2.pop().discard()指定元素删除若指定元素集合中没有则不会进行任何操作s2.discard()13.4 交集和并集14 类型转换15 深浅拷贝浅拷贝只拷贝数据深拷贝拷贝内存地址方法功能示例赋值数据完全共享变化一致li [1,2,3]li2 li浅拷贝数据半共享li2 copy.copy(li)深拷贝数据完全不共享li2 copy.deepcopy(li)15.1 赋值15.2 浅拷贝(数据半共享藕断丝连)会创建新的对象拷贝第一层的数据嵌套层会指向原来的内存地址import copy #导入copy模块 li [1,2,3,[4,5,6]] #定义一个嵌套列表 #浅拷贝 第一个copy是调用库copy,第二个是库copy中的copy函数 li2 copy.copy(li) print(li,li) print(li2,li2) #查看内存地址 id() print(li内存地址,id(li)) print(li2内存地址,id(li2)) #内存地址不一样说明不是同一个对象 li.append(8) print(li,li) #打印输出包含新增元素8 print(li2,li2) #打印输出不包含新增元素8 #往嵌套列表添加元素 li[3].append(7) print(li,li) #打印输出嵌套列表中包含新增元素7 print(li2,li2) #打印输出嵌套列表中包含新增元素7 #查看嵌套列表内存地址 print(li[3]内存地址,id(li)) print(li2[3]内存地址,id(li2)) #内存地址相同说明是同一个对象即嵌套层会指向原来的内存地址 #总结外层的内存地址不同但内层的内存地址相同优点拷贝速度快占用空间少拷贝效率高15.3 深拷贝数据完全不共享完全无关外部的对象和内部的元素全部拷贝了一遍import copy #导入copy模块 li [1,2,3,[4,5,6]] #定义一个嵌套列表 #深拷贝 第一个copy是调用库copy,第二个是库copy中的deepcopy函数 li2 copy.deepcopy(li) print(li,li) print(li2,li2) #查看内存地址 id() print(li内存地址,id(li)) print(li2内存地址,id(li2)) #内存地址不一样说明不是同一个对象 li.append(8) print(li,li) #打印输出包含新增元素8 print(li2,li2) #打印输出不包含新增元素8 #往嵌套列表添加元素 li[3].append(7) print(li,li) #打印输出嵌套列表中包含新增元素7 print(li2,li2) #打印输出嵌套列表中不包含新增元素7 #查看嵌套列表内存地址 print(li[3]内存地址,id(li)) print(li2[3]内存地址,id(li2)) #嵌套列表内存地址不一样说明也不是同一个对象 #总结内外层的内存地址均不同即深拷贝数据变化只影响自己本身跟原来对象没有联系16 可变与不可变对象16.1 可变对象含义变量对应的值可以修改但内存地址不会发生改变16.2 不可变对象含义变量对应的值不能被修改如果修改就会生成一个新的之从而分配新的内存空间17 函数17.1 函数基础函数定义用def 函数名(参数列表):定义函数体缩进。def login(name): print(这是登录函数)函数调用函数名加括号传参调用。login()17.2 参数类型位置参数按定义顺序传参。def add(a, b): return a b result add(3, 5)关键字参数指定参数名传参可打乱顺序。result add(b 5, a 3)默认参数定义时为参数设默认值调用可省略。def power(x, n 2): return x ** n result power(4)可变参数*args接收任意数量位置参数打包成元组。def sum_numbers(*args): return sum(args) result sum_numbers(1, 2, 3, 4)**kwargs接收任意数量关键字参数打包成字典。def print_info(**kwargs): for k, v in kwargs.items(): print(f{k}: {v}) print_info(name Bob, age 25)17.3 返回值无返回值返回None单返回值用 return 返回一个值。def square(x): return x * x result square(6) print(result)多返回值以元组形式返回多个值。def get_name_and_age(): return bingbing, 18 print(get_name_and_age())return与print的区别1.return表示函数结束print会一直执行2.return是返回计算值print是打印结果17.4 作用域局部作用域函数内变量只能内部访问。def test_local(): local_var 10 print(local_var) test_local()全局作用域函数外变量程序全局可访问。用 global 在函数内修改。global_var 20 def modify_global(): global global_var global_var 30 modify_global() print(global_var)嵌套作用域内层函数可访问外层变量用 nonlocal 修改。def outer(): outer_var 40 def inner(): nonlocal outer_var outer_var 50 inner() print(outer_var) outer()17.5 匿名函数lambda 函数定义简单一次性函数lambda 参数: 表达式。add lambda a, b: a b result add(7, 8)17.6 装饰器增强函数功能本质高阶函数。def my_decorator(func): def wrapper(): print(Before) func() print(After) return wrapper my_decorator def say_hello(): print(Hello!) say_hello()17.7 递归函数函数调用自身需有终止条件。def factorial(n): return 1 if n in [0, 1] else n * factorial(n - 1) result factorial(5)17.8 生成器函数用 yield 关键字返回生成器对象。def count_up_to(n): num 1 while num n: yield num num 1 counter count_up_to(3) for num in counter: print(num)18 模块
返回列表