函数和模块
函数基础
函数是对"功能独立且会重复使用"的代码的封装。通过函数可以:1)减少重复代码;2)提高代码可读性;3)便于团队协作。
# 定义函数
def fac(num):
"""计算num的阶乘"""
result = 1
for n in range(2, num + 1):
result *= n
return result
# 调用函数
print(fac(5)) # 120
print(fac(7)) # 5040
函数的参数
位置参数和关键字参数
def greet(name, greeting='你好'):
print(f'{greeting}, {name}!')
greet('Alice') # 位置参数
greet(name='Bob', greeting='Hello') # 关键字参数
默认值参数
def roll_dice(n=2):
"""掷n颗骰子,默认2颗"""
import random
return sum(random.randrange(1, 7) for _ in range(n))
print(roll_dice()) # 默认掷2颗
print(roll_dice(3)) # 掷3颗
注意:默认值参数必须放在非默认值参数之后。
可变参数
# 可变位置参数
def add(*args):
return sum(args)
print(add(1, 2, 3)) # 6
# 可变关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f'{key}: {value}')
print_info(name='Alice', age=30, city='Beijing')
模块管理
什么是模块
每个 .py 文件就是一个模块,模块可以避免命名冲突:
module1.py:
def foo():
print('hello')
module2.py:
def foo():
print('goodbye')
main.py:
import module1
import module2
module1.foo() # hello
module2.foo() # goodbye
导入方式
import math # 导入整个模块
from math import factorial # 导入特定函数
from math import factorial as f # 导入并取别名
from math import * # 导入所有(不推荐)
常用内置函数
| 函数 | 说明 |
|---|---|
abs(x) |
绝对值 |
max(iterable) |
最大值 |
min(iterable) |
最小值 |
sum(iterable) |
求和 |
len(thing) |
长度 |
pow(x, y) |
x 的 y 次方 |
round(x, n) |
四舍五入保留 n 位小数 |
type(obj) |
对象类型 |
isinstance(obj, type) |
类型判断 |
input(prompt) |
读取输入 |
print(*args) |
打印输出 |
总结
- 函数用
def定义,return返回值,无return返回None - 参数类型:位置参数、关键字参数、默认值参数、可变参数
- 用模块管理函数,避免命名冲突
- Python 标准库提供了大量模块,优先使用现成实现(不要重复发明轮子)