KK 的人生建议

个人部分觉得比较有意思或者带来一些启发的摘抄一下。

2022

  • 回答“我现在应该做什么?”的唯一富有成效的方法是首先解决 “我应该成为谁?”的问题。
  • 你的时间和空间是有限的。移除、放弃、扔掉你生活中那些不再能激发快乐的东西,以便为那些能激发快乐的东西腾出空间。
  • 永远不要为你不欣赏的人工作。
  • 你最好的工作将是一个你不合格的工作,因为它使你得到了锻炼。事实上,只申请你不合格的工作。
  • 当你领导时,你真正的工作是创造更多的领导者,而不是更多的追随者。
  • 私下批评,公开表扬。
  • 通过提升好的行为而不是惩罚坏的行为,你会得到10倍的效果,特别是在儿童和动物身上。
  • 当你被困住时,向别人解释你的问题。通常情况下,简单地摆出问题就能提出解决方案。让 “解释问题 ”成为你排除故障过程的一部分。
  • 一个不太聪明的人,如果能很好地沟通,有可能比一个不能很好沟通的超级聪明人做得更好。这是一个好消息,因为提高你的沟通能力比提高你的智力要容易得多。
  • 公开演讲时,要经常停顿。在你以新的方式说某件事情之前暂停,在你说了你认为重要的事情之后暂停,并将暂停作为一种解脱,让听众吸收细节。
  • 没有所谓的“准时”之说。你要么迟到,要么提前。这是你的选择。
  • 如果你把今天所做的事情再重复365次,你明年会达到你想要的程度吗?
  • 我们倾向于高估我们一天能做的事情,而低估我们在十年内能取得的成就。如果你给它十年的时间,就可以完成奇迹般的事情。一个长期的游戏将使小的收益复合化,以克服甚至大的错误。
  • 大约99%的情况下,正确的时间就是现在。
  • 效率被高估了,而玩物丧志被低估了。定期安排的安息日、公休日、假期、休息日、漫无目的的散步和休息时间对于任何类型的顶级表现都是必不可少的。最好的工作道德需要有良好的休息道德。
  • 不要老是犯同样的错误,要尝试犯新的错误。

2021

  • 成功的秘诀:谨慎承诺,然后努力超出预期。

41 个新年开工工作建议

1、有时候人们焦虑是因为我们想同时做太多事情,以至于一件事都没做成,这时候,你可以试着先做成一件事。书读不完,先读完一本试试。手头的工作全是烂尾工程,那就先把其中的一件完成。总之,先做成一件事,是打开新世界大门的钥匙。

Python EAFP LBYL 编程风格

本文介绍两种编程风格 EAFP and LBYL。

EAFP:Easier to Ask for Forgiveness than Permission,请求宽恕比获得许可更容易。首先尝试执行你想做的任何操作,然后使用一个尝试块来捕获你的操作可能抛出的最终异常,以防它不成功。

Python 工匠读书笔记 5:异常和错误处理

[toc]

基础知识

优先使用异常捕获

一个简单函数

写一个简单的函数,它接收一个整数参数,返回对它加1后的结果。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def incr_by_one(value):
    """对输入整数加1,返回新的值

    :param value: 整型,或者可以转成整型的字符串
    :return: 整型结果
    """
    if isinstance(value, int):
        return value + 1
    elif isinstance(value, str) and value.isdigit():
        return int(value) + 1
    else:
        print(f'Unable to perform incr for value: "{value}"')
        
        
def incr_by_one(value):
    """对输入整数加1,返回新的值

    :param value: 整型,或者可以转成整型的字符串
    :return: 整型结果
    """
    try:
        return int(value) + 1
    except (TypeError, ValueError) as e:
        print(f'Unable to perform incr for value: "{value}", error: {e}')

两种编程风格

  • LBLY(look befor you leap) 三思而后行
  • EAFP(easier to ask for forgiveness than permission) 获取原谅比许可简单

小结

  1. Python 社区偏于使用基于异常捕获的 EAFP 风格
  2. 代码更为精简,不需要开发者用分支完全覆盖各种可能出错的情况,只需要捕获可能发生的异常即可
  3. EAFP 的代码通常性能更好 如果是 ‘73’ LBLY 每次调用都需要进行额外的 isinstance 和 isdigit 的判断。EAFP 每次调用直接进行转换,返回结果
  4. Python 的抛出和捕获异常比较轻量

try 语句常用知识

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def safe_int(value):
    """尝试把输入转换为整数"""
    try:
        return int(value)
    except TypeError:
        # 当某类异常被抛出时,将会执行对应 except 下的语句
        print(f'type error: {type(value)} is invalid')
    except ValueError:
        # 你可以在一个 try 语句块下写多个 except
        print(f'value error: {value} is invalid')
    finally:
        # finally 里的语句,无论如何都会被执行,哪怕已经执行了return
        print('function completed')

把更精确的 except 放在前面

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def incr_by_key(d, key):
    try:
        d[key] += 1
    except Exception as e: 
        print(f'Unknown error: {e}')
    except KeyError:
        print(f'key {key} does not exists')
        
        
def incr_by_key(d, key):
    try:
        d[key] += 1
    except KeyError:
        print(f'key {key} does not exists')
    except Exception as e:
        print(f'Unknown error: {e}')

使用 else 分支

在使用 try 捕获异常的时候,有时需要再仅一切正常的时候做某件事

Go 语言学习路线

该文档用来收集 Go 语言的一些学习路线图、视频课程、教程书籍等学习资料,旨在用来作为个人学习记录,会持续更新。参考文档位于文末的附录部分(感谢所有提供学习资料的作者)。