Python 工匠 第一章 变量与注释

1.1 基础知识

1.1.1 变量常见用法

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

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

1 变量解包 unpacking

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

普通解包

usernames = ["Tom", "Bob"]
author, reader = usernames

attrs = [1, ["Tom", 1]]
user_id, (username, score) = attrs

动态解包

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

2 单下划线变量名_

用于表示无意义的变量

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

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

1.1.2 给变量注明类型

docstring

def example(items):
	""" 解释example干什么的

	:param items: 解释items是什么
	:type items: 比如说 一个包含字符串的列表,[string, ...]
	"""
	pass

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

类型注解

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

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 先注释,后代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值