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
常见以下误区