Python学习笔记
参考书目:《Python编程从入门到实践(第2版)》,[美] Eric Matthes,袁国忠译
八、函数
1)定义函数
def greet_user(username,feeling='worried'): # 变量username是形参(parameter)。给形参指定默认值不要有空格
"""显示简单的问候语""" # 文档字符串(docstring)
print(f"Hello, {username.title()}! You look {feeling}. ") # 函数直接打印
2)实参和形参
# 位置实参,按顺序赋值
greet_user('skye','happy') # 值'skye'是实参(argument)
greet_user('happy','skye')
Hello, Skye! You look happy.
Hello, Happy! You look skye.
# 关键字实参
greet_user(username='skye',feeling='sad') # 调用函数时,关键字实参的等号两边不要有空格
greet_user(feeling='sad',username='skye')
Hello, Skye! You look sad.
Hello, Skye! You look sad.
# 形参有默认值
greet_user('skye')
Hello, Skye! You look worried.
3)返回值
def get_name(first_name,last_name,middle_name=''): # 给middle_name指定一个空的默认值
"""返回姓名"""
if middle_name:
full_name = f"{first_name} {middle_name} {last_name}" # {}之间加空格,最后输出会有空格,且每个词都title
else:
full_name = f"{first_name} {last_name}"
return full_name.title()
wizard_1 = get_name('harry','potter','james')
wizard_2 = get_name('ron','whisley')
print(wizard_1)
print(wizard_2)
Harry James Potter
Ron Whisley
4)返回字典
def build_person(first_name,last_name,age='None'): # 可以将None视为占位值,None相当于False
"""返回包含个人信息的字典"""
person = {'first':first_name,'last':last_name} # 不能在这里加'age':age,加上后若没有赋值,则会显示age='None'
if age:
person['age']=age
return person
wizard = build_person('harry','potter',age=18)
print(wizard)
{‘first’: ‘harry’, ‘last’: ‘potter’, ‘age’: 18}
5)传递列表
def greet_users(names):
"""向列表中的每个人简单问候"""
for name in names:
msg = f"Hello,{name.title()}"
print(msg)
username = ['harry','ron','hermione']
greet_users(username) # 在实参后加[:],则传入函数的是列表的副本,不会修改列表本身。如:greet_users(username[:])
Hello,Harry
Hello,Ron
Hello,Hermione
6)传递任意数量的实参
def get_names(*name): # 星号*表示创建一个空元组
print(name)
get_names('harry')
get_names('harry','ron','hermione')
(‘harry’,)
(‘harry’, ‘ron’, ‘hermione’)
7)使用任意数量的关键字实参
def build_profile(first,last,**user_info): # 两个星号**创建一个空字典
"""创建一个字典,里面包含个人信息"""
user_info['first_name']=first
user_info['last_name']=last
return user_info
user_profile = build_profile('harry','potter',location='england',identity='wizard')
print(user_profile)
{‘location’: ‘england’, ‘identity’: ‘wizard’, ‘first_name’: ‘harry’, ‘last_name’: ‘potter’}
8)使用模块
可以将函数储存在模块(独立文件)中,使用import导入模块,使用模块中的函数:module_name.function_name()
也可导入模块中的特定函数:from module_name import function_name
可使用as给函数或模块指定别名:import module_name as mn
也可直接将模块中所有函数导入:from module_name import *