python中的函数
定义函数
函数即代码块,用于完成具体的工作。可多次调用
def greet_user():
"""显示简单的问候语。"""
print('Hello!')
greet_user()
python中的函数定义是通过def关键字,需要指定函数名,比如greet_user;
def greet_user():后面所有缩进的行构成函数体;
三个引号的部分叫做“文档字符串”,描述函数时干啥的,后期可用来生成文档。
函数的参数
参数分为实参和形参,形参是定义函数时传入的变量,实参是调用函数时传入的值或变量
def greet_user(username):
"""显示简单的问候语。"""
print(f'Hello {username}!')
greet_user('哈利波特')
形参:username
实参:哈利波特
实参分类
- 位置实参
注:顺序很重要 - 关键字实参
名称值对
可以给形参指定默认值
注意:使用默认值时,先列出没有默认值的形参,再列出有默认值的实参。
好处是:py可以正确的解析位置实参
传递任意数量的实参
def make_pizza(*toppings):
"""概述要制作的比萨。"""
print(f'制作比萨需要下面的配料:')
for topping in toppings:
print(f"- {topping}")
make_pizza('pepperoni')
# toppings is ('pepperoni',)
make_pizza('mushrooms', 'green peppers', 'extra cheese')
# toppings is ('mushrooms', 'green peppers', 'extra cheese')
注意:形参*toppings,将创建一个名为toppings空的元组
如果要结合使用位置实参和任意数量的实参,位置实参在前
注意:通用形参名*args,它也收集任意数量的位置实参
使用任意数量的关键字实参
def build_profile(first, last, **user_info):
"""创建一个字典,其中包括我们知道的有关用户的一切"""
user_info['first_name'] = first
user_info['last_name'] = last
return user_info
形如**user_info这种形参,两个星号让python创建一个名为user_info的空字典
注意:常用形参名:**kwargs,它用于收集任意数量的关键字实参。
编写函数指南
- 使用描述性名称,且只使用小写字母和下划线
- 函数应包含阐述其功能的注释
- 指定形参默认值时,等号两边不要有空格(函数调用中关键字实参,也要如此)
- 建议代码行长度不要超过79字符,形参很多时,可在下一行使用2个tab建,和函数体做区分
- 程序或模块包含多个函数时,用2个空格将相邻的函数分开
- 所有import语句都应放在文件开头(除非开头使用了注释描述整个程序)
函数和模块
- 函数写在一个文件中,可以作为独立模块,被另一个文件引入
引入方式有以下几种
- import module_name
- from module_name import function_name
- from module_name import function_name as fn
- import mudule_name as mn
- from module_name import *
编码模块的好处
- 模块,让程序文件更简单、更易于理解。
- 编写一次,尽情重用,只需执行调用函数的代码。
- 需要修改函数,只需修改一个代码块,所做修改将影响调用这个函数的每一个地方。
- 更容易测试和调试
总结:
- 参数顺序:位置实参,任意数量的位置实参,关键字实参,任意数量的关键字实参
- *args中args是一个空元组
- **kwargs中kwargs是一个空字典
- 使用函数和模块让程序更容易理解和阅读
参考书籍:
-《python编程 从入门到实践》第8章 函数

浙公网安备 33010602011771号