目录
1.定义函数:
使用关键字def 来定义一个函数
def introduction():
print("Hello world!")
greet_user()
1.1向函数传递信息
def introduction(username):
print("Hello world!")
introduction('Xixi')
1.2实参和形参
以1.1为例子,在函数introduction() 的定义中:
变量username 是一个形参 --- 函数完成其工作所需的一项信息。
在代码introduction('Xixi')中,值'Xixi' 是一个实参,实参是调用函数时传递给函数的信息。
2.传递实参:
2.1位置实参
def person(username,old):
print("I am" + username + ".")
print("I am" + old + "years old.")
person('Xixi','3')
输出的结果为:
I am Xixi.
I am 2 years old.
位置实参的顺序很重要!如果需要多次调用这个函数,只需再次调用person()即可。
2.1关键字实参
关键字实参的顺序无要求,因为Python知道各个值该存储到哪个形参中。下面两个函数调用是等效的:
def person(username,old):
person(username='aa', old='two')
person(old='one',username='aa')
注意:使用关键字实参时,务必准确地指定函数定义中的形参名。
2.2默认值:
在调用函数中给形参提供了实参时,Python将使用指定的实参值;否则,将使用形参的默认值。因此,给形参指定默认值后,可在函数调用中省略相应的实参。使用默认值可简化函数调用,还可清楚地指出函数的典型用法。
#将形参old 的默认值设置为'3'
def person(username,old='3'):
注意 :使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的实参。这让Python依然能够正确地解读位置实参。
2.3等效的函数调用
def pet(petname, anmal_type = 'cat'):
print("hhhhh")
#以下几种函数调用均是等效的
pet('xxx')
pet(petname = 'xxx')
pet('aaa','dog')
pet(petname = 'aaa', anmal_type = 'dog')
pet(anmal_type = 'dog', petname = 'aaa')
2.4避免实参错误
如果出现实参不匹配,就会报错。出现traceback
3.返回值
3.1返回简单值
在函数中,可使用return 语句将值返回到调用函数的代码行。函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值 。
def get_name(first_name, last_name):
"""返回整洁的姓名"""
full_name = first_name + ' ' + last_name
return full_name.title()
singer = get_name('jimi', 'hendrix')
print(singer)
3.2让实参变为可选的
def get_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.title()
singer = get_name('kiki', 'hix')
print(singer)
musician = get_name('jon', 'lua', 'joe')
print(singer)
3.3返回字典
def build_pet(name, age):
"""返回一个字典,其中包含有关一只宠物的信息"""
pet = {'first': name, 'last': age}
pet person
cat = build_person('kiki', '12')
print(cat)
4.传递列表
def build_pet(name):
for name in names:
greeting = "Hello, " + name.title() + "!"
print(greeting)
petnames = ['cat', 'dog', 'tiger']
build_pet(petnames)
4.1禁止函数修改列表
build_pet(list_name[:])
5.传递任意数量的实参:
可以在第一行的形参前面加个*,例如:def build_pet(*age):
5.1结合使用位置实参和任意数量实参
如果要让函数接受不同类型的实参,必须在函数定义中将任意数量实参的形参放在最后。Python先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。
def build_pet(name ,*age):
6.将函数存储在模块中:
6.1导入整个模块import
创建一个a.py文件,在创建一个b.py文件,就可以在第二个文件里导入第一个文件
6.2导入特定的函数
from xxx import xxx
通过用逗号分隔函数名,可根据需要从模块中导入任意数量的函数:
from xxx import function1,function2,function3
6.3使用as给函数指定别名
from B import A as mp
6.4使用as给模块指定别名
import A as mp
6.5导入模块中的所有函数,使用 *
from A import *
本文学习内容参照《Python编程:从入门到实践》