写代码时记录的小技巧

news2024/12/26 21:11:14

本文是记录自己写代码时候遇到的一些感觉比较有用/有意思的技巧,怕自己忘了记录一下。如果有想要分享的思路/纠正改进的地方欢迎交流。

如何输出结果 (Verbose Trick)

有关类的输出

  1. 如果想在**模型的 forward 中输出相关变量**,但又不希望反复输出影响观看效果,可以在类的私有变量中设定 self.verbose = True,并在首次输出后修改 Self.verbose = False 即可。
  2. 如果想**输出类的信息**,可以通过实现类的\_\_str__ 方法或 \_\_repr__方法,其中
     1. \_\_repr__ 所返回的字符串应该准确、无歧义,并且尽可能表达出如何 用代码创建出这个被打印的对象。
     2. 而\_\_str__ 在 str() 函数被使用,或是在用 print 函数打印一个对象的时候才被调用的,并且它返回的字符串对终端用户更友好。

**\_\_str__ 方法未实现时,会转而调用\_\_repr__方法,因此如果只想实现一个时,可以实现\_\_repr__方法。**

请添加图片描述

  1. 当我们想让模型输出多个东西时,很容易存在记混顺序或是别的什么情况,这时我们可以使用Collection中的具名元组namedtuple来存储记录的属性.

      DiscOutSplit = collections.namedtuple(
          "DiscOutSplit",
          ["d_real", "d_fake",
          "d_real_bit", "d_fake_bit"])
          
      EntropyInfo = collections.namedtuple(
          "EntropyInfo",
          "noisy_out quantized_out nbpp qbpp",
      )
    

    代码中展示了两种定义方法,通过列表或空格分隔的str

格式化输出

  1. Python 3.6 支持了简明的 f 字符串输出,可以支持多行表达式,表达式运算,哈希取值等多种运算。

    1. 直接使用
    print("The {add_a} + {add_b} = {add_out}")
    
    1. 表达式运算
    bags = 3
    apples_in_bag = 12
    print(f'The result of add is {add_a + add_b}')
    
    1. 哈希取值
    user = {'name': 'leafy', 'occupation': 'student'}
    
    print(f"{user['name']} is a {user['occupation']}")
    
    1. 多行表达式
    name = 'leafy'
    occupation = 'student'
    msg = (
        f'Name: {name}\n'
        f'Occupation: {occupation}'
    )
    
    print(msg)
    
    1. 函数调用
     print("The {add_a} + {add_b} = {add(add_a, add_b)}")
    
    1. 实例对象调用(对象所在类必须定义了表达方法 __repr__ 或 __str__)
     class User:
         def __init__(self, name, occupation):
             self.name = name
             self.occupation = occupation
    
         def __repr__(self):
             return f"{self.name} is a {self.occupation}"
    
     u = User('leafy', 'student')
    
     print(f'{u}')
    
    1. 格式化字符串
    for x in range(0, 20, 2):
        print(f'{x:02} {x*x:3} {x*x*x:4}')
    

    请添加图片描述

    # hexadecimal
    print(f"{a:x}")
    
    # octal
    print(f"{a:o}")
    
    # scientific
    print(f"{a:e}")
    
    1. 右对齐
    s1 = 'Fnatic'
    s2 = 'TPA'
    s3 = 'SKT T1'
    s4 = 'SSW'
    
    print(f'{s1:>6}')
    print(f'{s2:>6}')
    print(f'{s3:>6}')
    print(f'{s4:>6}')
    

Fun Fact

切片拆包

例子来自 Fluent Python (“Fluent Python by Luciano Ramalho (O’Reilly). Copyright 2015 Luciano Ramalho, 978-1-491- 94600-8.”)
请添加图片描述

目前就想到这么多,想到了会继续补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle如何删除归档日志文件?

Oracle如何删除归档日志文件? Oracle启用归档日志的状态下,会在指定的归档日志目录生成大量的日志文件,而且这些日志文件默认是不会定期清理。长时间运行下,会占用大量的存储空间,最终可能导致Oracle没有足够的空间维持…

Linux集成环境部署tomcat+Linux

Linux环境部署 tomcat redisTomcat 安装配置Redis安装配置Tomcat 安装配置 下载tomcat安装包,将安装包上传至自己的linux服务器中,将安装包传到linxu环境中的/usr/local/tomcat下,使用tar -xvf 命令解压 2. 进入到bin目录下,给所…

Allegro如何查找和高亮PAD Stack类型操作指导

Allegro如何查找和高亮PAD Stack类型操作指导 Allegro可以在板子上查找并且高亮PAD的类型,查找的范围包括器件的pad,以及过孔的pad,具体操作如下 用Allegro的was performance L模式下,并且勾选Allegro Productivity Toolbox选项 选择Tools-padstack finder 会出现padsta…

数字图像处理 - 图像采样和量化

1、 目标 获取图像的方法有很多种,但最终的目标是一致的:从传感数据生成数字图像。大多数传感器的输出是连续的电压波形,其幅度和空间行为与被感测的物理现象有关。要创建数字图像,我们需要将连续感测数据转换为数字格式。这就需要…

扩散模型的源码学习diffusion_model

