python基础语法:缩进规则

news2025/4/18 21:10:55

Python 的缩进规则是其语法的重要组成部分,它通过缩进来表示代码块的层次结构,而不是像其他语言(如 C 或 Java)那样使用大括号 {}。以下是 Python 缩进规则的详细说明:


1. 缩进的基本规则

  • 代码块的标识:Python 用缩进表示代码块的开始和结束。同一代码块内的语句必须保持相同的缩进量。

  • 冒号 : 的作用:在 ifforwhiledefclass 等语句末尾需要添加冒号 :,表示下一行开始一个缩进的代码块。

  • 缩进单位:可以是空格(推荐)或制表符(Tab),但不能混用。通常建议使用 4 个空格(符合 PEP8 规范)。


2. 缩进的常见场景

示例 1:条件语句(if-else
if x > 0:
    print("正数")  # 属于 if 代码块
else:
    print("非正数")  # 属于 else 代码块
print("结束")      # 不属于任何代码块

示例 2:循环(for/while
for i in range(3):
    print(i)        # 循环体,缩进一级
    if i == 1:
        print("找到1")  # 嵌套在循环中的 if 代码块,缩进两级

示例 3:函数定义(def
def greet(name):
    message = "Hello, " + name  # 函数体,缩进一级
    print(message)
    return message

示例 4:类定义(class
class Dog:
    def bark(self):  # 类方法,缩进一级
        print("Woof!")  # 方法体,缩进两级


3. 缩进的错误类型

错误 1:缺少缩进
if True:
print("会报错")  # IndentationError: expected an indented block

错误 2:缩进量不一致
if x > 0:
    print("正数")
  print("继续检查")  # IndentationError: unexpected indent

错误 3:混用空格和 Tab
if True:
    print("4个空格")  # 使用空格
	print("Tab")      # 使用 Tab,导致 IndentationError


4. 多行语句的缩进

当一行代码过长需要换行时,可以使用以下方式:

方式 1:括号内的隐式换行
result = (x + y
          - z * 2)  # 对齐到括号开头或运算符后

方式 2:反斜杠 \ 显式换行
long_string = "这是一段非常长的字符串,\
需要换行显示。"

方式 3:悬挂缩进(Hanging Indent)
def long_function_name(
        param1, param2,
        param3, param4):
    print("参数分行书写")


5. 特殊情况

  • 空行:空行不影响缩进,但代码块内不能有空行。

  • 单行代码块:简单语句可以写在冒号后,用分号分隔,但不推荐。

  if x > 0: print("正数")


6. 最佳实践(PEP8 建议)

  1. 使用 4 个空格作为每级缩进。

  2. 避免混合空格和 Tab:在编辑器中设置「将 Tab 转换为空格」。

  3. 对齐方式

  • 函数参数、列表、字典等可垂直对齐。

  • 运算符前后换行时,运算符放在行首。


总结

Python 的缩进是强制性的语法规则,直接决定了代码的逻辑结构。遵循一致的缩进风格(如 PEP8)可以提升代码可读性,避免常见的缩进错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2332398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

支付系统设计入门:核心账户体系架构

👉目录 1 账户记账理论 2 账户设计 3 账户性能问题 4 账户核心架构 5 小结 第三方支付作为中立的第三方,截断了用户和商户的资金流,资金先从用户账户转移到第三方支付平台账户,得到双方确认后再从支付平台账户转移到商户账户。 支…

[LevelDB]Block系统内幕解析-元数据块(Meta Block)元数据索引块(MetaIndex Block)索引块(Index Block)

本文内容组织形式 Block的基本信息作用示意图举例说明 源码解析Footer格式写入&读取编码&解码 元数据块(Meta Block)构建&读取 元数据索引块构建&读取 索引块定义构建&读取核心方法-FindShortestSeparator&FindShortSuccessor作…

leetcode:905. 按奇偶排序数组(python3解法)

难度:简单 给你一个整数数组 nums,将 nums 中的的所有偶数元素移动到数组的前面,后跟所有奇数元素。 返回满足此条件的 任一数组 作为答案。 示例 1: 输入:nums [3,1,2,4] 输出:[2,4,3,1] 解释&#xff1a…

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T,其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…

【数据结构】排序算法(下篇·开端)·深剖数据难点

前引:前面我们通过层层学习,了解了Hoare大佬的排序精髓,今天我们学习的东西可能稍微有点难度,因此我们必须学会思想,我很受感慨,借此分享一下:【用1520分钟去调试】,如果我们遇到了任…

山东大学软件学院创新项目实训开发日志(9)之测试前后端连接

在正式开始前后端功能开发前,在队友的帮助下,成功完成了前后端测试连接: 首先在后端编写一个测试相应程序: 然后在前端创建vue 并且在index.js中添加一下元素: 然后进行测试,测试成功: 后续可…

蓝桥杯C++组算法知识点整理 · 考前突击(上)【小白适用】

【背景说明】本文的作者是一名算法竞赛小白,在第一次参加蓝桥杯之前希望整理一下自己会了哪些算法,于是有了本文的诞生。分享在这里也希望与众多学子共勉。如果时间允许的话,这一系列会分为上中下三部分和大家见面,祝大家竞赛顺利…

springboot调用python文件,python文件使用其他dat文件,适配windows和linux,以及docker环境的方案

介绍 后台是用springboot技术,其他同事做的算法是python,现在的需求是springboot调用python,python又需要调用其他的数据文件,比如dat文件,这个文件是app通过蓝牙获取智能戒指数据以后,保存到后台&#xf…

GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析

论文地址:https://arxiv.org/pdf/2407.00906 1. 论文概述 《GSO-YOLO: Global Stability Optimization YOLO for Construction Site Detection》提出了一种针对建筑工地复杂场景优化的目标检测模型。通过融合全局优化模块(GOM)​、稳定捕捉模块(SCM)​和创新的AIoU损失函…

系统思考—提升解决动态性复杂问题能力

感谢合作伙伴的信任推荐! 客户今年的人才发展重点之一,是提升管理者应对动态性、复杂性问题的能力。 在深入交流后,系统思考作为关键能力模块,最终被纳入轮训项目——这不仅是一次培训合作,更是一场共同认知的跃迁&am…

P1162 洛谷 填涂颜色

题目描述 思考 看数据量 30 而且是个二维的,很像走迷宫 直接深搜! 而且这个就是搜连通块 代码 一开始的15分代码,想的很简单,对dfs进行分类,如果是在边界上,就直接递归,不让其赋值&#xff0c…

docker安装nginx,基础命令,目录结构,配置文件结构

Nginx简介 Nginx是一款轻量级的Web服务器(动静分离)/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强. 🔗官网 docker安装Nginx 🐳 一、前提条件 • 已安装 Docker(dock…

用Django和AJAX创建一个待办事项应用

用Django和AJAX创建一个待办事项应用 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 用Django和AJAX创建一个待办事项应用让我们创建一个简单的 Django 项目,其中包含不同类型的 A…

JavaScript:游戏开发的利器

在近年来的科技迅速发展中,JavaScript 已逐渐成为游戏开发领域中最受欢迎的编程语言之一。它的跨平台特性、广泛的社区支持、丰富的库和框架使得开发者能够快速、有效地创建各种类型的游戏。本文将深入探讨 JavaScript 在游戏开发中的优势。 一、跨平台支持 JavaSc…

C语言今天开始了学习

好多年没有弄了,还是捡起来弄下吧 用的vscode 建议大家参考这个配置 c语言vscode配置 c语言这个语言简单,但是今天听到了一个消息说python 不知道怎么debug。人才真多啊

电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化

本文 去除水印实操视频展示电商图片水印处理的困境​影刀 RPA 魔法指令 3.0 强势登场​利用魔法指令3.0两步实现去除水印操作关于影刀RPA 去除水印实操视频展示 我们这里选择了4张小红书里面比较帅气的图片,但凡用过小红书的都知道,小红书右下角是会有小…

CVA6:支持 Linux 的 RISC-V CPU CORE-V

RISC-V 是一种开源的可扩展指令集架构 (ISA),在过去几年中广受欢迎。RISC-V 的主要特性之一是它采用整体架构中性设计,支持浮点运算、加载存储架构、符号扩展加速和多路复用器简化。这使得 RISC-V 成为 FPGA 上软处理器的经济实惠的选择。自 RISC-V ISA …

轻奢宅家|约克VRF带你畅享舒适居家体验

下班回到家最期待什么?当然是一阵阵沁人心脾的舒适感扑面而来啦!      想要从头到脚都舒服自在?答案就在眼前——就是它!约克VRF中央空调!      约克VRF中央空调独特的臻静降噪技术,让空调运行音轻…

uniapp微信小程序图片生成水印

整体思路: 用户通过uni.chooseImage选择图片后,获得图片文件的path和size。通过path调用uni.getImageInfo获取图片信息,也就是图片宽高。图片宽高等比缩放至指定大小,不然手机处理起来非常久,因为手机随便拍拍就很大。…

不用额外下载jar包,idea快速查看使用的组件源码

以nacos为例子,在idea中引入了nacos依赖,就可以查看源码了。 2. idea选择open(不关闭项目直接选择file-open也可以), 在maven的仓库里找到对应的包,打开 2.idea中选择 jar包,选择 add as library 3.这样j…