第8章 · 函数

学习定义和调用函数,掌握位置实参、关键字实参、默认值、返回值以及将函数存入模块的方法。

知识点 代码示例 章节测验(2 题)

知识点讲解

定义函数与传递实参

函数用 def 定义,函数名后圆括号内是形参。调用时传参的方式有位置实参(按顺序)和关键字实参(name=value 形式,顺序无关)。形参可以指定默认值:def describe(pet_name, animal_type="dog")

返回值与传递列表

函数用 return 返回值。传递列表时,函数内对列表的修改会直接影响原列表;如果不想修改原列表,可传递列表的副本 list[:]。函数还可以接收任意数量的实参:def make_pizza(*toppings)(*toppings收集为元组)、**user_info(收集为字典)。

将函数存储在模块中

将函数存放到独立的.py文件中就形成了模块。使用 import 模块名 导入整个模块并通过 模块名.函数名() 调用;也可用 from 模块名 import 函数名 导入特定函数;as 可以为模块或函数指定别名。

代码示例

函数与返回值

演示函数定义、默认值与返回值。

def greet_user(username="匿名用户"):
    print(f"你好,{username.title()}!")

greet_user("jesse")
greet_user()

def get_formatted_name(first, last):
    full = f"{first} {last}"
    return full.title()

name = get_formatted_name("john", "smith")
print(name)

任意数量实参

演示*args与**kwargs。

def make_pizza(size, *toppings):
    print(f"制作{size}寸披萨,配料: ")
    for topping in toppings:
        print(f"- {topping}")

make_pizza(12, "mushrooms", "pepperoni")

def build_profile(first, last, **user_info):
    profile = {"first": first, "last": last}
    for k, v in user_info.items():
        profile[k] = v
    return profile

print(build_profile("albert", "einstein", location="princeton", field="physics"))