python的一些关键字和书写规范

目录

先说关键字:

一、控制流程(和C几乎一样,写法微调)

二、逻辑与布尔(更接近自然语言)

三、函数与类(定义用关键字)

四、模块与包(导入代码)

五、异常处理(C里通常用if-errno)

六、其他实用关键字

七、关键字速查表(初学者需掌握)

八、如何查看所有关键字?

再说书写规范:

一、缩进:Python的"花括号"

二、注释:和C很像,但多了"文档字符串"

三、命名规范:告别驼峰,拥抱下划线

[四、其他常用规范(PEP 8精选)](#四、其他常用规范(PEP 8精选))

五、初学者最容易犯的规范错误

六、如何无痛养成规范?


先说关键字:

按使用场景分类。每个都给了**"C语言对照"**,方便快速对号入座。

一、控制流程(和C几乎一样,写法微调)

Python 作用 C语言对照 python注意
if 条件判断 if 条件不需要括号,后面要加冒号
elif else if 的缩写 else if Python没有elseif,直接写elif
else 否则 else 同样加冒号
for 遍历序列/迭代器 for(;;) 完全不是C的用法,用于for i in range(10)
while 条件循环 while 同样不需要括号,加冒号
break 跳出循环 break 相同
continue 跳过本轮 continue 相同
pass 占位语句 C里用空大括号 {},Python里必须写pass
return 函数返回 return 相同

典型差异

  • C:for(i=0; i<10; i++)

  • Python:for i in range(10):

二、逻辑与布尔(更接近自然语言)

Python 作用 C语言对照 python注意
True 布尔真 1 / true 首字母大写
False 布尔假 0 / false 首字母大写
None 空值/无 NULL 不是0,是独立的对象
and 逻辑与 && 单词形式
or 逻辑或 `
not 逻辑非 ! 单词形式
is 身份比较(是否为同一对象) 指针比较 别和 == 搞混
in 成员检查 无直接对应 if x in list:

初学容易错if( a == True) 通常不如 if a: 简洁,Python会自动判断真值。

三、函数与类(定义用关键字)

Python 作用 C语言对照 python注意
def 定义函数 返回值 函数名() 不需要声明返回类型
class 定义类 struct + 函数指针 完全不同的OOP实现
lambda 匿名函数 函数指针 简单的小函数,初学可选
global 声明使用全局变量 无直接对应 C里变量默认就是全局或局部,Python要显式声明
nonlocal 使用外层(非全局)变量 闭包用,初学可跳过

C程序员易犯

在函数里给全局变量赋值必须写global x,否则Python会认为你在创建局部变量。

四、模块与包(导入代码)

Python 作用 C语言对照 python注意
import 导入模块 #include 导入的是整个模块,不是头文件
from 从模块导入部分 from math import sin
as 别名 typedef 或宏 import numpy as np

思维切换 :C的#include是把头文件内容复制 进来;Python的import加载并执行模块,然后让你通过模块名访问。

五、异常处理(C里通常用if-errno)

Python 作用 C语言对照 python注意
try 尝试执行可能出错的代码 代替C的if(ret<0)
except 捕获异常 可以指定异常类型
finally 无论是否异常都执行 类似C的goto cleanup模式
raise 主动抛出异常 return -1 更结构化
assert 断言,条件假则崩溃 assert() 调试用,生产可关闭

典型模式

复制代码
try:
    f = open('file.txt')
    data = f.read()
except FileNotFoundError:
    print('文件不存在')
finally:
    f.close()

六、其他实用关键字

Python 作用 C语言对照 python注意
with 上下文管理器 自动资源释放,如with open() as f:
del 删除变量/元素 free 删除引用,不是直接释放内存
yield 生成器 初学可暂缓
async/await 异步编程 初学不要碰

with 是C程序员会喜欢的 :不用手动fclose(),比C的defer(GCC扩展)还方便。

七、关键字速查表(初学者需掌握)

必须烂熟于心(20个):
if elif else ​​​​​​​for ​​​​​​​while break ​​​​​​​continue ​​​​​​​pass
def ​​​​​​​return ​​​​​​​import ​​​​​​​from as
True ​​​​​​​False ​​​​​​​None ​​​​​​​and ​​​​​​​or ​​​​​​​not in

稍后掌握(5~8个):
class ​​​​​​​try except ​​​​​​​finally ​​​​​​​raise ​​​​​​​with ​​​​​​​global del

暂时不用碰:
lambda ​​​​​​​yield ​​​​​​​nonlocal ​​​​​​​assert async await

八、如何查看所有关键字?

在Python交互式环境里输入:

复制代码
import keyword
print(keyword.kwlist)

最后提醒一句:Python的关键字不能用作变量名。如果你不小心用了,解释器会直接报语法错误,记住别给变量起名叫classdefin就行。

从C转过来,你可能会觉得"怎么连switch都没有?"------Python的哲学是"一种场景只给一种明显的做法",if-elif-else足够清晰,而且更灵活。慢慢你会习惯的。

再说书写规范:

从C语言到Python,缩进不再是你"为了方便阅读"而加的,而是语法本身。在C里,花括号位置可以按个人喜好;在Python里,缩进错了程序就崩溃。

下面是初学阶段必须遵守的书写规范,不复杂,但必须刻进肌肉记忆。

一、缩进:Python的"花括号"

标准:4个空格,不能用Tab

  • Python强制要求同一代码块内的缩进必须一致

  • 绝对不要混用Tab和空格------这是初学者最常见的致命错误

  • 所有主流编辑器都可以设置:按Tab键时自动插入4个空格

对照案例

C语言(缩进只是风格)

复制代码
if (x > 0) {
    printf("正数");
}

if (x > 0) {
printf("正数");
}
//效果一样

Python(缩进是语法)

复制代码
if x > 0:
    print("正数")   # 这4个空格不能少,不能多,不能是Tab

#如果去掉缩进:
if x > 0:
print("正数")   # ❌ IndentationError

肌肉记忆口诀

写完冒号,换行必缩进;

退回上一级,缩进要归零。

二、注释:和C很像,但多了"文档字符串"

单行注释 ------ #

复制代码
# 这是一个单行注释
x = 5  # 行尾也可以注释,建议前面空两格

和C的//等价,只是符号不同。

多行注释 ------ 用三引号(实际是字符串,但常当注释用)

复制代码
"""
这是一段多行"注释"
其实它是一个字符串,没有被赋值
所以解释器直接忽略------效果和注释一样
常用于文件头、函数说明
"""

C程序员容易混淆 :Python没有/* ... */的多行注释,上面的三引号是文档字符串(docstring),但可以当多行注释用。

文档字符串 ------ 官方推荐的"注释"

写在函数/类/模块的第一行,用三引号:

复制代码
def add(a, b):
    """返回两个数的和。"""
    return a + b

可以通过help(add)查看,是Python自带的文档生成机制。

三、命名规范:告别驼峰,拥抱下划线

类型 规范 示例 C习惯对比
变量名 小写+下划线 user_name, temp_value C常用驼峰或下划线均可,Python社区强制下划线
函数名 小写+下划线 get_data(), set_mode() 同理
常量 全大写+下划线 MAX_SIZE, PI 和C一致
类名 驼峰(首字母大写) UserProfile, TcpServer C中结构体常加_t后缀,Python类用驼峰
"私有"属性 前导单下划线 _internal_flag 约定俗成:不要直接访问
特殊方法 双下划线开头结尾 __init__, __str__ 类似C++的运算符重载

重要:Python没有真正的私有变量,前导下划线是约定,不是强制。从C过来的人会觉得不习惯,但这是Python的哲学------"大家都是成年人"。

四、其他常用规范

行长度

  • 每行不超过79个字符(老式终端标准)

  • 注释/文档字符串不超过72字符

  • 超长可以用括号换行:

    total = (value1 + value2 + value3 +
    value4 + value5)

导入语句

  • 每个import单独一行

  • 标准库 → 第三方库 → 本地模块,中间空一行

    import os
    import sys

    import requests
    from flask import Flask

    from mypackage import mymodule

空行

  • 函数之间:空两行(顶层函数)

  • 类之间:空两行

  • 类内方法:空一行

  • 逻辑段落:适当空一行,和C一样

    def func1():
    pass

    def func2(): # 前面空两行
    pass

    class MyClass:
    def method1(self):
    pass

    复制代码
      def method2(self):   # 前面空一行
          pass

五、初学者最容易犯的规范错误

混用Tab和空格

解决方案:编辑器设置"将Tab转为空格",显示空格符号(VS Code、PyCharm都有此功能)。

if 语句后面忘记冒号

C语言:if (x > 0)

Python:if x > 0: 必须冒号,否则语法错误。

函数内部修改全局变量没加global

这不是规范问题,是语法问题,但初学者总忘。

变量名用驼峰(userName

Python社区会皱眉头,但不报错。建议尽早养成下划线习惯。

六、如何无痛养成规范?

  1. 编辑器装自动格式化工具

    • Black:全自动格式化,你写完保存,它帮你把缩进、空格、换行全整规矩。

    • 安装:pip install black,VS Code中配置保存时自动运行。

    • 对初学者非常友好------不需要记规则,写脏了它帮你擦干净。

  2. 用有语法高亮和错误提示的IDE

    • VS Code + Python插件,缩进错误会直接红色波浪线。
  3. 别在记事本里写Python------那是自找麻烦。

相关推荐
ZHOUPUYU2 小时前
PHP 8.3网关优化:我用JIT将QPS提升300%的真实踩坑录
开发语言·php
寻寻觅觅☆6 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
YJlio7 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
l1t7 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
赶路人儿7 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar1238 小时前
C++使用format
开发语言·c++·算法
山塘小鱼儿8 小时前
本地Ollama+Agent+LangGraph+LangSmith运行
python·langchain·ollama·langgraph·langsimth
码说AI8 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS8 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化