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三大秘诀!日常生活不可或缺的秘密武器相关推荐

  1. python且的表示_五种Python 的转义表示法

    1. 为什么要有转义? ASCII 表中一共有 128 个字符.这里面有我们非常熟悉的字母.数字.标点符号,这些都可以从我们的键盘中输出.除此之外,还有一些非常特殊的字符,这些字符,我通常很难用键盘上 ...

  2. python适用于哪些芯片_用pyusb在Python中开发CY7C68013,利用,PyUSB,进行,芯片,的,上位,机...

    目录 前言 尽管现在USB技术飞速发展,USB传输的速度在不断的提高,但是CY7C68013这款芯片在某些低速场景下仍然适用.因此,基于Python开发出其对应的上位机具有一定的现实需求.然而,笔者在 ...

  3. python源程序执行的方式边编译边执行_五年级Python试题

    五年级Python试题 五年级Python试题(含答案) 学校: 班级: 姓名: 考号: 一.选择(10题) 1.下列哪个语句在Python中是非法的? ( ) A.x = y = z = 1 B.x ...

  4. python参数是什么_最全Python快速入门教程,满满都是干货

    Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力. Python的语法和动态类型具有其解释性质,使其成为 ...

  5. 学习python最好的书籍_最好的Python书籍

    学习python最好的书籍 Python is an amazing programming language. It can be applied to almost any programming ...

  6. python实现数据可视化_使用Matplotib python实现数据可视化

    python实现数据可视化 I Feel: 我觉得: In today's digital world data has become as important as air. Machines &a ...

  7. python求解混合整数规划_如何用python结合cplex求解混合整数规划问题

    展开全部 第一步:注册IBM id账号 第二步:下载相关系统的e69da5e6ba9062616964757a686964616f31333363396432CPLEX(windows/linux/m ...

  8. python数据科学手册_小白入门Python数据科学

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  9. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

最新文章

  1. 新一代图像AI ISP技术
  2. 《精通Hadoop》:第 1 章 Hadoop 2.X
  3. SecureCRT 或者 超级终端 始终无法ping通主机
  4. GCD介绍(一): 基本概念和Dispatch Queue
  5. Android开发入门解答
  6. 日行千里,全凭“车”况,为什么我们要升级平台
  7. c语言int 转bool_C++代码实现逆波兰式_C 语言
  8. LeetCode MySQL 578. 查询回答率最高的问题
  9. WPF 图片splashScreen效果
  10. python报告水印怎么弄_超简单Python安全批量打水印教程!
  11. c语言内循环和外循环作用是什么,空调内循环和外循环的作用
  12. 扶贫计算机考试试题,计算机基础知识试题1.doc
  13. 车载多传感器融合定位方案:GPS +IMU+MM
  14. Mon Dec 31 00:00:00 CST 2012格式的字符串转时间格式
  15. halcon获取图像中心点_Halcon学习之六:获取Image图像中Region区域的特征参数
  16. 四级网络工程师试题九
  17. redis set设置有效时间问题
  18. 从零开始学五线谱_从零开始学简谱(快速入门)
  19. wagon-maven-plugin插件实现自动化构建部署到服务器
  20. Windows Terminal 配置GIT

热门文章

  1. MySQL查询累计值的方法
  2. 对乐库项目的播放列表单元格进行布局
  3. Vuex的使用(十)——mutations和actions的返回值测试
  4. 计算机实验报告protel,PROTEL课程实验报告
  5. onSenUI 配置环境
  6. Java进阶—函数式接口
  7. JAVA char转int
  8. 为了给小女友挑合适罩杯的内衣,我用 Python 爬了淘宝内衣店的数据!
  9. 三星note3 android m,三星Note3手机有几个型号?三星Note3版本区别介绍
  10. php qq对话,PHP WEB版QQ多人聊天