Python
Java前端运维数据库
Python
Python
  • 安装
  • 基础语法
  • 数据类型
    • 列表
    • 元组
    • 集合
    • 字典
  • 数据类型转换
  • 函数
  • 条件判断和循环
  • 模块
  • 多线程
  • 错误和异常
  • 装饰器
  • pip & pipx
Powered by GitBook
On this page
  • 基础语法
  • 参数类型
  • 高阶函数
  • 匿名函数(lambda)
  • 装饰器
  • 变量作用域(LEGB)
  • 闭包(Closure)
  • 函数注解(类型提示)

函数

基础语法

def greet(name):
    print(f"Hello, {name}")

# 调用函数
greet("Alice")

# 返回值
def add(a, b):
    return a + b

# 文档字符串
def square(n):
    """返回 n 的平方"""
    return n * n

help(square)  # 查看文档

参数类型

  • 必选参数

def greet(name):
  print("Htllo", name)
  • 默认参数

def greet(name="World"):
    print("Hello", name)
  • 可变参数(*args)

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

sum_all(1, 2, 3)  # -> 6
  • 关键字参数(**kwargs)

def print_info(**kwargs):
    for k, v in kwargs.items():
        print(f"{k}: {v}")
  • 参数组合顺序

def func(a, b=2, *args, d, **kwargs):
    pass

高阶函数

  • 函数作为参数

def apply(func, x):
    return func(x)

apply(abs, -10)  # -> 10
  • 函数作为返回值

def outer():
    def inner():
        print("hello")
    return inner

f = outer()
f()  # -> hello

匿名函数(lambda)

square = lambda x: x * x
print(square(5))  # -> 25

# 用在 map/filter/sorted 中
sorted(data, key=lambda x: x["age"])

装饰器

  • 基本装饰器

def log(func):
    def wrapper(*args, **kwargs):
        print(f"Calling {func.__name__}")
        return func(*args, **kwargs)
    return wrapper

@log
def say_hello():
    print("Hello")

say_hello()
  • 带参数的装饰器(多层嵌套)

def log(level):
    def decorator(func):
        def wrapper(*args, **kwargs):
            print(f"[{level}] {func.__name__}")
            return func(*args, **kwargs)
        return wrapper
    return decorator

@log("INFO")
def do_something():
    pass

变量作用域(LEGB)

Python 的作用域遵循 LEGB 规则:

  • L(Local): 当前函数内部

  • E(Enclosing): 嵌套函数的外层函数

  • G(Global): 全局作用域

  • B(Built-in): Python 内建作用域

x = "global"

def outer():
    x = "enclosing"
    def inner():
        x = "local"
        print(x)
    inner()

outer()  # -> local

闭包(Closure)

内部函数引用了外部函数的变量,并返回该函数,外部变量就会被“闭包”住。

def make_adder(n):
    def adder(x):
        return x + n
    return adder

add5 = make_adder(5)
print(add5(10))  # -> 15

函数注解(类型提示)

def add(a: int, b: int) -> int:
    return a + b
Previous数据类型转换Next条件判断和循环

Last updated 1 day ago