在学习 Python 的时候,遇到过一些问题,现在把它们记下来。

1 有趣的例子

1.1 看不懂

Python 的代码以可读性强著称,不过如果你足够变态的话,还是能够写出很可怕的代码的。Ulf Bartelt 就写了这些可怕的代码:

小于 1000 的质数:

print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,  
map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000))) 

开头 10 个 Fibonacci 数:

print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f), 
range(10)) 

Mandelbrot 集:

print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y, 
Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM, 
Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro, 
i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y 
>=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr
64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy 
))))(-2.10.7, -1.21.2308024
#    \___ ___/  \___ ___/  |   |   |__ lines on screen 
#        V          V      |   |______ columns on screen 
#        |          |      |__________ maximum of "iterations" 
#        |          |_________________ range on y axis 
#        |____________________________ range on x axis 

小孩子千万别在自己家里乱试!

1.2 无穷递归现象

看这段代码:

[edward@argos Viki]$ python
Python 2.4.1 (#1, Apr 12 2005, 15:37:40)
[GCC 3.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> GNU=["GNU","'s not", "Unix"]
>>> GNU[0]=GNU
>>> GNU
[[...], "'s not", 'Unix']
>>> GNU[0]
[[...], "'s not", 'Unix']
>>> GNU[0][0]
[[...], "'s not", 'Unix']
>>> GNU[0][0][0]
[[...], "'s not", 'Unix']
>>> GNU[0][0][0][0]
[[...], "'s not", 'Unix']
>>> GNU[0][0][0][0][0]
[[...], "'s not", 'Unix']
>>> GNU[0][0][0][0][0][0]
[[...], "'s not", 'Unix']
>>> GNU[0][0][0][0][0][0][0]
[[...], "'s not", 'Unix']
>>>

好像有点可怕啊……

2 乱七八糟的 Python

2.1 乱七八糟的逻辑常量

看看下面的代码片段,貌似 Python 根本就没把 True、False 当作逻辑常量来处理。

Python 2.4.4 (#2, Oct 20 2006, 00:23:25)
[GCC 4.1.2 20061015 (prerelease) (Debian 4.1.1-16.1)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True = False
>>> False = False == False
>>> print False
True
>>> print True
False
>>>

怎么办?怎么办?天下大乱了!

3 滇狐作品

滇狐学习 Python 时写下一些乱七八糟的小玩艺,也许对你有用,也许没用,随便看看吧。

3.1 符文咒语查看器

符文是游戏《暗黑破坏神 II》中一项重要的东西,该作品用于查看符文咒语,并进行一些简单而实用的检索,感兴趣的话可以到这里看看。如果不知道符文是什么东西的话,请到《暗黑破坏神 II》相关网站上查找相应信息,滇狐不负责解释这个概念。当然,如果你对《暗黑破坏神 II》不了解或不感兴趣的话,你可以跳过这个作品不看。

3.2 TrueIce 音乐网下载器

虽然 TrueIce 音乐网提供了一个配套的 FTP,需要什么音乐可以在网页上浏览后再到 FTP 上下载,但总是觉得有些麻烦,于是写了个小程序直接根据网址下载相应的歌曲,感兴趣的话可以到这里看看。

3.3 ReplyGvim

在水木灌水是很有意思的事情,但水木的编辑器实在是太难用了。虽然以前曾经承诺过要给水木裁一个袖珍版的 Vi 用作编辑器,但后来一直没有兑现诺言。为了能让灌水更爽一些,滇狐写了这个QTerm插件,在回帖的时候弹出一个 GVim 窗口,用于编辑帖子,这样灌水就舒服多了。感兴趣的朋友可以到这里看看。

标签:Python 目录