2020年8月4日
第八章 函数
1.定义函数
def greet_user( ): 函数定义
"""显示简单的问候语""" 注释/文档字符串
print("Hello!") 函数体
2.要确认函数调用中实参的顺序与函数定义中形参的顺序一致。
或者使用关键字实参,在实参中将名称和值关联起来了,这样就算改变顺序,传递实参时也不会混淆。
3.编写函数时可以给每个形参指定默认值
使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。
def describe_pet(pet_name,animal_type='dog'):
"""显示宠物的信息"""
print("\nI have a "+animal_type+".")
print("My "+animal_type+"'s name is "+pet_name.title( )+".")
describe_pet(pet_name='willie')
4.Python和C++在函数方面的区别:参数的完全自动化处理
Python真的好自动,我好爱
5.让实参变为可选的,利用默认值和函数内置的if-else结构
def bulid_person(first_name,last_name,age=''):
person={'first':first_name,'last':last_name}
if age:
person['age']=age
return person
6.function_name(list_name) 相当于C++中的地址传递
function_name(list_name[:]) 相当于C++中的副本传递
7.传递任意数量的实参
def make_pizza(*toppings):
print(toppings)
make_pizza('A')
make_pizza('A','B','C')
*toppings表示建立一个名为toppings的空元组,并将收到的所有值都封装到这个元组之中
如果让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后,Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
8.使用任意数量的关键字实参,将函数编写成能够接受任意数量的键-值对
def build_profile(first,last,**user_info):
"""创建一个字典,其中包含我们知道的关于用户的一切"""
profile={}
profile['first_name']=first
profile['last_name']=last
for key,value in user_info.item():
profile[key]=value
return profile
User_profile=bulid_profile('albert','einstein',location='princeton',field='physics')
9.将函数存储在模块中:
模块是扩展名为.py的文件,包含要导入到程序中的代码
导入整个模块
import module_name
module_name.function_name()
10.导入特定的函数
from module_name import function_0,function_1,function_2
导入模块时,调用函数要使用句点
导入函数时,直接调用即可
11.给引入的函数指定别名
from module_name import function_name as fn
12.给引入的模块指定别名
from module_name as mn
13.导入模块中的所有函数
from module import *
14.函数编写指南
(1)给函数指定描述性名称,只在其中使用小写字母和下划线
(2)每个函数都应包含简要阐述功能的注释,该注释应紧跟在函数定义后面,并采用文档字符串格式。
(3)给形参指定默认值时,符号两边不要有空格
(4)如果程序或模块包含多个函数,可使用两个空行将相邻的函数分开
(5)所有的import语句都应放在文件开头