Skip to content
David Liu edited this page Jan 18, 2025 · 18 revisions

naming-conventions

  • Python import 并非只是把一个文本插入另一个文本而已。程序在第一次导入指定文件时,会执行如下steps: 1. 找到模块文件 2. compile into bytecode 3. 执行模块的代码。在这之后,导入相同模块时,会跳过这些steps,而只提取内存中已加载的模块对象。已加载的模块存储在sys.modules表对象中。
  • os.environ vs os.getenv
    • os.environ['key'] raises an exception if the environmental variable key does not exist
    • os.getenv('key') does not raise an exception, but returns None
    • os.getenv is a wrapper to os.environ.get
  • with 语句用于异常处理,封装了 try…except…finally 编码范式,提高了易用性。
    • with 语句实现原理建立在上下文管理器之上。
    • 上下文管理器是一个实现 __enter____exit__ 方法的类。
    • with 语句的对象类必须是一个上下文管理器的实现
  • getter and setter
  • is vs ==
    • is: 指针相同
    • ==:值相同,常用于值和常量比较
  • spread operator in python:
    • for dict: **
    • for tuple: *

类型Type

  • 不强制在构建对象时指定泛型的类型
  • 函数的参数类型和返回类型只是一种文档注解(类型注解)。
    • 用来增强代码可读性。
    • 类型注解并不会强制执行类型限制,因此对函数的性能没有影响
    • To check runtime type, use library typeguard

Best practice

pylint

  • Auto formatter: autopep8
  • basic syntax check: python -m compileall -q .

logging

请注意,根记录器的默认级别为 WARNING

type

Python 复数 4+3j 的类型为 ‘<class 'complex'>’

Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True

Clone this wiki locally