python适用于哪些芯片_五年Python三大秘诀!日常生活不可或缺的秘密武器
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Ber_thaw99 于 2020-12-28 14:07 编辑' P& t5 n# [5 J) Y& y1 b
4 T3 K: \1 u5 k3 t& }% j
# P' e6 E, D3 q0 s5 w! @3 ?" ^
3 Q6 e6 A5 ^8 I9 c8 o4 [% D$ L$ t* n
" r6 K5 _; W' v1 H- I% W; E3 d) A8 a, i' q8 ^
全文共2136字,预计学习时长9分钟
* m1 a O$ r/ Z* K+ ^& i& `+ @9 X) u* ?% v( M9 s( g8 `. n
图源:unsplash
5 j6 V* `' L& y. T7 `3 v大浪淘沙沉者为金。笔者编写Python代码已经5年多了,经历这么久,工具集没有变大,反而越来越小。工具不在多,好用就行。这三种方法笔者已经坚持使用了很长时间,和其他方法不同的是,使用它们的频率只增不减。你值得拥有!秘密武器#1:快速编码,少用Kite谷歌. J i- B- v, y/ y7 y( y, @0 A大多数代码编辑器都具有类似这样的自动填充功能,...使用某种语言(库)文档来表明函数名和参数:. [+ _5 T; [# C, N5 W
' u) X8 `9 [7 l$ w' t9 U这不难,但如果编辑器可以浏览几年的GitHub数据,并且不仅仅能自动填充函数名称,还能完成整行代码呢?这仅是第一个使用Kite的理由。# v2 C; m/ i8 _' z5 ^原因 1:代码行填充7 E& I6 _( g% rKite访问代码库和各个变量、常用的在线参数名称以及文档后,会输出优质的语境建议:
图源:Kite docs
3 w+ `. _: V) }. d/ O+ \1 I上图示例展示了Kite如何能预测编码者需要使用的变量,即使它们一般被命名为(如b),或更普遍的名字(如x或y)。& @" y! U" g% w4 o6 ?Kite创始人兼首席执行官Adam Smith说:“我们在Github 上已经用了50多年的时间来对所有代码进行语义索引,构建统计类型推理,以及深度使用此语义信息的丰富统计模型。”M) P, x7 P1 {" d# i# H原因 2:在本地私密运行3 R2 }6 a3 A) L0 O( d2 ?( j最重要的是,它在本地运行,因此可以快速获得提示,离线也能工作,并且代码不会发送到云端。( p4 N, \: G Y4 f对于网络情况异常和在闭信源代码库工作的人来说,这一点非常重要。原因 3:文档编程助手
* S7 W5 z( l, ~6 ~) o) z6 q7 x! j
如果你从来没听过"RTFM"这个词,那可能因为没有在第一代开发者身边工作过。6 c* u( c) ]- h4 E4 S向高级开发人员讨教是很有必要的,甚至去StackOveRFlow查找答案之前阅读文档。Kite Copilot让文档变得十分简单,其与编辑器同时运行,实时显示文档中光标掠过的任何对象/函数等。% Z9 o/ k' h, j7 z! \结果, N- c+ i! H& N. A8 n笔者使用Kite多年,它改进得也越来越好。其拥有超过1,700万美元的投资,不会轻易倒闭,而且它的工具是完全免费的。你只需要给编辑器下载Kite插件,或下载copilot(编码助手),就能安装插件。. k9 u2 N: x2 _, v4 @/ D秘密武器#2:用Mypy检查代码8 k- R; O2 D) N& K! X编码Python 是动态的,简单解释就是:编码者可以随时将任何变量变为任何数据类型(字符串、整数等)。$ c" i# K; c9 k
$ w, w$ D$ ]1 f- q1 ~9 ?. x: m" g6 L; ~4 X. ^; P2 [$ q6 V& \: [# These two variable types aredeclared the exact same way# Python figures out the data type on it s own, dynamically# stringvar_name = "string here"# integervar_name = 12346 i5 S8 W) ~# x9 |- E0 i, e
相对的是静态类型的语言,其中它的变量必须有一个特定的数据类型,并且始终遵循它。/ y# |8 R1 J! H3 C5 f' |! c( B; J& X0 E
: ~ e1 _1 U( x6 T# Many languages require the datatype to be declared too# stringstr var_name = "string here"# integerint var_name = 1234
* N; M, v! t' f" K: ~, L- p动态编码的优点/缺点2 v& Q7 [: h% Q动态编码的优点是,你可以偷懒,并且能减少乱码。但它缺点很多且不小:" ? S# S3 f1 f8 f· 通常在开发周期后期会出现错误· 由于Python不断计算类型,编码效果会降低· 传递代码更不稳定,因为其他人可能不知道其中的变量是哪些或可能成为哪些数据类型· 函数会更不稳定,因为它们的输入和输出可以在没有警告的情况下更改数据类型8 [4 V E* b) ?7 \6 s3 G
图源:unsplash
/ b; p* A; [; m2 E7 ]: j% c1 V+ z! ]+ ?- S7 b0 B3 ?& i5 wPython 中的静态键入1 J6 Z& Q; n7 }2 S7 Z; i6 i打开Mypy,这是一个免费的Python模块,让你能在Python 内部静态编码。发出pip install mypy指令后, 下面就是其使用示例:0 m) f, J3 m6 y) w0 ?+ n) J0 U% k! X- [
3 R# |, F$ z0 L9 F2 j6 i# Declaring a function using normaldynamic typing, without mypydef iter_primes(): # code here# Declaring the samefunction with mypy static typingfrom typing import Iteratordef iter_primes() -> Iterator[int]: # code here
* d; t8 o* W0 b& U- E; D0 A利用mypy 示例,能指定函数返还整数的迭代器。这种简单变化通过强制实施一致输出,使函数更具有预测性。4 q0 ^; z7 v& F, g与仅使用文档不同,其他开发人员只需查看输出的将是什么数据类型,如果不符合该定义,则代码出错。, }9 j% f( C8 t7 e0 g2 _. k1 u' c9 X. Z结果) U1 x# G1 s" a7 ]) A列出静态类型以帮你减轻将来痛苦的所有方法有难度,但mypy文档具有出色的解答常见问题的能力,优缺点都不少。' Y6 }9 l/ p% X3 C# Q6 ~2 D- E. c! F如果你在一个把稳定性放在第一位的代码生产库工作,一定要试试myby。! ?3 a' [# l& e" `+ a2 r秘密武器#3:用Sonarlint快速查找错误,编写更简单的函数6 V1 W& M5 D s/ i. W& H8 c4 N现在每个编辑器都有某种类型的错误检查或内置的"linter",可以用来查看代码,通常无需运行,并能预测可能存在的错误。这就是静态代码分析。
VS代码中的默认 Python Linter
9 }6 s! ^6 Q% K0 y5 r9 m G, ^动态代码分析实际上尝试运行/编译代码的某些部分,以查看其是否正常工作,但它会自动在后台运行。它不是猜测,它事实上知道代码是否会出错,以及确切的错误是什么。% x8 c& O/ {4 Q6 |# B9 \& p, Z2 O5 NSonarLint是动态代码分析中最好的,有超多优点:5 ^8 O% Y0 O0 y) f' n/ q9 ^已注释或未命名的代码4 H2 e$ e4 n5 x& G6 U对于代码库里满满的输出定义、已注释代码,以及未使用的函数,笔者十分愧疚。但正是如此,才会时刻警醒,留下深刻印象,方便查找。+ A/ c% a' Z1 ]* G( h* O不执行命令代码4 o+ n+ D7 e; a' S( o3 y" c( N与未命名的代码略有不同,不执行命令代码将会在编码者创建不可能评估时发出预警。这十分有必要,否则会导致进行几个小时的调试,这是笔者最喜欢的预警之一。- E5 d5 w3 @ k1 Z( D示例:6 g$ w7 i$ u! c% M0 S1 s3 o
" z |# G: h7 G1 E B9 e& w5 [# \7 D0 A5 @5 m, h j4 ]a = Noneif a == None or not a or a: this_will_always_get_called()else: # sonarlint will warn you about thisline never being executed this_will_never_get_called()
# ~3 v4 A! r) I安全风险/ J, ]1 D/ N7 A. R代码库中的巨大数据库将不断实时更新安全风险,能警告使用者所面临的任何已知漏洞风险。: C$ [! q4 J* n, ~安全风险问题是小概率事件,基本不可能给我们留下印象。因此,每个人都应该行动起来持续追踪。SonarLint是一个伟大的开端。
图源:unsplash$ N8 n. A" T( K# [
( h7 |$ v3 Q( \/ M1 [认知复杂性7 v$ g( H/ A+ }) |/ F1 D* w( D这个话题十分有趣,笔者可以针对它写一篇完整的文章。4 `" R% T3 [7 X \+ m6 X' n6 y简单解释就是,有人创建了一个数学公式,这个公式可以对代码的阅读/理解难易程度进行评分。% s" t, j: w, s; q. U6 e/ d- s- ?它非常有用,还易于理解。每次SonarLint要求编码者"降低认知复杂性"时,它都会对编码者的不规范操作简单解释,比如"无法定义,嵌套异常"。3 v; L7 N V1 X! r3 I+ a结果6 Z( S9 M* a. a6 m( [笔者发现这比基础屏蔽和lint练习更有用,编码者也能编写更为人性化的代码。这就是Pythonic!!心动不如行动,赶快用起来吧!: v7 ^* A+ ^9 v/ H( f2 [
8 u/ |. U; \' Z Z
6 w9 O) T( d, P/ o; q) I' c4 R
/ p1 V4 X) D5 n8 }3 H8 {0 Y+ U3 Z7 n6 c8 U
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』
python适用于哪些芯片_五年Python三大秘诀!日常生活不可或缺的秘密武器相关推荐
- python且的表示_五种Python 的转义表示法
1. 为什么要有转义? ASCII 表中一共有 128 个字符.这里面有我们非常熟悉的字母.数字.标点符号,这些都可以从我们的键盘中输出.除此之外,还有一些非常特殊的字符,这些字符,我通常很难用键盘上 ...
- python适用于哪些芯片_用pyusb在Python中开发CY7C68013,利用,PyUSB,进行,芯片,的,上位,机...
目录 前言 尽管现在USB技术飞速发展,USB传输的速度在不断的提高,但是CY7C68013这款芯片在某些低速场景下仍然适用.因此,基于Python开发出其对应的上位机具有一定的现实需求.然而,笔者在 ...
- python源程序执行的方式边编译边执行_五年级Python试题
五年级Python试题 五年级Python试题(含答案) 学校: 班级: 姓名: 考号: 一.选择(10题) 1.下列哪个语句在Python中是非法的? ( ) A.x = y = z = 1 B.x ...
- python参数是什么_最全Python快速入门教程,满满都是干货
Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...
- 学习python最好的书籍_最好的Python书籍
学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...
- python实现数据可视化_使用Matplotib python实现数据可视化
python实现数据可视化 I Feel: 我觉得: In today's digital world data has become as important as air. Machines &a ...
- python求解混合整数规划_如何用python结合cplex求解混合整数规划问题
展开全部 第一步:注册IBM id账号 第二步:下载相关系统的e69da5e6ba9062616964757a686964616f31333363396432CPLEX(windows/linux/m ...
- python数据科学手册_小白入门Python数据科学
前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...
- python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
最新文章
- 新一代图像AI ISP技术
- 《精通Hadoop》:第 1 章 Hadoop 2.X
- SecureCRT 或者 超级终端 始终无法ping通主机
- GCD介绍(一): 基本概念和Dispatch Queue
- Android开发入门解答
- 日行千里,全凭“车”况,为什么我们要升级平台
- c语言int 转bool_C++代码实现逆波兰式_C 语言
- LeetCode MySQL 578. 查询回答率最高的问题
- WPF 图片splashScreen效果
- python报告水印怎么弄_超简单Python安全批量打水印教程!
- c语言内循环和外循环作用是什么,空调内循环和外循环的作用
- 扶贫计算机考试试题,计算机基础知识试题1.doc
- 车载多传感器融合定位方案:GPS +IMU+MM
- Mon Dec 31 00:00:00 CST 2012格式的字符串转时间格式
- halcon获取图像中心点_Halcon学习之六:获取Image图像中Region区域的特征参数
- 四级网络工程师试题九
- redis set设置有效时间问题
- 从零开始学五线谱_从零开始学简谱(快速入门)
- wagon-maven-plugin插件实现自动化构建部署到服务器
- Windows Terminal 配置GIT