详解Python变量与注释高级用法

目录
  • Python变量与注释高级用法
  • 1.概述
  • 2.变量
    • 2.1.变量解包
    • 2.2.给变量注明类型
    • 2.3.变量命名原则
  • 3.注释
    • 3.1.注释类型
    • 3.2.错误使用注释案例

Python变量与注释高级用法

1.概述

好的变量和注释并非为计算机而写,而是为每个阅读代码的人而写。变量与注释是表达作者思想的基础,他们对代码质量的贡献母庸质疑。

2.变量

2.1.变量解包

1.什么是变量解包

把一个可迭代对象的所有成员,一次性的赋值给多个变量的过程就是变量解包。

2.变量解包语法

# 变量解包
username = ['zhangsan', '18']
name, age = username
print('name:{}, age:{} '.format(name, age))

# 嵌套类型变量解包
username = [1, ['zhangsan', 18]]
number, (name, age) = username
print('number:{}, name:{}, age:{}'.format(number, name, age))

# 匹配模式解包
data = ['zhangsan', 'banana', 'apple', 'orange', 18]
name, *fruits, score = data
print('name:{}, fruits:{}, score:{}'.format(name, fruits, score))

# 切片解包
data = ['zhangsan', 'banana', 'apple', 'orange', 18]
name, fruits, score = data[0], data[1:-1], data[-1]
print('name:{}, fruits:{}, score:{}'.format(name, fruits, score))

# 变量解包用到for循环
for name, age in [('zhangsan', 15), ('lisi', 18)]:
    print('name:{}, age:{}'.format(name, age))

# 单下划线变量名
username = ['zhangsan', 19]
name, _ = username
print(name, _)

2.2.给变量注明类型

1.变量注明类型介绍

python给变量注明类型,与java变量类型不同,python的变量类型只是一种提示功能,不提供任何校验功能。
因此传入的变量类型与校验类型不一致也不会报错。

变量注明类型语法非常简单,在变量名称后面用冒号分隔表名类型即可。

2.变量注明类型示例

# list表示参数为列表类型,int表示里面的成员是整形
def remove_invalid(item: list[int]):
    print(item)
# 传入符合变量类型参数
remove_invalid([1, 2, 3])
# 传入不符合变量类型参数,不影响函数执行结果。
remove_invalid(1)

# 类型注解使用demo
class Duck:
    def __init__(self, color:str):
        self.color = color
    # 为quack方法注明返回值类型为None
    def quack(self) -> None:
        print(f"Hi, I'm a {self.color} duck")

# -> List[Duck]:用typing模块的List对象为函数返回值标注具体类型
def create_random_ducks(number:int) -> List[Duck]:
    # 为变量加上类型声明
    ducks: List[Duck] = []

    for _ in number:
        color = random.choice(['yellow', 'white', 'gray'])
        ducks.append(Duck(color=color))
    return ducks
ducks = create_random_ducks((1,2,3))
for duck in ducks:
    duck.quack()

2.3.变量命名原则

给变量起名主要有两种流派:一是通过大小写界定单词的驼峰命名,例如Java语言。二是通过下划线连接的蛇形命名,例如python语言。

  • 遵循PEP8原则
  • 描述性要强
  • 长度尽量短
  • 变量注明类型
  • 超短命名

1.遵循PEP8原则

PEP8原名《Python Enhacement Proposal #8》译为《8 号 Python 增强规范》为代码编写风格提供了指南,变量命名部分规范如下。

  • 普通变量,使用蛇形命名法,比如max_value
  • 常量,采用全部大写字母,使用下划线连接,比如 MAX_VALUE
  • 仅内部使用变量,在变量前增加下划线前缀,比如 _local_var
  • 变量名称与python关键字冲突时,在变量末尾追加下划线,比如 class_

2.描述性要强

写作过程中一项重要的工作就是为句子斟酌恰当的词语,不同的词语描述性的强弱是不同的。比如”冬天傲骨的梅花“ 就比 ”花“ 描述性要强。为变量命名和词语一样,同样有描述性强弱之分。
下面是描述性强弱不同的变量,对比可以感受到描述性强的变量名称使代码更易读。

# 描述性弱的变量名称:看不出它在描述什么
vlaue = process(s.strip())

