Wtfpython讲解了大量的Python编译器的内容。其实它们不一定很实用,只要程序员按照规范的语法输入基本上是不会碰到其中的“BUG“的,不过其中有一部分内容是真的很有趣或者可能有用,这里将其中几个较为有用或有趣的摘录下来,看看能否激起大家前去一阅的兴趣。

Tips:

1.python中对“-”号的定义:Pyhon的自由度真的很高啊,不过这个自由度是建立在定义严格的基础上的。-”号是“+”号的反向,具体一点,就是这样:

开源项目精选:Wtfpython——更有趣的 Python 教程

 

2.多线程处理:多个Python线程不会同时运行你的Python代码。多线程看起来很直观,可以派生出几个线程,让他们同时执行你的Python代码,但是由于Python存在全局解释器锁(Global Interpreter Lock),你所做的只是让你的线程在相同的内核上轮流执行。Python线程适用于IO绑定任务,但为了实现CPU绑定任务的Python实际并行化,您可能需要使用Python 多处理模块(multiprocessing module)。

有关全局解释器锁的内容可以查看官方文档:

https://wiki.python.org/moin/GlobalInterpreterLock

 

3.关于count函数:

‘abc’.count(”) == 4.

Count函数用于统计字符串中某个子串的出现次数,以下代码模拟了该函数的执行过程,或许可以解释这个问题:

def count(s, sub):

result = 0

for i in range(len(s) + 1 – len(sub)):

result += (s[i:i + len(sub)] == sub)

return result

 

4.两个特殊字符串:

nan与inf意义分别是“不存在”与“无穷大”,这两个概念在被强制转换为float类型后生效。即:

a=float(‘inf’) 正无穷大

b=float(‘-inf’)负无穷大

c=float(‘nan’)不存在的数

这样的话会有:

>>>a+3

inf

>>>b+3

-inf

>>>c+3

nan

Ps:无限的哈希值是10 5 xπ

 

5.+=的优先级要比+高,除非你把+号连接的内容打上括号。

 

6.以Python为舟,看看Python的哲学:

>>>import this

>>> love = this

>>> this is love

True

>>> love is True

False

>>> love is False

False

>>> love is not True or False

True

>>> love is not True or False; love is love  # Love is complicated(复杂的)

True

算一个梗吧,哈哈。

这是this模块的内容https://hg.python.org/cpython/file/c3896275c0f6/Lib/this.py

 

7.global的使用:

在函数外定义的变量,可以被函数引用,但是如果函数内有同名变量的赋值(不论位置),引用都会触发错误。

例:

a = 1

def some_func():

return a

 

def another_func():

a += 1

return a

运行:

>>> some_func()

1

>>> another_func()

UnboundLocalError: local variable ‘a’ referenced before assignment

除非改成这样:

def another_func()

global a

a += 1

return a

 

8、关于哈希:

some_dict = {}

some_dict[5.5] = “Ruby”

some_dict[5.0] = “JavaScript”

some_dict[5] = “Python”

运行:

>>> some_dict[5.5]

“Ruby”

>>> some_dict[5.0]

“Python”

>>> some_dict[5]

“Python”

 

由于5.0的哈希值与5相同,因此JavaScript被Python覆盖了(emmmm,满满的恶意)

测试两键哈希是否相同用hash(a)==hash(b)即可。

由于存取只以哈希值为标准,因此字典也被称作哈希表。

 

9.当并列的语句都含有return时,以最后一句的内容为准。

def some_func():

try:

return ‘from_try’

finally:

return ‘from_finally’

运行:

>>> some_func()

‘from_finally’

 

更多内容:

https://github.com/satwikkansal/wtfpython