python函数
1、定义函数
def greet_user():
Print(“Hello”)
greet_user()
关键字def 表示要定义一个函数,后面跟着函数名,括号用来完成函数为完成工作还需要的添加的信息,也可以没有。最后以冒号结尾
向函数传递信息:当调用函数的时候,向函数提供执行函数体所需要的信息。可以多次调用函数。
def greet_user(name):
Print(“Hello” + name)
greet_user(“a”)
形参和实参:
在定义函数的时候,要求给name指定一个值。变量name为形参,值”a”为一个实参,实参是调用函数的时候传递的信息,将实参传递给函数,实参的值被存储在name里
2、传递实参
在函数的定义中可以包含多个形参,也可以不包括形参。传递实参的方式:位置实参,关键字实参,还可以使用字典和列表
位置实参:函数调用的每个实参的位置对应函数定义中每一个形参的位置
def describe_pets(animal_type,pet_name):
"""显示程序的所有的信息"""
print("\nI have
a "+animal_type + " .")
print("My
" + animal_type +" 's name is " + pet_name)
describe_pets("bb","cc")
注意:位置要对应好,顺序很重要
关键字实参:传递给函数的名称-值对
在实参中将名称和值一一对应起来,但是在函数定义中,形参的变量要和实参的名称一致,这样即使形参和实参的位置不一致,也无碍。
def describe_pets(animal_type,pet_name):
"""显示程序的所有的信息"""
print("\nI have
a "+animal_type + " .")
print("My " + animal_type +" 's name is " + pet_name)
describe_pets(animal_type = "bb",,pet_name ="cc")
默认值,定义函数的时候,可以给形参赋值,当函数调用中有实参的时候,使用指定的实参,否则使用形参的默认值。
def describe_pets(animal_type,pet_name = "aa"):
"""显示程序的所有的信息"""
print("\nI have
a "+animal_type + " .")
print("My " + animal_type +" 's name is " + pet_name)
describe_pets("bb","cc")
describe_pets("bb")
3、返回值
函数并不是总是直接输出的,有时候也会返回一个值或者一组值。在函数体里,可以使用return将值返回到调用函数的代码行。调用含有返回值的函数时,需要一个变量,用来放置返回值
让实参变成可选:可以采用默认值来使实参变成可选,在定义函数的时候,将需要变成可选的形参默认值为空字符串,并将该形参放置在末尾。在函数体中,检查该形参是否有只时,如果有值,为True,如果依然为空字符串,则 为False
def get_formated_name(first_name,last_name,middle_name
= ""):
"""返回整洁的姓名"""
if middle_name:
full_name = first_name +" "+ middle_name +" "+ last_name
else:
full_name = first_name+ " " + last_name
return full_name
name = get_formated_name("aa","bb","cc")
print(name)
函数可以返回任何类型的值,包括列表和字典。还可以将while和函数放在一起使用
4、传递列表
将列表传递给函数,这样函数就能直接访问列表里面的内容
在函数中修改列表:将列表传递给函数时,函数对列表的修改是永久性的,但是有时候不愿意永久性的修改列表,可以将列表的切片传递给函数,这样类似于传递了副本,对副本的改变,并不会改变列表
"""首先创建一个列表,包含未一些要打印的设计"""
def print_model(unprint_model,completed_print):
while unprint_model:
model = unprint_model.pop()
print("\n现在正在打印的是:"+model)
completed_print.append(model)
def show_model(complete_model):
print("\n打印如下列表:")
for model in complete_model:
print(model)
unprint_model = ["aa","bb","cc"]
complete_print = []
print_model(unprint_model[:],complete_print)
show_model(complete_print)
print(unprint_model)
5、传递任意数量的实参
有时候在定义函数的时候,不知道需要接受多少个实参的时候,可以在定义函数的时候,在形参名称之前加*,这样在传递实参值的时候,将其全部放置在定义的元祖里。
如果让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集在最后一个形参里。
使用任意数量的关键字实参,需要在定义函数的形参名前加**,在时候表示的是一个字典,实参是以关键字的形式即键-值对传入字典里。
6、将函数存储在模块里(在主程序里)
导入整个模块:import 文件名 文件名.调用函数
导入特定的函数:from 文件名 import 函数名
使用as 可以给函数指定别名 from 文件名 import 函数名 as 别名
使用as给模块指定别名 import 文件名as 别名
还可以导入模块的所有的函数:from 文件名 import *