# 描述性强的变量名称:从用户输入参数中解析出用户名称,并剔除参数中的空格。
username = extract_username(input_string.strip())

3.长度尽量短

假如一个特别长的重复出现,读者不会觉得它精确,反而是啰嗦难读。在保证描述性清晰前提下,尽量让名字简短易读,通常控制在4个单词内。

4.变量注明类型

虽然python的变量不需要声明类型,但是为了提升可读性,我们可以为变量注明类型。
除了为变量注明类型外,还有约定俗称的变量名称与类型建立匹配关系,下面是一些变量名称和类型匹配的例子。

变量名 含义 说明
is_superuser 是否是超级用户 is 表示是或不是
has_errors 有没有错 hans 表示有或没有
allow_empty 是否允许空值 allow表示是否允许

5.超短命令

在变量命名中有一类名称比较特别,只有一两个字母,通常他们分为两类,一类是大家约定俗称的短名字,另一类是起别名。

约定俗称常用名称

  • 数组索引三剑客 i、j、k
  • 某个整数 n
  • 某个字符串 s
  • 某个异常 e
  • 文件对象 fp

长名称起别名

is_not_normal as l

3.注释

注释不会影响代码的行为,它会影响代码的可读性。

3.1.注释类型

python的注释分为两种,一种是代码内注释,一种是函数、类的注释也称为接口注释。

行内注释

# 使用strip()去掉空格的好处:
# 1.数据库保存数据时占用空间更小
# 2.不必因为用户多打了空格而要求用户重新输入。

username = extract_username(input_string.strip())

接口注释

class Person:
	# 使用三个单引号或三个双引号就是接口注释。
	'''人
	:param name: 姓名
	: param age: 年龄
	: param favrite_color: 最喜欢的颜色
	'''
	def __init__(self, name, age, favrite_color):
		self.name = name
		self.age = age
		self.favrite_color = color

3.2.错误使用注释案例

1.用注释屏蔽代码

在编程中会用注释屏蔽代码,如果这些代码不需要了可以直接删掉,如果需要用到这些代码可以从Git仓库中找到。临时注释掉的大段代码,对于阅读代码的人来说是一种干扰,没有任何意义。

2.用注释复述代码

# 调用strip()去掉空格
input_string = input_string.strip()

上面这样的注释完全是冗余的,因为读者从代码本身就能读到注释里的信息。好的注释应该是这样

# 如果将带有空格的参数传递到后端处理,可能会造成服务奔溃
# 因此使用strip()去掉收尾空格
input_string = input_string.strip()

注释作为代码之外的说明性文字,应该尽量提供那些读者无法从代码里读出的信息,描述代码为什么要这么做,而不是简单复述代码本身。

除了为什么的解释性注释外,还有一种注释也很常见:指引性注释
这种注释不复述代码,而是简明扼要概括代码功能,起到”代码导读“作用。
指引性注释并不提供代码里读不到东西——假如没有注释,耐心读完所有代码也能知道代码做了什么。指引性注释就是降低代码认知的成本,让我们更容易理解代码的意图。

指引性注释示例

# 初始化访问服务的client对象
token = token_service.get_token()
service_client = ServiceClient(token = token)
service_client.ready()

3.弄错接口注释的受众

