Wtfpython讲解了大量的Python编译器的内容。其实它们不一定很实用,只要程序员按照规范的语法输入基本上是不会碰到其中的“BUG“的,不过其中有一部分内容是真的很有趣或者可能有用,这里将其中几个较为有用或有趣的摘录下来,看看能否激起大家前去一阅的兴趣。
Tips:
1.python中对“-”号的定义:Pyhon的自由度真的很高啊,不过这个自由度是建立在定义严格的基础上的。-”号是“+”号的反向,具体一点,就是这样:
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'