Skip to main content

函数与模块

定义函数

def add(a, b):
return a + b

print(add(1, 2))

return 时默认返回 None

函数是一等对象:可以赋值、当作参数传入:

ops = {"add": add}
print(ops["add"](1, 2)) # 3

def apply(fn, x, y):
return fn(x, y)

print(apply(add, 3, 4)) # 7

参数

def greet(name, greeting="hello"):
return f"{greeting}, {name}"

def sum_all(*args):
return sum(args)

def show(**kwargs):
return kwargs
  • 位置参数、默认参数
  • *args 收多余位置参数(元组)
  • **kwargs 收多余关键字参数(字典)

模块与 import

同一目录下 math_utils.py

# math_utils.py
def double(x):
return x * 2
import math_utils
from math_utils import double
import math_utils as mu

包(package)直觉

惯例上用带 __init__.py 的目录表示常规包(Python 3.3+ 也可无该文件做成命名空间包,入门先按惯例即可):

mypkg/
__init__.py
core.py
from mypkg.core import something

脚本入口

def main():
print("run as script")

if __name__ == "__main__":
main()

被 import 时不会执行 main();直接运行文件时会执行。

要点

  1. 函数是一等对象,可赋值、可传参
  2. 默认参数不要用可变对象(如 []/{}
  3. if __name__ == "__main__" 区分库与入口