到此这篇关于Python变量与注释高级用法的文章就介绍到这了,更多相关Python变量与注释内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python脚本,标识符,变量使用,脚本语句,注释,模块引用详解

    目录 一.python中的标志符: 二.Python中变量使用: 1.字符串变量 2.浮点数变量 3.整数变量和bool变量 三.Python中的语句 四.Python中的注释 五.Python中的模块: 1.inport <模块名> 2.from <模块名> import <代码元素> 3.from <模块名> import <代码元素> as <代码元素别名> 总结 一.python中的标志符: 1.给变量取的名字就是标志符 2.

  • 详解python 注释、变量、类型

    1.注释 单行注释,使用#,#号后面的都是注射,例如 #我是单行注释 print("Hello Python world") 多行注释:开始和结束用三个单引号扩起来 ''' 我是多行注释 我是多行注释 我是多行注释 '''print("Hello Python world") 多行注释:开始和结束用三个双引号扩起来 """ 我是多行注释 我是多行注释 我是多行注释 """ print("Hello

  • 详解Python变量与注释高级用法

    目录 Python变量与注释高级用法 1.概述 2.变量 2.1.变量解包 2.2.给变量注明类型 2.3.变量命名原则 3.注释 3.1.注释类型 3.2.错误使用注释案例 Python变量与注释高级用法 1.概述 好的变量和注释并非为计算机而写,而是为每个阅读代码的人而写.变量与注释是表达作者思想的基础,他们对代码质量的贡献母庸质疑. 2.变量 2.1.变量解包 1.什么是变量解包 把一个可迭代对象的所有成员,一次性的赋值给多个变量的过程就是变量解包. 2.变量解包语法 # 变量解包 use

  • 详解python数值与字符串高级用法

    python数值与字符串高级用法 1.概述 这篇是一篇没有尽头的文章,每当过段时间,再次打开就会看到不一样的内容,有新东西在更新啊.是啊,之所以取名为高级用法,就是因为它是连载的,一个个有趣的知识点就像是一个个故事.每读一遍都有新的收获. 2.数值 2.1.美化数值 在定义数值字面量时,如果数字特别长可以通过插入_分隔符来让他变得更易读 # 格式化数值:在定义数值字面量时,如果数字特别长,可以通过插入_分隔符来变得更易读 # 以千为分隔单位,输出结果(num值为:10000) num = 1_0

  • 详解python statistics模块及函数用法

    本节介绍 Python 中的另一个常用模块 -- statistics模块,该模块提供了用于计算数字数据的数理统计量的函数.它包含了很多函数,具体如下表: 名称 描述 mean() 数据的算术平均数("平均数") harmonic_mean() 数据的调和均值 median() 数据的中位数(中间值) median_low() 数据的低中位数 median_high() 数据的高中位数 median_grouped() 分组数据的中位数,即第50个百分点 mode() 离散的或标称的数

  • 详解python变量与数据类型

    这篇文章我们学习 Python 变量与数据类型 变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问.在 Python 中 变量命名规定,必须是大小写英文,数字和 下划线(_)的组合,并且不能用数字开头. 变量命名规则: 变量名只能是字母,数字和下划线的任意组合 变量名第一个字符不能是数字 变量名区分大小写,大小写字母被认为是两个不同的字符 特殊关键字不能命名为变量名 声明变量 Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变

  • 一文详解Python中logging模块的用法

    目录 一.低配logging 1.v1 2.v2 3.v3 二.高配logging 1.配置日志文件 2.使用日志 三.Django日志配置文件 一.低配logging 日志总共分为以下五个级别,这个五个级别自下而上进行匹配 debug-->info-->warning-->error-->critical,默认最低级别为warning级别. 1.v1 import logging logging.debug('调试信息') logging.info('正常信息') logging

  • 详解Vue中watch的高级用法

    假设有如下代码: <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"></p> </div> new Vue({ el: '#root', data: { firstName: 'Dawei', lastName: 'Lou', fullName: '' },

  • 详解Python 协程的详细用法使用和例子

    从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数.可是,在协程中, yield 通常出现在表达式的右边(例如, datum = yield),可以产出值,也可以不产出 -- 如果 yield 关键字后面没有表达式,那么生成器产出 None. 协程可能会从调用方接收数据,不过调用方把数据提供给协程使用的是 .send(datum) 方法,而不是next(-) 函数. ==yield 关键字甚至还可以不接收或传出数据.不管数据如何流动, yield 都是一种流程控制工具,使用

  • 详解Python中openpyxl模块基本用法

    Python操作EXCEL库的简介 1.1 Python官方库操作excel Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库复制和修改Excel文件,这三个库只支持到Excel2003. 1.2 第三方库openpyxl介绍 第三方库openpyxl(可读写excel表),专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易. 注意:如果文字编码是"gb2312" 读取后就会显示乱码,请

  • 详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 def fun(a,b,c): print(a) print(b) print(c) return a fun(11,22,33) #输出:11 #输出:22 #输出:33 指定参数:输入参数时可以不按照顺序输入 def fun(a,b,c): print(a) print(b) print(c) re

  • 详解Python中with语句的用法

    引言 with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ import with_statement 导入后才可以使用),从 2.6 版本开始缺省可用(参考 What's new in Python 2.6? 中 with 语句相关部分介绍).with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. 术

随机推荐