函数与模块
定义函数
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();直接运行文件时会执行。
要点
- 函数是一等对象,可赋值、可传参
- 默认参数不要用可变对象(如
[]/{}) - 用
if __name__ == "__main__"区分库与入口