侧边栏壁纸
博主头像
路小飞博主等级

行动起来,活在当下

  • 累计撰写 72 篇文章
  • 累计创建 12 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

1.2 Python 基本概念和相关规范

路小飞
2025-06-16 / 0 评论 / 0 点赞 / 17 阅读 / 10319 字

1.2.1 Python 编码

在 Python 中,# -*- coding: utf-8 -*- 用于声明文件编码为 UTF-8,确保含中文等非 ASCII 字符的代码正常运行。

  • Python 3:默认 UTF-8,可省略,但建议添加避免跨平台问题。
  • Python 2:默认 ASCII,必须添加,否则含非 ASCII 字符(例如中文的代码)会报错。
  • 位置:首行或第二行(若首行是 Shebang)。
# -*- coding: utf-8 -*-  # Emacs 风格
# coding: utf-8         # 简化写法
# vim: set fileencoding=utf-8 :  # Vim 风格

1.2.2 Python 注释

1. 注释的用途
  • 注释可用于解释 Python 代码
  • 注释可用于提高代码的可读性
  • 在调试代码时,可以使用注释来阻止执行
  • 提供函数、类、模块的文档说明
2. 单行注释
  • 使用#符号开头
  • 可以放在代码行的末尾
  • 不会占用内存
# 这是一个单行注释
print("Hello")

print("Hello") # 这也是一个单行注释

# 比较重要的注释段, 使用多个等号隔开, 可以更加醒目, 突出重要性
# =====================================
# 此处禁止修改 !!!
# =====================================

说明:也并非所有 #开头的都是无用代码,比如

