第8章 · 函数
学习定义和调用函数,掌握位置实参、关键字实参、默认值、返回值以及将函数存入模块的方法。
知识点讲解
定义函数与传递实参
函数用 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"))