EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖最后由 wwol_lastonm 于 2020-12-4 11:06 编辑7 Q+ {# k# `6 z1 V& q: ~- ]% W$ Z

4 _7 {/ q- ~' U! M$ _% I* L+ z( P  G! v

图源:unsplash

/ ?' F: {- d" R3 Z2 Z

# g* t5 U" R7 M) j: s" R8 h/ }* z6 s发现Python中的新功能是笔者的一大爱好,每当遇到一些其他人没有注意到的某个功能时,我都会兴致勃勃地把它记录下来。: w! D+ K9 T- b/ ]3 f% e# B2 k这不,过去几周我又了解到一些有趣的功能,例如StackOveRFlow上一些我不知道的功能。这些被低估和埋没的实用功能,你真的值得拥有!7 c! |* \, s6 `  N- Sdivmod" V9 Q: ?8 H- `0 b. U2 e这个函数非常有用,它能对两个数执行模除%运算,然后返回商和余数。例如:, G0 I% q4 T' A3 M* i8 v  w2 g8 c

$ c) C2 K) {1 `+ k( \# Vdivmod(5, 2)[Out]: (2, 1)6 i* f' t5 W& q: W9 w/ I! W

这只是在找到可以将2拟合为5的次数,我们不需要拆分这个数,就可以得出商为2,1为余数。对于计算返回进程运行所需的时间(以小时、分钟和秒为单位)特别有用,就像这样:5 c: u& q/ c8 _: V  P* n/ W# R) v1 V2 C+ O1 p: V3 `, R( x

start =datetime.datetime.now()    ...  # process code goes hereend =datetime.datetime.now()# we get the total runtime in secondsruntime = (end - start).seconds  # wewill assume 30000# how many hours are in these secs, what are the remainingsecs?hours, remainder = divmod(runtime, 3600)# now how many minutes and seconds arein our remainder?mins, secs = divmod(remainder,60)print("{:02d}:{:02d}:{:02d}".format(hours, mins, secs))[Out]: "08:00:08"+ n% [1 @5 |3 J  u$ p

casefold' |$ B9 ]" Z" Y0 F' u- E3 A1 s: E5 {这是一个特别有趣的字符串方法,它的功能类似于lower。,但casefold试图更积极地标准化更广泛的字符。在大多数情况下,lower和casefold的行为相同,但有时它们不相同:7 r, N4 {0 j7 e% J# B( S! g1 M2 I+ u

. Q  B7 H& k8 x/ G"?".casefold()  # both ? and σ are the Greek letter sigma[Out]:"σ"

3 P6 u, _& \5 U  W0 M* o相比之下,使用lower:3 V* Z; U2 G7 b+ v+ _; z$ |1 N# h% \7 L* ^  |% t& G5 A

}. W1 n/ `% \7 W1 i* `"?".lower()  # however, lower recognizes them as different[Out]:"?"[Out]: False: ?: a) {1 Q9 a1 o8 u

在这里,两个sigma已经都是小写。根据使用情况,它可能会按预期运行。但是,如果打算比较两个等效的希腊语单词,一个使用σ,另一个使用?。尽管相同,但只有casefold才能让我们准确地比较它们:9 a4 s( @0 S5 J) p& g

2 n0 t! L! j% N1 q/ G"?ρμη?σ" == "?ρμη??"[Out]:False"?ρμη?σ".lower() == "?ρμη??".lower()[Out]:False"?ρμη?σ".casefold() == "?ρμη??".casefold()[Out]:True

- W8 S/ x6 V. o* h1 j5 i*args, **kwargs) p( `+ o- [6 ~/ P9 v5 p. u有时你可能会看到函数定义包含这两个参数,例如 def func(x,y,* args,** kwargs)。# r4 k  I& u1 `9 s: z4 n+ g. R它们都非常简单,两者都允许我们将多个值传递给一个函数,然后将其打包到一个生成器中。关于是否将列表/生成器传递给标准参数,其结果是这样的:# Z' a* ^% i9 M$ d

- E0 X) r) t' [7 I) w3 Q1 d, ^* C6 E  G/ n) udef func(values):    for x in values:        print(x, end=" ")func([1,2, 3])[Out]:  1 2 35 @' \8 C+ D5 y/ a& F

使用* args 时,我们应该将每个值作为新参数传递,而不是将它们全部包含在列表中。$ ?1 w1 ?; k1 X

2 ^' y7 y0 V6 P5 F- q7 H1 f: u8 mdef func(*values):    for x in values:        print(x, end=" ")func(1,2, 3)[Out]: 1 2 3$ `# a! z8 b  u2 d. l: H

注意,不需要输入* args,只需输入* values。由于单个星号*,它被定义为* args,这和使用的变量名称无关。* args只是根据传递给函数的参数创建一个生成器对象。** kwargs创建字典。* E. m- z+ l1 F& W因此,可以这样使用名称、关键字参数:* k$ P( f) \4 a/ b4 J

7 R& G/ k2 e6 ?/ g2 p9 ]7 R, \, qdef func(**values):    for x in values:        print(f"{x}:{values[x]}")func(x=1, y=2, z=3)[Out]: x: 1       y: 2       z: 31 S  o- R. R* T# |5 ~

