码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 先注释,后代码

  • 相关阅读:
    LeetCode209长度最小子数组
    Nginx服务器安装SSL证书教程
    发现你看不到的物体!南开&武大&ETH提出用于伪装目标检测SINet,代码已开源!...
    Day45 力扣动态规划 : 1143.最长公共子序列 |1035.不相交的线 | 53. 最大子序和
    Android Studio CMake 中的 aux_source_directory 有什么作用?
    【特征选择】基于教与学算法实现二进制特征选择问题附matlab代码
    机器学习---构建和训练一个简单的二分类神经网络模型并对结果进行可视化
    什么是spring mvc 模式
    汪源:数据分析热词迭出,“三个统一”值得关注
    大学生HTML作业节日网页 HTML作业节日文化网页期末作业 html+css+js节日网页 HTML学生节日介绍 HTML学生作业网页视频
  • 原文地址:https://blog.csdn.net/weixin_44596902/article/details/127722112
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号