Python零基础入门(六)-----函数进阶,类型注解,模块
一、函数核心参数类型及传参方式
核心:4种参数类型,3种传参方式,按表格用法直接套用,无需多余理解。
1. 四种参数类型
|
参数类型 |
固定用法 |
关键说明 |
|
位置参数 |
def func(a, b): pass调用:func(1, 2) |
必须按顺序传入,个数与定义一致,最基础常用 |
|
关键字参数 |
def func(a, b): pass调用:func(a=1, b=2) |
指定参数名传入,无需按顺序,可与位置参数混用(位置参数在前) |
|
默认参数 |
def func(a, b=2): pass调用:func(1) 或 func(1, 3) |
定义时赋值默认值,调用时可省略,默认参数必须在位置参数后面 |
|
可变参数 |
*args:def func(*args): pass**kwargs:def func(**kwargs): pass |
*args接收任意个位置参数(元组),**kwargs接收任意个关键字参数(字典) |
2. 三种传参方式
# 1. 位置传参(最常用)
def add(a, b):
return a + b
print(add(3, 5)) # 8
# 2. 关键字传参(不按顺序)
print(add(a=3, b=5)) # 8
print(add(b=5, a=3)) # 8(位置参数在前,关键字在后)
# 3. 默认参数(省略默认值调用)
def add2(a, b=2):
return a + b
print(add2(3)) # 5(b默认取2)
print(add2(3, 4)) # 7(覆盖默认值)
# 4. 可变参数(*args, **kwargs)
def func(*args, **kwargs):
print(args) # 接收位置参数,元组形式
print(kwargs) # 接收关键字参数,字典形式
func(1, 2, 3, name="Python", age=10)
# 输出:(1, 2, 3);{'name': 'Python', 'age': 10}
二、匿名函数(lambda)
简化单行函数,无需def定义,仅用于简单逻辑,复杂逻辑用普通函数。
1.核心用法
| 用法场景 | 固定格式 | 核心说明 |
|---|---|---|
| 基础运算 | lambda 参数1,参数2: 表达式 |
无 return,表达式结果即返回值 |
| 变量赋值 | func = lambda x: x*2 |
赋值后可像普通函数一样调用 |
| 内置函数传参 | sorted(lst, key=lambda x: x[1]) |
简化排序、过滤等单行逻辑 |
2.代码演示
# 基础用法
add = lambda a, b: a + b
print(add(3, 5)) # 8
# 多个参数
func = lambda x, y, z: x*y + z
print(func(2, 3, 4)) # 10
# 配合内置函数(排序)
lst = [(1, 3), (2, 1), (3, 2)]
lst.sort(key=lambda x: x[1]) # 按元组第二个元素排序
print(lst) # [(2, 1), (3, 2), (1, 3)]
# 配合内置函数(过滤)
lst = [1, 2, 3, 4, 5]
res = filter(lambda x: x%2 == 0, lst)
print(list(res)) # [2, 4]
三、函数的类型注解
非强制,仅用于标注参数和返回值类型,提升代码可读性
1.核心用法
|
注解类型 |
固定格式 |
说明 |
|
参数注解 |
def func(a: int, b: str) -> None: pass |
参数后加“: 类型”,标注参数应传入的类型 |
|
返回值注解 |
def func(a: int) -> int: return a |
函数后加“-> 类型”,标注函数返回值的类型 |
|
复杂类型注解 |
from typing import Listdef func(lst: List[int]) -> List[int]: pass |
列表、字典等复杂类型,需从typing导入对应类型 |
2.代码演示
# 基础类型注解
def add(a: int, b: int) -> int:
return a + b
print(add(3, 5)) # 8(传入非int类型也能运行,仅标注)
# 无返回值注解(返回None)
def print_info(name: str) -> None:
print(f"Name: {name}")
print_info("Python")
# 复杂类型注解(列表、字典)
from typing import List, Dict
def process_lst(lst: List[int]) -> List[int]:
return [x*2 for x in lst]
def process_dict(d: Dict[str, int]) -> int:
return sum(d.values())
print(process_lst([1, 2, 3])) # [2, 4, 6]
print(process_dict({"a":1, "b":2})) # 3
四、模块相关知识
核心:模块是.py文件,存放函数/类/变量,用于代码复用
1.核心用法
|
操作类型 |
固定用法 |
说明 |
|
导入整个模块 |
import 模块名模块名.函数名() |
导入模块中所有内容,使用时需加“模块名.” |
|
导入指定内容 |
from 模块名 import 函数名/类名 |
仅导入需要的内容,直接使用,无需加模块名 |
|
导入重命名 |
import 模块名 as 别名from 模块名 import 函数名 as 别名 |
简化调用,避免命名冲突 |
|
导入所有内容 |
from 模块名 import * |
不推荐,易导致命名冲突,可读性差 |
2.代码演示
# 1. 导入整个模块
import math
print(math.sqrt(16)) # 4.0(求平方根)
print(math.pi) # 3.141592653589793
# 2. 导入指定函数
from math import sqrt, pi
print(sqrt(25)) # 5.0
print(pi) # 3.141592653589793
# 3. 导入重命名
import math as m
from math import sqrt as sq
print(m.sqrt(36)) # 6.0
print(sq(49)) # 7.0
# 4. 自定义模块(示例)
# 新建test_module.py文件,写入:
# def my_add(a, b):
# return a + b
# 导入自定义模块
from test_module import my_add
print(my_add(2, 3)) # 5
五、注意
-
默认参数必须放在位置参数后面,可变参数(*args, **kwargs)放在最后。
-
lambda匿名函数仅支持单行表达式,复杂逻辑用def定义普通函数。
-
类型注解非强制,不影响代码运行,仅提升可读性。
-
导入模块时,模块名不能与Python内置函数/关键字重名(如math、list)。
-
自定义模块需与当前代码文件在同一目录,否则需指定路径。
更多推荐



所有评论(0)