Python 简介与入门

Python 简介与入门 Python 简介与入门目录一、Python 初识1. Python 的优势2. Python 的特性3. Python 的应用领域二、Linux 环境中安装 Python1. 下载 Python 源码包2. 安装依赖包3. 解压安装 Python4. 编译安装 并 建立软链接5. 测试运行6. 设置国内 pip 更新源7. 更新 pip三、Windows 系统中安装 Python1. 安装 Python 程序2. 安装 vscode 编译器3. 安装 vscode 插件4. 设置国内更新源四、Python 的语法基础1. 标识符2. Python 保留字3. 注释4. 语句与缩进1语句2代码块3多行语句5. pass 语句五、Python 常用的数据类型1. 数字2. 字符串3. 列表1列表的定义2列表的取值3修改列表元素值4添加列表元素5删除列表元素6查找列表元素7合并列表8重复列表9列表常见问题4. 元组1元组的创建2元组的操作5. 字典1字典的创建2字典的取值操作3字典的添加、修改、删除操作4字典的常见问题一、Python 初识1. Python 的优势简洁易读语法接近自然语言如英语代码可读性高降低学习和维护成本。丰富的生态库拥有超过 20 万个第三方库如NumPy、Django、TensorFlow覆盖几乎所有开发场景。跨平台兼容支持 Windows、Linux、macOS 等操作系统代码无需修改即可跨平台运行。开源免费完全免费社区活跃持续迭代更新由 Python 软件基金会维护。多领域适用既能写脚本自动化小任务也能开发大型企业级应用2. Python 的特性解释型语言无需编译通过解释器逐行执行支持交互式编程如 Jupyter Notebook。动态类型变量类型在运行时自动推断无需显式声明提升编码速度。name Alice # 自动识别为字符串 age 30 # 自动识别为整数面向对象 函数式编程支持多种编程范式灵活应对不同场景需求。自动内存管理垃圾回收机制自动释放未使用的内存减少内存泄漏风险。可扩展性可通过 C/C 编写扩展模块提升关键代码性能如Cython。优势原因高数据结构可以使在一条语句中表达复杂的操作语句组可用缩进代替开始和结束大括号来组织变量或参数无需声明。3. Python 的应用领域领域典型应用常用库/框架Web 开发构建网站后端、API 服务如 Instagram、豆瓣Django、Flask、FastAPI数据分析数据清洗、统计分析、可视化金融、科研领域Pandas、NumPy、Matplotlib人工智能机器学习、深度学习、自然语言处理如 ChatGPT 模型训练TensorFlow、PyTorch、scikit-learn自动化运维批量部署、日志分析、监控告警Ansible、Paramiko、Fabric科学计算物理模拟、工程计算如 NASA 航天器轨迹分析SciPy、SymPy游戏开发快速原型开发、游戏脚本如《文明 IV》AI 逻辑Pygame、Panda3D网络爬虫抓取网页数据如电商价格监控Scrapy、BeautifulSoup、Requests教育领域编程入门教学、算法演示Turtle、PySimpleGUI二、Linux 环境中安装 Python1. 下载 Python 源码包通过 Python 的官网下载网址是 http://www.python.org2. 安装依赖包1.设置yum仓库 2.安装依赖包 yum -y install gcc zlib zlib-devel libffi libffi-devel #安装源码编译需要的编译环境 yum -y install readline-devel #可以避免解决后期出现的方向键、删除键乱码问题 yum -y install openssl-devel openssl11 openssl11-devel export CFLAGS$(pkg-config --cflags openssl11) export LDFLAGS$(pkg-config --libs openssl11) #设置编译FLAG以便使用最新的openssl库3. 解压安装 Pythontar xvf Python-3.11.6.tar.xz cd Python-3.11.6/ ./configure --prefix/usr/local/python34. 编译安装 并 建立软链接make make install #编译安装 #软链接 ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip35. 测试运行python36. 设置国内 pip 更新源#案例为阿里的更新源 方法1: cat EOF /root/.config/pip/pip.conf [global] index-url http://mirrors.aliyun.com/pypi/simple/ [install] trusted-hostmirrors.aliyun.com 方法2: pip3 config set global.index-url http://mirrors.aliyun.com/pypi/simple pip3 config set install.trusted-host mirrors.aliyun.com7. 更新 pippip3 install --upgrade pip三、Windows 系统中安装 Python1. 安装 Python 程序双击安装python2. 安装 vscode 编译器python提供的IDLE编译器使用起来不太友好需要安装一个编译器更方便使用。如vscode、pycharm设置路径3. 安装 vscode 插件4. 设置国内更新源pip config set global.index-url http://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com pip install --upgrade pip (或python -m pip install --upgrade pip)四、Python 的语法基础1. 标识符定义标识符是用于标识变量、函数、类、模块等对象的名称。命名规则合法字符字母A-Z, a-z、数字0-9、下划线_。开头限制不能以数字开头。区分大小写Name和name是不同的标识符。禁止保留字不能使用 Python 关键字如if、for。示例合法标识符age_3、_count、MyClass、PI 非法标识符3name以数字开头、if保留字、my-name包含连字符2. Python 保留字保留字关键字是 Python 语言中具有特殊功能的专用标识符不能用作任何自定义标识符名称。import keyword print(keyword.kwlist) # 输出Python 3.11 [False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield]常见关键字用途if/elif/else条件分支for/while循环控制def/class定义函数或类try/except异常处理3. 注释注释用于解释代码逻辑不会被解释器执行。单行注释以#开头语法 #单行注释多行注释用三引号或包裹实际是字符串但习惯用作注释语法 #第一行注释#第二行注释#第三行注释 这是一个多行注释 可以跨越多行 常用于函数或类的文档说明。 4. 语句与缩进1语句一行代码表示一个独立的操作如赋值、条件判断、循环、函数调用等。# 赋值语句 name Alice age 30 # 条件语句 if age 18: print(成年人) # 循环语句 for i in range(5): print(i)2代码块由一组逻辑相关的语句组成通过缩进而非大括号定义范围。缩进规则同一代码块内的语句必须保持相同的缩进量通常为 4 个空格或 1 个 Tab 键推荐使用空格。缩进错误会导致语法错误如IndentationError。# 正确缩进4 个空格 if condition: statement1 # 属于 if 代码块 statement2 # 属于 if 代码块 statement3 # 不属于 if 代码块与 if 语句同缩进 # 错误缩进混合 Tab 和空格 if condition: statement1 statement2 # 缩进不一致报错3多行语句当语句过长时可通过以下方式换行反斜杠/在行末加/表示语句延续到下一行。long_sentence 这是一个非常长的句子 / 需要分成多行书写。括号包裹利用圆括号()、方括号[]、花括号{}内的内容可直接换行。numbers [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result (x y z for x in range(3) for y in range(3) for z in range(3))5. pass 语句pass是空操作语句用于保持语法完整性占位符、占位语句。作用作为占位符用于保持代码结构完整避免语法错误不执行任何操作。常见场景定义空函数或空类时后续再补充代码。条件语句或循环中无需执行具体逻辑时。示例# 示例 1空函数 def empty_function(): pass # 不做任何事但函数语法完整 # 示例 2条件语句占位 if age 18: pass # 暂不处理未成年人逻辑 else: print(成年人) # 示例 3空类 class EmptyClass: pass # 类体为空但语法正确五、Python 常用的数据类型1. 数字定义用于表示数值的类型包括整数、浮点数、复数和布尔值。分类int整数没有小数部分的数值支持无限精度受限于内存。a 10 b -5 c 0b1010 # 二进制对应十进制 10 d 0o12 # 八进制对应十进制 10 e 0x0A # 十六进制对应十进制 10float浮点数带小数部分的数值支持科学计数法。f 3.14 g -2.5 h 1e3 # 科学计数法对应 1000.0 i 3.14e-2 # 对应 0.0314complex复数由实部和虚部组成形式为a bj。j 2 3j k complex(1, -4) # 实部 1虚部 -4bool布尔型表示逻辑真True或假False本质是int的子类True1False0。is_valid True is_empty False特性不可变类型修改数字变量会创建新对象。支持算术运算、-、*、/、//、%、**和类型转换如int(3.9)3float(5)5.0。Python 运算符 由、-、/*、/ (加、减、乘、除)和小括号组成运算顺序也是先乘除后加减、小括号优先。2. 字符串定义由字符字母、数字、符号等组成的有序序列用单引号、双引号或三引号多行字符串表示。 name aaa address sss content cccc print (name) print (address) print (content)特点不可变修改会生成新字符串。支持索引和切片str[0]获取首个字符str[2:5]截取子串。转义字符如/n换行、/t制表符、//反斜杠、/ (在行尾时续行符)、/v(纵向制表符) 、/r (回车)。3. 列表定义有序、可变的集合用方括号[]表示元素可以是任意数据类型支持嵌套。特点可变支持增删改元素。异构元素可混合不同类型如[1, a, True]。支持嵌套列表中的元素可以是列表多维列表。1列表的定义语法列表名 [ 元素1元素2…2列表的取值语法列表名 [索引位置]通过索引取值有序序列索引从0开始负数表示从末尾反向索引fruits [apple, banana, orange, grape] print(fruits[0]) # apple第一个元素 print(fruits[-1]) # grape最后一个元素 print(fruits[2]) # orange索引 2 的元素语法列表名 [起始位置终止位置]通过切片取值语法列表[start:end:step]左闭右开返回新列表print(fruits[1:3]) # [banana, orange]取索引 1~2 的元素 print(fruits[:2]) # [apple, banana]从开头到索引 1 print(fruits[2:]) # [orange, grape]从索引 2 到末尾 print(fruits[::2]) # [apple, orange]步长为 2隔一个取一个 print(fruits[::-1]) # [grape, orange, banana, apple]反转列表3修改列表元素值**语法**列表名 [索引位置] 值num [1,2,3] num[0] 4 #修改 print num [4,2,3]4添加列表元素语法**列表名.append(元素值) #**在列表末尾添加单个元素。fruits.append(grape) # 末尾添加 grape print(fruits) # [apple, mango, pear, kiwi, grape]**列表名.insert(索引位置元素值) #**在指定索引处插入元素。fruits.insert(1, banana) # 在索引 1 处插入 banana print(fruits) # [apple, banana, mango, pear, kiwi, grape]5删除列表元素语法del 列表名[索引位置]del fruits[0] # 删除第一个元素 apple print(fruits) # [banana, mango, pear, kiwi, grape, orange, pineapple] del fruits[2:4] # 删除索引 2~3 的元素pear, kiwi print(fruits) # [banana, mango, grape, orange, pineapple]6查找列表元素语法元素值 in 列表名 返回布尔值print(orange in fruits) # True print(apple in fruits) # False7合并列表运算符创建新列表合并两个列表原列表不变。list1 [1, 2, 3] list2 [4, 5, 6] merged list1 list2 # [1, 2, 3, 4, 5, 6]8重复列表使用*运算符重复列表元素生成新列表zeros [0] * 5 # [0, 0, 0, 0, 0] words [hello] * 3 # [hello, hello, hello]9列表常见问题示例索引越界1索引越界问题描述当使用超过列表长度的正索引或绝对值超过列表长度的负索引时会抛出IndexError异常。示例numbers [1, 2, 3, 4, 5] print(numbers[5]) # 报错IndexError: list index out of range正索引越界最大索引为 4 print(numbers[-6]) # 报错IndexError: list index out of range负索引越界最小索引为 -5解决方法用len(列表)检查索引范围if index len(numbers) and index -len(numbers): ...使用try-except捕获异常try: print(numbers[10]) except IndexError: print(索引越界列表长度为, len(numbers))2负值索引特性Python 支持负值索引-1表示最后一个元素-2表示倒数第二个依此类推需满足abs(index) len(列表)。示例fruits [apple, banana, orange, grape] print(fruits[-1]) # grape最后一个元素 print(fruits[-2]) # orange倒数第二个元素3当获取列表指定范围的一组元素时不存在列表索引越界的问题切片时无索引越界问题特性切片操作列表[start:end:step]即使start或end超出列表范围也不会报错而是返回合理的子集空列表或部分元素。示例nums [1, 2, 3] print(nums[5:10]) # []start 超出列表长度返回空列表 print(nums[-10:5]) # [1, 2, 3]start 为负且超出范围默认从列表开头开始 print(nums[1:100]) # [2, 3]end 超出范围取到列表末尾原理切片的start和end会自动被限制在合法范围内小于len(列表)或大于-len(列表)无需手动处理越界。4获取列表指定范围时可以同时使用正数和负数索引切片支持混合正负索引用法切片的start和end可以同时使用正数和负数索引实现灵活的范围选取。示例words [a, b, c, d, e] # 正数 start 负数 end取索引 1 到倒数第一个元素不包含 end print(words[1:-1]) # [b, c, d] # 负数 start 正数 end取倒数第 3 个元素到索引 3不包含 end print(words[-3:4]) # [c, d] # 负数 start 负数 end取倒数第 2 个元素到倒数第 1 个元素不包含 end print(words[-2:-1]) # [d]表示获取由索引位置0元素开始到-1元素之前的所有元素。注意当step为正时start需小于等于end否则返回空列表当step为负时start需大于等于end。5列表元素也可以是列表每个元素也是一个列表使用num[0]表示取到的第一个元素值对应的是一个列表。使用num[0][0] 表示取到第一个元素列表的第一个值使用print num[2][1] 表示取到第三个列表的第二个元素值。4. 元组定义有序、不可变的集合用圆括号()表示常用于保存不可修改的数据。1元组的创建语法元组名 元素 1 元素 2 …元组是写保护的一旦创建不能修改2元组的操作与列表的取值操作完全相同不可修改但可删除语法 del 元组名元组和列表可以互相转换操作元组转换为列表语法list (列表名)num (1,2,3) listNum list(num) #转换为列表 print (listNum) [1,2,3] listNum[0]4 #修改列表 print (listNum) [4,2,3] print (type(num)) #输出元组类型 class tuple print (type(listNum)) #输出列表类型 class list列表转换元组语法tuple(列表名)num [1,2,3] tupleNum tuple(num) print (type(num)) class list print (type(tupleNum)) class tuple5. 字典定义无序的键值对key-value集合用花括号{}表示键必须唯一且不可变通常为字符串、数字或元组值可以是任意类型。1字典的创建**语法**字典名 {键1值1键2值2…}mobile {Tom:1111Alice:2222,Bob:3333} print (mobile) {Tom:1111Alice:2222,Bob:3333 } print (type(mobile)) class dict2字典的取值操作通过键获取值和元组与列表不同。注意键是唯一的而不同的键的值却可以相同当定义多个键相同时字典中只会保留最后一个定义的键值对3字典的添加、修改、删除操作添加 / 修改键值对注意字典值对的键名是必须区分大小写若键不存在视为添加新键值对若键存在视为修改值。person[job] engineer # 添加新键值对 person[age] 31 # 修改已有键的值删除键值对del 字典[key]删除指定键键不存在时抛出KeyError。pop(key, defaultNone)删除并返回指定键的值可指定默认值避免报错。popitem()随机删除并返回一个键值对Python 3.7 按插入顺序删除最后一个。clear()清空字典所有键值对。del person[hobbies] # 删除 hobbies 键 age person.pop(age) # 删除 age 键并返回值 31 last_item person.popitem() # 删除最后一个键值对如 (job, engineer) person.clear() # 字典变为空 {}4字典的常见问题字典不能使用“”运算符执行连接操作。以上得出结论使用“”运算符会报错《网络安全从零到精通全套学习大礼包》96节从入门到精通的全套视频教程免费领取如果你也想通过学网络安全技术去帮助就业和转行我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。网络安全学习路线图想要学习 网络安全作为新手一定要先按照路线图学习方向不对努力白费。对于从来没有接触过网络安全的同学我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线大家跟着这个路线图学习准没错。配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取irect/6d41d41d77204bfc9459b7a3d079371f.png)配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取