• Python 工匠 第一章 变量与注释


    1.1 基础知识

    1.1.1 变量常见用法

    Python 是一门动态类型的语言,因此无须提前声明变量类型;并且由于其是弱类型语言,即可以更改其变量类型。动态类型语言/弱类型语言

    a = 10 # 不需要提前声明变量类型
    a = "a" # 可以更改其变量类型
    
    • 1
    • 2

    1 变量解包 unpacking

    解包:把一个可迭代对象 Iterable 可迭代对象reference1 可迭代对象reference1的所有成员,一次性赋给多个变量。

    普通解包

    usernames = ["Tom", "Bob"]
    author, reader = usernames
    
    attrs = [1, ["Tom", 1]]
    user_id, (username, score) = attrs
    
    • 1
    • 2
    • 3
    • 4
    • 5

    动态解包

    data = [1, 2, 3, 4, 5, 6, 7]
    a, *b, c = data # b 贪婪地获得尽可能多的元素
    print(a)
    print(b)
    print(c)
    1
    [2, 3, 4, 5, 6]
    7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2 单下划线变量名_

    用于表示无意义的变量

    a, *_, c = [1, 2, 3, 4, 5, 6, 7]
    # 表示只要开头和结尾的元素并分别赋值给a, c
    
    • 1
    • 2

    此外,_ 在python交互式命令行中,表示上一个表达式返回值
    在这里插入图片描述

    1.1.2 给变量注明类型

    docstring

    def example(items):
    	""" 解释example干什么的
    
    	:param items: 解释items是什么
    	:type items: 比如说 一个包含字符串的列表,[string, ...]
    	"""
    	pass
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    推荐官网docstring & doctest 以对其有更深了解

    类型注解

    from typing import List
    def example(items: List[str)):
    	""" 解释example干什么的 """
    	pass
    
    • 1
    • 2
    • 3
    • 4

    python3.9 后 可以直接 list[str] 而不需要 typing.List type-hinting-generics-in-standard-collections

    1.1.3 变量命名原则

    1 遵循 PEP8

    Naming Convertions

    普通变量 蛇形 max_value
    常量 全部大写 MAX_VALUE
    内部变量 下划线前缀 local_var
    与python关键词冲突 下划线后缀 class

    2 描述性要强

    3 要尽量短

    trick: 有时候一个变量名在函数名罩着的情况下,有些东西是可以省略的

    4 要匹配类型

    bool [is_superuser has_errors allow_empty]
    int/float [port age radius] [user_id] [lenght_of_username max_length user_counts]
    不要使用fruits作为int类型变量名,因为可能会和fruits=[‘apple’, ‘banana’]冲突,right?

    5 超短命名

    索引:i, j, k
    整数: n
    字符串:s
    异常: e
    文件对象:fp
    from django.utls.translation import gettext as _

    6 其他

    同一代码段中,不要出现多个相似变量名:user, user1, user2

    1.1.4 注释基础知识

    主要是 # 注释和前文提到的docstring 接口注释

    常见以下误区

    1 用注释屏蔽代码

    2 用注释复述代码

    推荐解释型注释(提供无法从代码中读出的信息)和指引性注释(代码导读,方便更好理解代码)

    3 弄错接口注释的受众

    接口注释描述函数功能以及参数说明等等,而函数自身实现细节可以在具体代码中提出

    1.2 案例故事

    冒泡排序

    1.3 编程建议

    1.3.1 保持变量名字一致性和类型一致性

    1.3.2 变量定义尽量靠近使用(不需要置顶统一声明)

    1.3.3 定义临时变量提升可读性(不要直接翻译业务逻辑)

    1.3.4 同一作用域内不要有太多变量(变量分组,建模为Class)

    但是变量多一般意味着函数做的太多,需要拆分

    1.3.5 与3相对,避免定义不必要变量

    不要为了未来可能出现的变动,牺牲代码此时此刻的可读性

    1.3.6 不用使用locals()

    Explicit is better than implicit

    1.3.7 空行也是“注释”

    1.3.8 先注释,后代码

  • 相关阅读:
    被JAVA内存模型绕晕了?看来看这一篇
    word办公小技巧:方框打勾、上下标、横隔线、排序
    Spring扩展接口(2):BeanDefinitionRegistryPostProcessor
    基于php的物流系统设计与实现
    [机缘参悟-105] :得寸进尺是人的适应环境的体现,一个IT人的体悟
    1-centOS7搭建伪分布式
    短视频特效背景视频去哪找?三大平台助你轻松搞定!
    【GUI软件】小红书关键词搜索结果批量采集
    【一起学Rust】Rust介绍与开发环境搭建
    Java导出带格式的Excel数据到Word表格
  • 原文地址:https://blog.csdn.net/weixin_44596902/article/details/127722112