你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

介绍一些有用的小工具

[复制链接]
gaosmile 发布时间:2020-11-26 19:26
本文将介绍一些有用的小工具,它们能够帮助我们提高工作效率。本文将介绍笔者在近一周发现的三个小工具,写文章以做记录,希望能对大家有所帮助。

微信图片_20201126192523.jpg
本文将介绍的三个小工具如下:
  • 在Sublime Text中支持Python运行;
  • 在Mac电脑的iTerm2中支持查看图片;
  • Python的typing模块介绍。

  详细内容介绍如下。
在Sublime Text中支持Python运行
  在平时工作中,我们通常用PyCharm开发Python工程,也可以用Vim编辑和查看Python脚本。但是,如果我们仅仅想创造一个单独的脚本来实现某些功能,那么用PyCharm会显得大题小做,用Vim又不方便编辑。这时候,我们可以借助文本编辑器,比如Sublime Text,来实现Python脚本的编辑和运行。
  Sublime Text是Mac系统支持的文本编辑器,Notepad++不支持Mac系统。
  如果我们想在Sublime Text中支持Python运行,需要做一些设置。
  打开Sublime Text的Tools,选择Build System中的New Build System...,会出现脚本,我们修改其中的内容如下:
{
    "cmd": ["D:/Anaconda3/python3.7.exe","-u","$file"],
}
微信图片_20201126192526.png

  我们示例的Python脚本为test.py,代码如下:

import numpy as np

matrix = np.array([[0, 1, 2],
                   [2, 4, 5]
                   ])

print(matrix[1, 2])

print("Hello world from Sublime Text.")
点击Tools中的Build或者Ctrl+B运行程序,结果如下:
微信图片_20201126192530.png
  同样,在Windows系统中也可以这样设置,方便又使用。
  至于Notepad++是否有相似的功能,还有待研究。


在Mac系统的iTerm2中支持查看图片
  iTerm2是Mac系统很好用的终端工具,本文不过多介绍iTerm2,而是介绍如何直接在iTerm2中查看图片,这样可以方便我们在终端直接查看图片。
  我们使用的工具为imgcat。
  在iTerm2中新建shell脚本imgcat.sh,里面的内容可以参考网址:https://www.iterm2.com/utilities/imgcat,编辑完文件后保存,并用chmod u+x imgcat.sh赋予执行权限。
  这样就可以直接查看图片了。什么,这么简单?对,就是这么简单!
  在笔者电脑上的效果如下:
微信图片_20201126192533.png


Python中的typing模块介绍
  typing模块是Python中提供类型支持的模块,它的主要作用为:
  • 类型检查,防止运行时出现参数和返回值类型不符合。
  • 作为开发文档附加说明,方便使用者调用时传入和返回参数类型。
  • 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。

简单来说,使用typing模块我们可以对参数的类型做注释并检查,它不会影响程序运行,而这是提醒。总所周知,在Python中调用函数或变量时,不需要对参数或变量进行类型说明,这样虽然方便程序编写,但不利于程序阅读,有了typing模块,可以增加程序的可阅读性,同时也能提升代码的可维护性和健壮性。
  举个简单的例子,我们实现一个函数digits_sum,输入参数为字符串,比如"352",输出该数字上的各个数位上的数字之和,比如10。有了typing模块,我们的代码如类似如下:
from typing import *

# 创建函数
def digits_sum(num:str) -> int:
    digits_arr = map(lambda x: int(x), num)
    return sum(digits_arr)


# 测试
num = "352"
result = digits_sum(num=num)
print(result)
输出结果为10。对上面的程序做点说明,其中第一句中的from typing import *可以不必写,因为str,int都是Python内置的数据类型。函数声明为def digits_sum(num:str) -> int,括号内的num类型为str,箭头后的int表示函数的输出结果数据类型为int。
  我们再给出一个例子。函数dict_multipy,输入为字典,如果key值对应的value的数据类型为float或者int型,则乘以2,否则跳过,那么输出也为字典。程序如下:
from typing import Dict, Any

# 创建函数
def dict_multipy(d: Dict[str, Any]) -> Dict[str, float or int]:
    new_dict = {}
    for k, v in d.items():
        if isinstance(v, (float, int)):
            new_dict[k] = v * 2

    return new_dict


# 测试
d = {"no": "100", "age": 12, "work_year": 3, "name": "JC"}
new_d = dict_multipy(d=d)
print(new_d)
输出结果为{'age': 24, 'work_year': 6}。在函数声明中,d为字典,其key值为str,val为任意类型(Any),输出为字典,key值为str,val值为float或者int。
  当然,我们还可以在typing创建别名或者新的数据类型,以下就是一个例子。更多的使用方法可以参考typing模块的官方网址:https://docs.python.org/zh-cn/3.6/library/typing.html
from typing import List

# 取List[float]别名为Vector
Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]

new_vector = scale(2.0, [1.0, -4.2, 5.4])
  本次分享到此结束,感谢大家阅读~


收藏 评论0 发布时间:2020-11-26 19:26

举报

0个回答

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版