目录
1.定义函数def
函数定义 |
def greet_user(): #定义函数 |
Hello World! |
向函数传递信息 |
def greet_user(username): #定义函数 |
Hello,Dylan |
形参:username,函数完成工作所需的信息 |
||
实参:’dylan’,调用函数时传递给函数的信息 |
2.传递实参
传递方式:位置实参(要求实参的顺序与形参的顺序相同)
关键字实参(每个实参都由变量名+值组成)
列表和字典
2.1位置实参
将函数调用中的每个实参都关联到函数定义中的一个形参。
注:顺序一定要正确
def describe_pet(animal_type, pet_name): |
I have a hamster. My hamster's name is Harry. |
|
多次 调用 函数 |
describe_pet('hamster', 'harry') |
I have a hamster. My hamster's name is Harry. I have a cat. My cat's name is 包子. |
2.2关键字实参
传递给函数的名称值对。无需考虑函数调用中的实参顺序。
describe_pet(animal_type='hamster', pet_name='harry') |
I have a hamster. My hamster's name is Harry. I have a cat. My cat's name is 包子. |
2.3默认值
给每个形参指定默认值。调用时没有给定实参,使用默认值
def describe_pet(pet_name='Dylan',animal_type='dog'): |
I have a dog. My dog's name is Dylan. |
def describe_pet(pet_name,animal_type='dog'): …… describe_pet(pet_name='harry') describe_pet(pet_name='harry',animal_type='cat') |
I have a dog. My dog's name is Harry. I have a cat. My cat's name is Harry. |
如果调用未说明实参给谁,则优先给没有默认值的那一个。 如果调用给了所有实参,则按照顺序依次赋值 |
|
注:不可以def describe_pet(pet_name='Ann',animal_type),默认值要放到最后,不能放到前面 |
3.返回值
返回值:函数返回的值。函数并非直接显示输出,还可以处理一些数据,并返回一个或一组值。
可使用return语句将值返回到调用函数的代码行。
3.1返回简单值
def get_formatted_name(first_name,last_name): |
Jem Harry |
3.2实参可选
不是所有情况都需要给所有实参赋值。
当实参中有值不需要时,可以先为这个实参设置默认是,再加入条件语句
def get_formatted_name(first_name,last_name,middle_name=''): |
Jem Harry Jem Lee Harry |
3.3返回字典
def buile_person(first_name,last_name): |
{'first': 'Jem', 'last': 'herry'} |
def buile_person(first_name,last_name,age=None): |
{'first': 'jem', 'last': 'herry', 'age': 99} |
3.4结合使用函数和while循环
def buile_person(first_name,last_name):
|
请告诉我你的名字: (直到用户输入q时退出循环) first name:ann last name:jee 请告诉我你的名字: (直到用户输入q时退出循环) first name:q Hello,q jee |
4.传递列表
将列表传递给函数,函数就能直接访问其内容。
函数 遍历列表 |
def greet_users(names):
|
Hello,Ann! Hello,Ty! Hello,Mar! |
在函数中 修改列表 |
#1.创建一个列表,其中包含一些要打印的设计 |
Printing moder:TV Printing moder:robot Printing moder:phone The following models have been printed: TV robot phone |
def print_models(un_designs,com_models): |
||
禁止函数 修改列 |
print_models(un_designs[:],com_models) |
切片 |
5.传递任意数量的实参
预先不知道需要接受多少个实参。
def make_pizza(*toppings): |
('pepperoni',) ('peppers', 'mushrooms', 'sugar') |
def make_pizza(*toppings): |
The toppings: - pepperoni The toppings: - peppers - mushrooms - sugar |
5.1结合使用位置实参和任意数量实参size,*xx
def make_pizza(size, *toppings): |
The 16 toppings: - pepperoni The 20 toppings: - peppers - mushrooms |
5.2使用任意数量的关键词实参**xxx
def build_p(first, last, **user_info): |
{'location': 'prt', 'f': 'j', 'first_name': 'abc', 'last_name': 'def'} |
6.将函数存储在模块中
将函数存储在称之为模块的独立文件中,再将模块导入到主程序中,
import语句:允许在当前运行的程序文件中使用模块中的代码。
6.1导入整个模块
模块扩展名:.py,包含要导入到程序中的代码。
pizza.py |
def make_pizza(size,*toppings): |
|
making_pizza.py |
import pizza #导入模块pizza.py pizza.make_pizza(16,'sugar') |
The 16 topping: ---sugar The 43 topping: ---green ---sugar |
6.2导入函数
①导入所有函数:from pizza import *
②导入特定函数
导入model_name.py中的function_name函数:from model_name import function_name
导入model_name.py中的funtion_0, funtion_1, funtion_2函数:
from model_name import funtion_0, funtion_1, funtion_2
making_pizza.py 导入pizza.py中的make_pizza的函数 |
from pizza import make_pizza |
6.3使用as给模块指定别名
例如,给模块pizza指定别名p :import pizza as p
7.函数编写
函数指定描述性名称:小写字母 和 下划线
①给形参指定默认值时,等号两边不要有空格:
def function_name(parameter_0,parameter_1='default value')
②函数调用关键字,等号两边不要有空格:function_name(value_0,parameter_1='value')