python的一些帅气的代码,复制粘贴不好哦

这里的特技仅仅适应于python小学生。

1. 三目操作符

学过C语言的同学,或者看过《C语言从入门到放弃》这本书的同学一定不会对“三目操作符”这种画面感十足的操作符感到陌生。

然而,直到我完成python小学一年级课程的时候才发现原来python也有类似的东西。比如:

def foo(val):
    if val == 42:
       return "you are a programmer!"
    else:
       return "you are a manong!"

 或者你也可以这样写:

def foo(val):
      return "you are a programmer!" if val == 42 else "you are a manong!"

友情提示:此特技要小心使用。否则容易暴露你大师的本质。不要像撸主当年,把所有的if/else都改成神都看不懂的 "do xxx if xx else xxx"句式。

2. 会叫的都是鸭子

讲道理的话,这个应该是一个坑,而非技巧。由于撸主当年是从C++党转学python的,刚开始写代码总喜欢这样:

if isinstance('c', CPlusPlus):

assert(isinstance('python', CPlusPlus)

 更变态的时候甚至这样:

assert(type('C++') == CPlusPlus)

3. 内建函数和lamda

比如如下一个简单的例子:我需要将一个字符串列表中所有满足包含“result"字段的字符串筛选出来。

低年级的同学可能会这么做:

def foo(xxx):
      result_list = list()
      for ele in org_list:
           if "result" in ele:
                result_list.append(ele)

 BUT,这样做“一点都不酷!”。要酷还得靠装逼:

result_list = filter(lambda ele : "result" in ele, org_list)

 不信的话,你就去试试咯:

map(lambda ele : ele + 1, (1, 2, 3, 4))

reduce(lambda x,y:x+y, range(3))

 4. iterator和generator

这俩哥们看着很像、读着也很像。

其实不难区分,generator返回不用return,而用yield;所以你凡是看到yield的地方,很可能就是generator这装逼犯。

iterator呢,就是实现了next()方法和__iter__,__iter__方法返回它自己。而当你调用next()方法时,会返回一个值。通常,这个next值会由generator产生。

换种说法,你也可以这样理解,generator是用来生成iterator的。

generator=(i for i in xrange(0, 3))

 纳尼࿱

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值