同样,可以随意调用变量,在这种情况下,使用** values。通过使用双引号将其定义为**kwargs。% s+ ?- K8 ?7 n) J0 K3 W

图源:unsplash

: `  ]7 y+ s  }" t* s  i' {, t( g+ E. M& G/ ~2 v4 l- o列表理解% k7 ]% r* A3 |& {9 y2 @; l: w理解表达式是必不可少的,这绝对是Python最有用的功能之一。最常见的是列表理解,绝大多数人都看过以下内容:- o9 ~* J5 b% x$ B( |5 S/ P

) }6 C- v1 V9 `6 Z2 `vals = [1, 2, 3, 4, 5][i**2 fori in vals][Out]: [1, 4, 9, 16, 25]

- w9 g: V8 {- ~2 F7 P1 Q但不仅可以用方括号,你还能用几乎完全相同的语法定义生成器表达式:- }2 g- o- {  l# b! [' k4 s' b2 _% v. O

6 z  p, x# Z4 }) h) n0 b(i**2 for i in vals)[Out]: at 0x7f0281730fc0># z9 w9 x0 G  G5 p; t6 g

当然,生成器中的每个元素仅在被调用时才输出,我们可以使用list()来做到这一点:, X; h  Y1 v2 `2 D6 ^4 L& ~

% P. B" @0 r( {- s* G. AN+ a& M/ Z1 R7 \# S! glist((i**2 for i in vals))[Out]: [1, 4, 9, 16, 25]) m7 D/ F# D9 f2 B, Q$ N

只需对语法进行一点小的更改,甚至可以使用字典理解来构建字典:+ G3 E/ Z3 Q) E2 P+ c! H# W# K" j8 I" t6 m5 y

{i: i**2 for i in vals}[Out]:{1: 1,        2: 4,        3: 9,        4: 16,        5: 25}

' K! h1 N+ r# I  u3 t; Q以上都是非常有趣的功能,特别是divmod和casefold,我最近才体验过,你也一定要去试试呀。/ A; l/ V7 k+ W# @" k" G8 ?6 T* e$ C0 H4 v

* P2 t- h1 t5 ~$ D! F0 r

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