#!/usr/bin/env python3     # 声明解释器, 参考shell
# -*- coding: utf-8 -*-    # 编码声明
3. 多行注释
  • 使用三引号('''"""
  • 可以跨越多行
  • 常用于文档字符串(Docstring)
"""
这是多行注释
可以包含多行内容
用于详细说明代码功能
"""
4. 最佳实践
  • 保持注释简洁明了
  • 文档注释不是越长越好, 通常一两句话能把情况说清楚即可
  • 遵循PEP 257文档字符串规范
  • 注释应该与代码保持相同的缩进级别
5. IDE支持
  • 大多数IDE支持注释的自动格式化
  • 支持文档字符串的自动生成
  • 提供注释的语法高亮
  • 支持注释的折叠功能

1.2.3 Python 缩进

1 基本规则

在 Python 中,缩进不仅仅是代码风格问题,更是代码块界定的方式,替代其他语言的{}

  • 同一代码块内的所有语句必须保持相同缩进量
  • 严格禁止混用空格和 Tab(多数编辑器支持自动转换)
  • PEP 8 推荐:使用 4 个空格作为标准缩进单位
  • 控制结构(if/for/while)、函数 / 类定义后需使用冒号 : 开启缩进块
def example_function():
    if True:
        print("这是第一级缩进")
        if True:
            print("这是第二级缩进")
    print("这是第一级缩进")
2. 常见错误
  • 缩进不一致会导致IndentationError
  • 混用空格和制表符会导致TabError
  • 缩进过多或过少都会导致语法错误
3. 最佳实践
  • 始终使用4个空格进行缩进
  • 在编辑器中设置自动将Tab转换为空格
  • 保持一致的缩进风格
  • 使用编辑器的自动缩进功能

1.2.4 Python 命名

Python 命名是,要避开关键字。

元素命名风格示例
模块小写 + 下划线http_client.py
驼峰式class HttpClient
函数 / 方法小写 + 下划线get_response()
变量小写 + 下划线request_data
常量全大写 + 下划线MAX_CONNECTIONS
1. 模块

模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词,且数量不多的情况)

# 正确的模块名
import decoder
import html_parser

# 不推荐的模块名
import Decoder
2. 类名

类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头

class Farm():
    pass

class AnimalFarm(Farm):
    pass

class _PrivateFarm(Farm):
    pass

将相关的类和顶级函数放在同一个模块里,不像Java, 没必要限制一个类一个模块.

3. 函数

函数名一律小写,如有多个单词,用下划线隔开

def run():
    pass

def run_with_env():
    pass

私有函数在函数前加一个下划线_

class Person():

    def _private_func():
        pass
4. 变量名

变量名尽量小写, 如有多个单词,用下划线隔开

if __name__ == '__main__':
    count = 0
    school_name = ''
5. 常量

常量采用全大写,如有多个单词,使用下划线隔开

MAX_OVERFLOW = 100

Class FooBar:

    def foo_bar(self, print_):
        print(print_)

1.2.5 Python 关键字

在 Python 中,关键字(Keywords) 是语言内置的特殊标识符,用于定义语法结构和控制程序流程。这些词具有特殊含义,不能用作变量名、函数名或类名。以下是 Python 3.10 版本的 35 个关键字 及其核心用途分类:

可以通过keyword库列出当前版本下的所有关键字:

#!/usr/bin/env python3     # 声明解释器
# -*- coding: utf-8 -*-    # 编码声明

import keyword
print(keyword.kwlist)  # 输出所有关键字
print(keyword.iskeyword("if"))  # 检查if是否为关键字

# 输出关键字个数
all_keywords = keyword.kwlist
print(f"Python 关键字共有 {len(all_keywords)} 个")  

以下是根据关键字分类整理的表格:

分类关键字列表
布尔值相关True(表示真)、False(表示假)、None(表示空值)
逻辑运算符and(逻辑与)、or(逻辑或)、not(逻辑非)
条件控制相关if(如果)、elif(否则如果)、else(否则)
循环控制相关for(for 循环)、while(while 循环)、break(跳出循环)、continue(继续下一次循环)
函数定义相关def(定义函数)、return(返回函数值)、yield(生成器函数返回值)、lambda(定义匿名函数)
类定义相关class(定义类)
异常处理相关try(尝试执行)、except(捕获异常)、finally(最终执行)、raise(抛出异常)、assert(断言)
模块导入相关import(导入模块)、from(从模块导入)、as(给导入的模块或对象起别名)
变量作用域相关global(声明全局变量)、nonlocal(声明非局部变量)
其他操作符in(判断是否在序列中)、is(判断是否是同一个对象)、del(删除对象)、pass(空操作,占位符)
异步编程相关async(定义异步函数)、await(等待异步操作完成)
上下文管理相关with(上下文管理器)

1.2.6 Python 文件结构

#!/usr/bin/env python3     # 声明解释器
# -*- coding: utf-8 -*-    # 编码声明
# 注释信息,比如开发者、联系方式、作用

代码块

示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# author:lxf
"""
文件功能:简单的计算器程序
支持加减乘除基本运算
"""

# 常量定义
VERSION = "1.0.0"
SUPPORTED_OPERATIONS = ["+", "-", "*", "/"]

def calculate(num1: float, num2: float, operator: str) -> float:
    """执行基本数学运算"""
    if operator not in SUPPORTED_OPERATIONS:
        raise ValueError(f"不支持的运算符: {operator}")
    
    if operator == "+":
        return num1 + num2
    elif operator == "-":
        return num1 - num2
    elif operator == "*":
        return num1 * num2
    elif operator == "/":
        if num2 == 0:
            raise ValueError("除数不能为零")
        return num1 / num2
    else:
        raise ValueError("未知错误")

class Calculator:
    """简单的计算器类,记录历史运算"""
    
    def __init__(self):
        self.history = []
    
    def calculate(self, num1: float, num2: float, operator: str) -> float:
        result = calculate(num1, num2, operator)
        expr = f"{num1} {operator} {num2} = {result}"
        self.history.append(expr)
        return result
    
    def show_history(self) -> None:
        print("运算历史:")
        for i, expr in enumerate(self.history, 1):
            print(f"{i}. {expr}")

def get_user_input() -> tuple[float, str, float]:
    """获取用户输入的数字和运算符"""
    while True:
        try:
            num1 = float(input("\n请输入第一个数字 (输入q退出): "))
            operator = input("请输入运算符: ").strip()
            num2 = float(input("请输入第二个数字: "))
            return num1, operator, num2
        except ValueError as e:
            print(f"输入错误: {e}")

def main() -> None:
    """计算器主程序"""
    calc = Calculator()
    
    print(f"欢迎使用计算器 v{VERSION}")
    print("支持的运算符:", ", ".join(SUPPORTED_OPERATIONS))
    
    while True:
        try:
            # 获取用户输入
            user_input = get_user_input()
            num1, operator, num2 = user_input
            
            # 执行计算
            result = calc.calculate(num1, num2, operator)
            print(f"计算结果: {result}")
            
            # 显示历史
            show_history = input("是否查看历史记录? (y/n): ").strip().lower()
            if show_history == "y":
                calc.show_history()
                
        except ValueError as e:
            print(f"错误: {e}")
        except KeyboardInterrupt:
            print("\n程序已退出")
            break

if __name__ == "__main__":
    main()  # 调用主函数

1.2.7 Python 执行方式

Python项目的三种主要执行方式

1. 交互式执行(Interactive Mode)
  • 直接在Python解释器中执行代码
  • 特点:适合快速测试和调试小段代码,可以立即看到执行结果,适合学习和实验
python
>>> print("Hello World")
2. 脚本文件执行(Script Mode)
  • 通过.py文件执行
  • 特点:适合小型到中型项目,代码可以保存和重用,便于版本控制
python script.py
3. 模块化执行(Module Mode)
  • 将代码组织成包和模块的形式
  • 特点:适合大型项目,支持代码复用和模块化,便于维护和扩展,可以包含多个文件,有清晰的目录结构
# python -m package_name.module_name
python -m http.server 8000
4. Web框架执行(Web Framework Mode)
  • 通过 Web 框架(如 FastAPI、Flask、Django 等)运行项目
  • 特点:适合 Web 应用开发,支持 HTTP 请求处理,提供完整的 Web 开发功能,便于构建 RESTful API
# 使用 uvicorn 运行 FastAPI 应用
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

# 使用 gunicorn 运行 Flask 应用
gunicorn -w 4 -b 0.0.0.0:8000 app:app

# 使用 Django 开发服务器
python manage.py runserver 0.0.0.0:8000

0

评论区