1.diffusion_model有几个主要的部分, (1)Unet,主干网络。 (2)GaussianDiffusion,也就是主要的训练策略。 2. 生成一个测试用的tensor来进行实验。 3.进入到高斯模型的内部,发现…

(六) Redis缓存读写策略

一 引言 缓存的引入后极大的提高了服务器的访问速率,但是当持久化数据发生变化时,如何更新缓存成为了研发中不可规避的问题,不同的方案决定缓存的最终的一致性,本文就redis的缓存读写策略,以及其他的缓存读写策略做简要概述 二 Cache Aside Pattern(旁路缓存模式&…

Vue学习:键盘事件

input表单占位符-显示输入先的提示文本-placeholder属性 键盘事件keydown——按下 不需要松手 keyup&#xff1a;按下松手 根据按键编码进行判断 --输出event上有一个属性-keyCode -按键编码--回车13 <!-- 准备容器 --><div idroot> <input type"text&quo…

Docker安装和使用

一&#xff1a;docker安装 链接: https://pan.baidu.com/s/1A1g7rSOMoV4__Me_zJoB3Q?pwd6bqi 提取码: 6bqi 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享。 二&#xff1a;docker使用 1.docker和虚拟机的区别&#xff1a; …

Word文档如何设置成不可编辑的模式?

把Word文档设置成“不可编辑模式”&#xff0c;也就是“限制编辑”&#xff0c;可以防止意外更改文档内容&#xff1b;对于只想给他人读阅&#xff0c;禁止复制和更改的情况&#xff0c;也能起到一定的保护作用。 Word文档里自带设置限制保护的选项&#xff0c;在菜单中选择【…

【Uni-App】uniapp使用uview实现弹出键盘输入密码/验证码功能

目录&#xff08;一&#xff09;效果图&#xff08;二&#xff09;使用组件说明keyboard属性&#xff1a;keyboard事件&#xff1a;&#xff08;五&#xff09;js代码实现&#xff08;一&#xff09;效果图 &#xff08;二&#xff09;使用组件说明 组件使用的是uview组件&…

MATLB|多微电网及分布式能源交易

目录 一、概述 二、数学模型 三、结果可视化 四、Matlab代码实现 一、概述 在人类、工业和电动汽车的能源需求的推动下&#xff0c;全球能源需求预计将在未来几年稳步增长&#xff1b;更准确地说&#xff0c;预计到 2030 年增长将达到 40%。这种需求是由人类日益依赖能源的…

Linux配置网络,增添网络会话,Wget下载,yum仓库配置

配置网络 从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名&#xff0c;该方式可以根据固件、设备 拓扑、设备类型和位置信息分配固定的名字。网络接口的名称的前两个字符为网络类型符号。如: en——表示以太网(Ethernet)、wl表示无线局域网(wlan)、ww表示无…

[附源码]Python计算机毕业设计SSM基于的高校在线办公系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【玩转ChatGPT |OpenAI超级对话模型】手把手带你玩转ChatGPT

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;喜欢编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc…

【深度学习】PyTorch深度学习实践 - Lecture_10_Basic_CNN

文章目录一、CNN基础流程图二、CNN的两个阶段三、卷积的基本知识3.1 单信道的卷积3.2 三信道的卷积3.3 N信道卷积3.4 输入N信道-输出M信道卷积3.5 卷积层的常见参数3.5.1 Padding3.5.2 Stride3.5.3 下采样&#xff08;MaxPooling&#xff09;四、实现一个简单的CNN4.1 网络结构…

【案例教程】气象数值预报WRF-DA资料同化系统理论、运行与变分、混合同化新方法技术

【视频教程】WRF DA资料同化系统理论、运行与与变分、混合同化新方法技术应用https://mp.weixin.qq.com/s?__bizMzAxNzcxMzc5MQ&mid2247518760&idx1&snddbc45296acc595402434b88bc179a27&chksm9be39538ac941c2eabab2492e997827d0e1269de3b229fadee72f1223bbcd…

机器学习实战教程(三):决策树实战篇

一、前言 上篇文章机器学习实战教程&#xff08;二&#xff09;&#xff1a;决策树基础篇之让我们从相亲说起机器学习实战教程&#xff08;二&#xff09;&#xff1a;决策树基础篇_M_Q_T的博客-CSDN博客机器学习实战教程&#xff08;二&#xff09;&#xff1a;决策树基础篇之…

web前端期末大作业 html+css+javascript汽车销售网站 学生网页设计实例 企业网站制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

JQuery高级(回调函数 clearInterval 插件)

回调函数&#xff1a; 定义&#xff1a;回调函数被认为是一种高级函数&#xff0c;一种被作为参数传递给另一个函数的高级函数。回调函数的本质是一种模式(一种解决常见问题的模式)&#xff0c;因此回调函数也被称为回调模式。 简而言之&#xff1a;一个函数在另一个函数中…

Vue3+Vite项目按需自动导入配置及常见问题修复

文章目录一、Vue API自动导入1.1 配置unplugin-auto-import1.2 可能遇到ts,eslint不识别而导入报错的问题1.3 配置src/component目录下的组件自动引入二、按需引入UI组件库&#xff08;antd,element-plus&#xff09;2.1、按需引入element-plus2.2 ant-design-vue 按需引入2.3 …