在我们使用python的过程中也会遇到一些有意思的用法,这里找到了一些总结有趣的

话不多说,接着看下去吧!!!!python高薪就业(视频、学习路线、免费获取)​shimo.im

for-else用法

循环正常结束则执行else语句。一般用于循环找符合条件的元素.

如果找到则 break 调出循环,不会触发 else ;

如果没有找到(完整运行循环)

则 print not found《Effictive Python》

一书中对for-else用法提出了质疑,

主要观点是可以通过封装成函数来取代这一用法,

而封装成函数是更加通用易懂的做法,所以一般不会使用for-else用法.

try-else用法

如果没有触发异常就执行 else

参考

解包用法.

类似这样 a,b,c = ['a', 'b', 'c']

python有趣的解包用.

单行if-else

a = 1b = 3 if a == 1 else 2print('it is one' if a == 1 else 'no')

迭代器传入函数中不用加括号

# 一般是这样a = (i for i in range(10))sum(a)

# 我们可以这样sum((i for i in range(10)))

# 但我们还可以这样sum(i for i in range(10))

# 类似的有' '.

join(str(i) for i in range(10))

or的用法

python中 x or y 表示如果x为真就是x的值,否则为y的值。

我们会经常看到类似这样的用法

(比如函数的一个 value 参数没有设置默认值,这样使用就允许它不赋值)

value = value or {}

# 相当于value = value if value else

{}

and的用法

python中 x and y 表示如果x是假,结果就是x的值.

否则就是y的值x and y and z 多个and连接时.

如果全是真结果就是最后一个的值;如果中间有假的值,结果就是第一个假的值。

举一个例子

def not_empty(a):

return a and a.strip()not_empty(' a ')

# 值为 'a'not_empty(None)

# 不会报错(如果 return a.strip() 就会报错)

# 在处理None的问题上相当于def not_empty(a):

if a is None:

return None

else:

return a.strip()

细细品味and和or的差别,他们逻辑类似,但是实现的功能是不可以相互替代的.or 是结果如果不满意有个善后工作

and是要做一件事之前先检验一下,不能做就不让它做.

if value:

# 要用if value:# 不要用if value == True:

这里总结一下这种情况下什么时候是 True ,什么时候是 .

FalseFalse: 0 0.0 '' []

{}

()

set() None False

True:

' ' 'anything' [''] [0] (None, )

没有内容的可迭代对象.

另外要注意一点,我们用 if 判断一个对象是不是 None 的时候.

要 if a is None 而不要直接 if a .

因为如果是后者,有非常多不是 None 的情况也会判定为 False .

比如空字符串、空列表等,为了精确指定 None 还是要用前者,这也是一种规范。

下划线的特殊使用

python中下划线是一种特殊的变量和符号,有一些特殊的用途.

文档字符串

python有一种独一无二的注释方式,在包、模块、函数、类中第一句,

使用 '''doc''' 这样三引号注释,就可以在对象中用 __doc__ 的方式提取

比较规范的写法是这样的(这里参考 grequests 模块的写法).

def myfun(a, b):

'''add two numbers

:param a: one number

:param b: another number

:returns: a number

'''

print(a + b)print(myfun.__doc__)# 结果为

add two numbers :

param a: one number :

param b: another number :

returns: a number

其实参数还有其他的写法.

除此之外,函数注释还有另一种方式,函数名可以直接调用某个参数的注释,

详见 Python 的函数注释 .

有用的函数

sum的本质

本质:

sum(iterable, start=0) 将可迭代对象使用 + 连接 所以 sum([[1,2],[3,4]], [])

返回结果为 [1, 2, 3, 4]

range(start, stop[, step])

可以直接用 for i in range(10, 0, -1) 降序循环

enumerate循环索引.

for index, item in enumerate(['a', 'b', 'c']):

print(index, item)

输出:a

b

c

管道操作

func1(func2(func3(a)))写成类似a %>% func3 %>% func2 %>% func1.

清晰展示函数执行的顺序,增强可读性.

python本身不带有这样的用法,只是一些库提供了这样的用法.比如pandas和 syntax_sugar

其他

另外,就是一些基础的列表推导式

装饰器

生成器

map reduce filter

链式比较

类的魔术方法

更新补充

for-else的更多讨论

下面引用《Effictive Python》一书中内容:

a = 4 b = 9

for i in range(2, min(a, b) + 1):

print(‘Testing’, i)

if a % i == 0 and b % i == 0:

print(‘Not coprime’)

break

else:

print(‘Coprime’)

随后作者写到:

实际上,您不会以这种方式编写代码。

相反,您需要编写一个助手函数来进行计算。

这样的助手函数是用两种常见的样式编写的。

第一种方法是在找到所要寻找的条件时尽早返回。

如果您通过循环,则返回默认结果。

def coprime(a, b):

for i in range(2, min(a, b) + 1):

if a % i == 0 and b % i == 0:

return False

return True

第二种方法是有一个结果变量,该变量指示您是否在循环中找到了要查找的内容。

一旦你发现什么,你就会跳出圈套。

def coprime2(a, b):

is_coprime = True

for i in range(2, min(a, b) + 1):

