Python行结构
(逻辑行、物理行、显式拼接行、隐式拼接行、空白行)
本文目录:
零、时光宝盒
一、Python PEP8 编码行规范
1.1、Maximum Line Length 行的最大长度
1.2、在二元运算符之前应该换行吗?
二、Python行结构
2.1、物理行
2.2、逻辑行
2.3、显式拼接行
2.4、隐式拼接行
2.5、Blank Lines 空行、空白行
2.6、其他
零、时光宝盒
最近听到一首歌《有风无风皆自由》,从小到大,我都是平凡的,不争不夺,悄悄行走于人海中,做个谁都不会留意的某某某。可命运偏偏。。。当这一切浮华散去,我还是原来的那个我,与世无争,存在过,有似乎不存在。怀念那些曾经一同走在路上的朋友,不知有多少正在疗伤,你们还好吗?
有风无风皆自由
溪流会转弯,麦子会低头。大雁来了走,又一个春秋。岁月有褶皱,故事在生锈。
头顶的星空,永不朽。
脚下的风霜,融化在白昼。李白的月光,照耀着九州。童年的纸船,中年的渡口。
人海里漂流,不回头。
心若无所求,有风无风皆自由。
向往着远方,寻找理想的温柔。
平凡日子中,不争不夺不忧愁。
行走人海中,做个某某某。
心若无所求,有风无风皆自由
把晚风做酒,陪我越生活荒丘
等一场大雨,洗礼浑浊的眼眸。
雨过天晴后,一路花开一路走。
脚下的风霜,融化在白昼。李白的月光,照耀着九州。童年的纸船,中年的渡口。
人海里漂流,不回头。
逆境清醒
2024.9.03
一、Python PEP8 编码行规范
Python PEP8 编码规范中对行的描述如下:
1.1、Maximum Line Length 行的最大长度
所有行限制的最大字符数为79。
对于结构限制较少的长文本块(文档字符或者注释),行长度应限制在72个字符以内。
限制编辑器窗口宽度可以使多个文件并行打开,并且在使用在相邻列中显示两个版本的代码审查工具时效果良好。
大多数工具中的默认包装会破坏代码的视觉结构,使其更难理解。选择这些限制是为了避免在窗口宽度设置为80的编辑器中换行,即使该工具在换行时在最后一列中放置了标记字形。一些基于网络的工具可能根本不提供动态换行。
一些团队更喜欢较长的行宽。如果代码主要由一个团队维护,那这个问题就能达成一致,可以将行长限制增加到99个字符,前提是注释和文档字符串仍然以72个字符包装折行。
Python标准库是保守的,要求将行限制在79个字符以内(文档字符串/注释限制在72个字符以内)。
换行的首选方式是在括号、方括号和大括号内使用Python的隐含行继续。通过将表达式括在括号中,可以将长串拆分为多行。这些应该优先使用,而不是使用反斜杠来继续行。
反斜杠有时可能仍然合适。例如,在Python 3.10之前,long,multiple with语句不能使用隐式延续,因此在这种情况下反斜杠是可以接受的:
with open('/path/to/some/file/you/want/to/read') as file_1, \
open('/path/to/some/file/being/written', 'w') as file_2:
file_2.write(file_1.read())
(有关此类多行语句缩进的进一步想法,请参阅关于多行if语句的讨论。)
python 代码中的缩进规则(史上最全最详细解释)https://blog.csdn.net/weixin_69553582/article/details/141863803
另一种情况是断言语句。
确保适当地缩进连续的行。
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
1.2、在二元运算符之前应该换行吗?
Should a line break before or after a binary operator? 在二元运算符之前应该换行吗?
几十年来,推荐的风格是在二元运算符之后中断。但这会以两种方式损害可读性:运算符往往分散在屏幕上的不同列中,每个运算符都会从其操作数移动到前一行。
在这里,必须注意做额外的工作来分辨哪些项目被添加,哪些项目被删除:
# Wrong:
#错误:
# operators sit far away from their operands
#运算符远离操作数
income = (gross_wages +
taxable_interest +
(dividends - qualified_dividends) -
ira_deduction -
student_loan_interest)
为了解决这个可读性问题,数学家和他们的出版商遵循相反的惯例。Donald Knuth在他的《计算机与排版》系列中解释了传统规则:“虽然段落中的公式总是在二进制操作和关系之后中断,但显示的公式总是会在二进制操作之前中断”[3]。
遵循数学的传统通常会产生更易读的代码:
# Correct:
#正确:
# easy to match operators with operands
#易于将运算符与操作数匹配
income = (gross_wages
+ taxable_interest
+ (dividends - qualified_dividends)
- ira_deduction
- student_loan_interest)
在Python代码中,允许在二元运算符之前或之后中断,只要本地的约定是一致的。对于新代码,建议使用Knuth的样式。
二、Python行结构
Python 程序可以拆分为多个 逻辑行。
2.1、物理行
物理行:
物理行是一序列字符,由行尾序列终止。代码编辑器中显示的代码,每一行内容是一个物理行。包括空行。
源文件和字符串可使用任意标准平台行终止序列 - Unix ASCII 字符 LF (换行)、 Windows ASCII 字符序列 CR LF (回车换行)、或老式 Macintosh ASCII 字符 CR (回车)。
不管在哪个平台,这些形式均可等价使用。输入结束也可以用作最终物理行的隐式终止符。
嵌入 Python 时,传入 Python API 的源码字符串应使用 C 标准惯例换行符(\n,代表 ASCII 字符 LF, 行终止符)。
以下代码代码一共有7行,即有7个物理行。
#!/usr/bin/python
njstr1="人的一生会遇到两个人,"
njstr2="一个惊艳了时光,"
njstr3="一个温柔了岁月。"
print(njstr1,njstr2,njstr3)
代码运行后输出结果:
人的一生会遇到两个人, 一个惊艳了时光, 一个温柔了岁月。
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
2.2、逻辑行
NEWLINE 形符表示结束逻辑行。语句不能超出逻辑行的边界,除非句法支持 NEWLINE (例如,复合语句中的多行子语句)。根据显式或隐式 行拼接 规则,一个或多个 物理行 可组成逻辑行。
代码:
jiang={
"njstr1":"人的一生会遇到两个人",
"njstr2":"一个惊艳了时光",
"njstr3":"一个温柔了岁月"}
print(jiang)
无论是写成怎样的缩进格式,例如下图:
逻辑行:这个语句,虽然书写为多行,但解释器进行解释时,只当成一个语句处理,即一个逻辑行。所以,无论分开的其他行怎么缩进,都不会影响程序运行结果。
最后代码运行后输出的结果都是同样的:
{'njstr1': '人的一生会遇到两个人', 'njstr2': '一个惊艳了时光', 'njstr3': '一个温柔了岁月'}
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
2.3、显式拼接行
两个及两个以上的物理行可用反斜杠(\)拼接为一个逻辑行,
规则如下:
以不在字符串或注释内的反斜杠结尾时,物理行将与下一行拼接成一个逻辑行,并删除反斜杠及其后的换行符。
例如:
if 1900 < year < 2100 and 1 <= month <= 12 \
and 1 <= day <= 31 and 0 <= hour < 24 \
and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date
return 1
反斜杠用法注意事项:
以反斜杠结尾的行,不能加注释;
反斜杠也不能拼接注释。
除字符串字面值外,反斜杠不能拼接形符(如,除字符串字面值外,不能用反斜杠把形符切分至两个物理行)。
反斜杠只能在代码的字符串字面值里,在其他任何位置都是非法的。
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
2.4、隐式拼接行
圆括号、方括号、花括号内的表达式可以分成多个物理行,不必使用反斜杠。
month_names = ['Januari', 'Februari', 'Maart', # These are the
'April', 'Mei', 'Juni', # Dutch names
'Juli', 'Augustus', 'September', # for the months
'Oktober', 'November', 'December'] # of the year
隐式行拼接可含注释;
后续行的缩进并不重要;
还支持空的后续行。
隐式拼接行之间没有 NEWLINE 形符。
三引号字符串支持隐式拼接行,但不支持注释。
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
2.5、Blank Lines 空行、空白行
Blank Lines 空行
用两个空行括住顶级函数和类定义。即:顶层函数和类的定义,前后用两个空行隔开。
类中的方法定义用一个空行隔开。
可以(谨慎地)使用额外的空白行来分隔相关功能组。
在一堆相关的单行代码(例如一组虚拟实现)之间可以省略空行。
在函数中用空行来表示逻辑部分(谨慎使用)。
Python接受control-L(即^L)形式的换页符(提要字符)作为空格;许多工具将这些字符视为页面分隔符,因此您可以使用它们来分隔文件相关部分的页面。请注意,一些编辑器和基于web的代码查看器可能无法将control-L识别为表单提要,并将在其位置显示另一个字形。
只包含空格符、制表符、换页符、注释的逻辑行会被忽略(即不生成 NEWLINE 形符)。
交互模式输入语句时,空白行的处理方式可能因读取 - 求值 - 打印循环(REPL)的具体实现方式而不同。
标准交互模式解释器中,完全空白的逻辑行(即连空格或注释都没有)将结束多行复合语句。
✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆✨❆
2.6、其他
行首含换页符时,缩进计算将忽略该换页符。
换页符在行首空白符内其他位置的效果未定义(例如,可能导致空格计数重置为零)。
连续行的缩进层级以堆栈形式生成 INDENT 和 DEDENT 形符,说明如下:
读取文件第一行前,先向栈推入一个零值,该零值不会被移除。
推入栈的层级值从底至顶持续增加。
每个逻辑行开头的行缩进层级将与栈顶行比较。如果相等,则不做处理。如果新行层级较高,则会被推入栈顶,并生成一个 INDENT 形符。如果新行层级较低,则 应当 是栈中的层级数值之一;栈中高于该层级的所有数值都将被移除,每移除一级数值生成一个 DEDENT 形符。文件末尾,栈中剩余的每个大于零的数值生成一个 DEDENT 形符。
python使用缩进来表示代码块 。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
当语句的条件部分足够长,需要跨多行书写时,值得注意的是,两个字符的关键字(即 )加上一个空格和一个左括号的组合会为多行条件语句的后续行创建一个自然的 4 个空格缩进。这可能会与嵌套在语句内的缩进代码套件产生视觉冲突,该代码也会自然缩进到 4 个空格。此 PEP 对于如何(或是否)进一步在视觉上将此类条件行与语句内的嵌套套件区分开来,没有明确立场。在这种情况下,可接受的选项包括但不限于:ifififif
推荐阅读:
从0开始学python,教程总目录(更新中ing。。。)https://blog.csdn.net/weixin_69553582/article/details/141649919自言自语的独角戏小丑“讲”的“演讲”——留言给那些曾经一起同行疗伤的朋友https://blog.csdn.net/weixin_69553582/article/details/1413008932023年上半年信息系统项目管理师真题与答案解释https://blog.csdn.net/weixin_69553582/article/details/137467224[你找到牵手一辈子的人了吗?] 七夕情人节特辑https://blog.csdn.net/weixin_69553582/article/details/132425595深度学习框架TensorFlowhttps://blog.csdn.net/weixin_69553582/category_12360543.html
| | |
给照片换底色(python+opencv) | 猫十二分类 | 基于大模型的虚拟数字人__虚拟主播实例 |
| | |
计算机视觉__基本图像操作(显示、读取、保存) | 直方图(颜色直方图、灰度直方图) | 直方图均衡化(调节图像亮度、对比度) |
| | |
语音识别实战(python代码)(一) | 人工智能基础篇 | 计算机视觉基础__图像特征 |
| ||
matplotlib 自带绘图样式效果展示速查(28种,全) | ||
| ||
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) | ||
| | |
立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦 | Python 3D可视化(一) | 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud) |
| | |
python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 | 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) | python爱心源代码集锦(18款) |
| | |
Python中Print()函数的用法___实例详解(全,例多) | Python函数方法实例详解全集(更新中...) | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 |
| | |
用代码过中秋,python海龟月饼你要不要尝一口? | python练习题目录 | |
| | |
草莓熊python turtle绘图(风车版)附源代码 | 草莓熊python turtle绘图代码(玫瑰花版)附源代码 | 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 |
| | |
巴斯光年python turtle绘图__附源代码 | 皮卡丘python turtle海龟绘图(电力球版)附源代码 | |
| | |
Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) | 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) | 2024年9月多家权威机构____编程语言排行榜__薪酬状况 |
| | |
手机屏幕坏了____怎么把里面的资料导出(18种方法) | 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向) | 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 |
| ||
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue) | ||
| | |
2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特 | 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套) | SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例) |
| | |
【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码) | HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码) | 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) |
| | |
tomcat11、tomcat10 安装配置(Windows环境)(详细图文) | Tomcat端口配置(详细) | Tomcat 启动闪退问题解决集(八大类详细) |