python适用于哪些芯片_这些鲜为人知的Python功能,你值得拥有!相关推荐

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

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

  2. python适用于哪些芯片_五年Python三大秘诀!日常生活不可或缺的秘密武器

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x 本帖最后由 Ber_thaw99 于 2020-12-28 14:07 编辑' P& t5 n# [5 J) Y& ...

  3. 新手入门python的注意事项_【新手入门Python语言的方法】

    2018年编程语言榜,Python位居榜首,很多学员对这门表示有着强烈的兴趣. 中公优教育小编这次就来谈谈Python入门方法. 下面直接进入今天的主题: 学编程,python算是一个不错的选择.因为 ...

  4. python定期自动运行_干货分享 | 适合 Python 入门的 8 款强大工具,不会就你还不知道吧!...

    点击上方"人工智能Corner","星标或置顶公众号" 干货分享,第一时间送达 Python是一种开源的编程语言,可用于Web编程.数据科学.人工智能以及许多科 ...

  5. python语言运行效率高_如何评价说PYTHON是最快的语言?

    我是视频的作者,首先感谢朋友们的关注,并且诞生了这个论题,让我可以看到大家对我视频中的观点的反馈.对于大家的讨论,在日常时间允许的条件下,我会尽量参与.下面就我目前已经看到的朋友们的评论,做一下展开. ...

  6. python怎么打日志_怎样调试 日志 python 代码

    展开全部 使用 pdb 进行调试 pdb 是 python 自带e5a48de588b662616964757a686964616f31333361306366的一个包,为 python 程序提供了一 ...

  7. c++中的引用和python中的引用_对比 C++ 和 Python,谈谈指针与引用

    作者 | 樱雨楼 引言 指针(Pointer)是 C.C++ 以及 Java.Go 等语言的一个非常核心且重要的概念,而引用(Reference)是在指针的基础上构建出的一个同样重要的概念. 指针对于 ...

  8. python常用库教程_这几个python常用的库你必须知道!

    随着人工智能时代的到来,python变得更加流行.受欢迎,功能强大.简单易学.容易入门.应用广泛等,掀起了学习热潮,现在越来越多人转行都会学习python语言.为了让大家快速掌握python,今天为大 ...

  9. python入门第一课_入门第一课 Python入门涉及的问题及简单示例

    很多初学者都在问:我想自学Python,该怎样入门?入门选择哪些书籍? 下面,我以自己的理解作出解答. 1.先说明大体的学习进度. Python确实入门较为容易,语法清晰易懂.一旦入了门再想提高就和其 ...

  10. python国内书籍推荐_这些都是Python官方推荐的最好的书籍

    转行学Python有前途吗?这个答案是肯定的,AI课程都已经进入小学教材了,未来Python趋势无疑是光明的,但是如何学习Python,很多Python小白都来问小编有什么适合的Python入门书籍推 ...

最新文章

  1. OpenCV下车牌定位算法实现代码
  2. 给字符数组赋值的方法
  3. Openresty使用
  4. linux losetup命令,losetup命令_Linux losetup 命令用法详解:设定与控制循环(loop)设备...
  5. 如何看待清华大学生命科学学院削减研究生补助的行为?
  6. 打造“5G+IoT”生态,共创产业繁荣沃土
  7. Ceph块设备(RBD)常用命令
  8. 共享软件加密的一些误区
  9. 迅雷for linux centos,在CentOS6.6(32位)下配置迅雷远程成功
  10. python制作QQ游戏--大家来找茬游戏辅助(一)
  11. PS4 5.05安装Linux系统,PS4主机刷机教程以及游戏安装教程,到5.05 4.55 4.05等系统
  12. rampUp时间 jmeter
  13. html设置导航随滚动条滚动条,导航栏横向滚动条的两种实现方法
  14. 如何向外行讲解 2G、3G 和 4G LTE 的区别?
  15. 锂离子电池种类介绍和分类
  16. java jpeg rpg_史上最骚RPG制作第三期 java端数据的插入和查询
  17. 多径信道下的LMS、RLS均衡算法研究(三)
  18. flutter 弹幕插件_Flutter 实现虎牙/斗鱼 弹幕功能
  19. 服务器软件维护的内容有哪些
  20. 【PPT制作工具】超实用!有哪些鲜为人知却好用到爆的PPT辅助工具?

热门文章

  1. 21幅非常有创意的倒影摄影作品欣赏
  2. 9.看板方法---建立输入节奏
  3. 18. MySQL 命令
  4. Elasticsearch Lucene 数据写入原理 | ES 核心篇
  5. 第八章 面向对象编程简介
  6. ElectronNetTest
  7. 00048_this关键字
  8. yii2 advanced版基础部分
  9. 几种 vue的数据交互形式
  10. 3月20日 表单