if a % i == 0 and b % i == 0:

is_coprime = False

break

return is_coprime

结尾

对于不熟悉代码的读者来说,这两种方法都要清楚得多。

从Other块中获得的表现力并不比那些希望在将来理解您的代码的人(包括您自己)所承受的负担更重。

像循环这样的简单构造在Python中应该是不言自明的,您应该完全避免在循环之后使用其他块。

总结起来就是for-else的优势是可以被写函数的方式替代的

读者福利,点击链接即可领取相关学习福利包:python高薪就业(视频、学习路线、免费获取)​shimo.im

是安全网站放心,继续访问就可以领取了

就业系列:

有方向有目标的学习才能节省时间,没有方向目标的学习,就纯粹浪费时间。

部分视频展示:

电子书系列:

视频容易理解,电子书作为辅助,有时候看视频不方便可以用电子书作为辅助

python人工智能系列:.

python中content的用法_学python吗,教你5个python现学现用的有趣用法相关推荐

  1. python中系列的含义_一篇文章让你彻底搞清楚Python中self的含义

    刚开始学习Python的类写法的时候觉得很是麻烦,为什么定义时需要而调用时又不需要,为什么不能内部简化从而减少我们敲击键盘的次数? 你看完这篇文章后就会明白所有的疑问. self代表类的实例,而非类. ...

  2. python中哪些是无序_关于无序集合:无序集合 – 在python中设置

    本问题已经有最佳答案,请猛点这里访问. 很抱歉,如果这是一个基本问题,但是我想了解set类型在python中是如何工作的. 来自文档: A set object is an unordered col ...

  3. python中install语法错误_在“ npm install”之后,出现有关python中语法错误的错误吗?...

    我正在尝试为Exokit安装必要的依赖项,但是却收到与Python语法错误有关的错误. 这是我想尝试在浏览器中涉及VR的新内容.我已经从他们的github重新克隆了存储库,并直接从他们的网站下载了.我 ...

  4. python中如何调用函数_我写了一个函数,如何在python中调用

    匿名用户 1级 2015-03-06 回答 Python的特色简单 Python是一种代表简单主义思想的语言.阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Pyth ...

  5. python中break怎么用_详解Python中break语句的用法

    详解Python中break语句的用法 在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中 ...

  6. python中break的作用_详解Python中break语句的用法

    在Python中的break语句终止当前循环,继续执行下一个语句,就像C语言中的break一样. break最常见的用途是当一些外部条件被触发,需要从一个循环中断退出. break语句可以在while ...

  7. Python中单个下划线“ _”变量的用途是什么?

    这段代码中_ after for的含义是什么? if tbh.bag:n = 0for _ in tbh.bag.atom_set():n += 1 #1楼 下划线_在Python中被视为" ...

  8. python中的下划线_讲解

    python中,下划线 "_""_"" \_" 不管是单独作为变量名或者作为变量名的前缀或者后缀,是有特殊含义的,下面简要的来总结一下. 1 ...

  9. Python中单个下划线“_”变量的目的是什么?

    在Python中,下划线_被视为" 我不关心 "或" 丢失 "变量 python解释器将最后一个表达式值存储到名为的特殊变量中_. >>> 1 ...

  10. python逻辑与界面分离_一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...

最新文章

  1. iOS-仿膜拜贴纸滚动(物理仿真)
  2. 微积分学习笔记四:空间向量基础
  3. Starting MySQL... ERROR! The server quit without updating PID file 问题解决
  4. c语言中gets函数可以输入空格吗_C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?...
  5. [D3D] - 用PerfHUD来调试商业游戏
  6. 从Flash到Silverlight进阶教程-用代码来创建动画
  7. spring cloud config的bootstrap.yml与application.proterties的区别
  8. 彩色粉末粉尘喷溅高清素材,让热烈气氛烘托到极致
  9. 洛谷P3152 正整数序列
  10. React学习笔记一 JSX语法组件
  11. Python多线程小例子
  12. mac命令行压缩解压rar文件
  13. 降低数据压力的几种解决方案
  14. 【摘自csdn】一场我没有看懂的相亲
  15. 内容仓库Apache JackRabbit
  16. Java基础 println print 实现输出换行
  17. 小程序getLocation需要在app.json中声明permission字段
  18. 家乡的春节html,家乡的春节作文(通用10篇)
  19. 不写默认无参构造方法,调用自定义构造方法时报错No constructor found in com...
  20. 《最伟大的投资习惯》读书笔记

热门文章

  1. OSI、TCP/IP or Five-layer(Protocols Use) Model
  2. jQuery 1.7.1 代码研究 extend
  3. linux的常用操作——共享库
  4. 计算机操作系统——经典进程的同步问题
  5. Linux下启动程序常见问题,linux系统启动流程及常见故障解决方式
  6. 正则不能输入特殊字符_正则表达式语法学习和在线练习
  7. mugen4g补丁如何使用_CAD如何去除教育版戳记?
  8. C++链表插入节点函数为什么要传递头节点的二维指针
  9. 设置numpy的随机种子
  10. The value of a feed cannot be a tf.Tensor object.