首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2018年3月29日:开源日报第21期

每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,欢迎关注开源日报。交流QQ群:202790710;电报群 https://t.me/OpeningSourceOrg

今日推荐开源项目

《Wtfpython—更有趣的python教程》

推荐理由:Python 教程千千万万,试试这个更有趣的?

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’

更多内容:

https://github.com/satwikkansal/wtfpython

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180329G1FPDO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券