函数
使用函数的作用:
1. 降低编程难度
将一个复杂的大问题分解成一系列小问题,冉家将小问题划分为更小的问题,当问题细化为足够简单时,就可以分而治之,各个小问题解决了,大问题就迎刃而解了。
2. 代码重用
函数是一段可以重复多次调用的代码,提高效率
函数定义
def 函数名(参数1,参数2):
函数名可以以字母,数字或者下划线组成的字符串,但是不能以数字开头
当函数创建完成后,需要对函数调用
函数调用格式:
函数名(实参1,实参2)
实例:
def describe_pet(animal_type,pet_name):
print("\nI have a " + animal_type + '.')
print("My " + animal_type + "'s name is " + pet_name.title() + '.')
describe_pet('hamster','harry') ##调用函数describe_pet
执行结果:
I have a hamster.
My hamster's name is Harry.
形式参数和实际参数
定义函数时,函数名后面的括号变量称为形式参数
调用函数时,函数名后面的括号变量称为实际参数
函数多类型传值
n [1]: def fun(x,y,z): 定义函数
...: return x + y + z
...:
元组类型
In [2]: t1 = (2,3,4)
In [3]: fun(*t1) ###将元组的值传到函数的参数,需要加上*
Out[3]: 9
字典类型
In [4]: dic={'x':1,'y':3,'z':5}
In [6]: fun(**dic) ###将字典的值传到函数的参数,需要加上**
Out[6]: 9
函数返回值
函数的返回使用return语句,return后面可以是变量或者表达式
1.返回简单值
实例:
def get_formatted_name(first_name,last_name):
full_name = first_name + ' ' + last_name
return full_name.title() ##返回full_name变量
musician = get_formatted_name('jimi','hendrix') ##调用函数并传递实参
print(musician)
执行结果:
Jimi Hendrix
匿名函数
lambda函数时一种快速定义单行的最小函数,可以用在任何需要函数地方
格式:
lambda 变量1,变量2... :表达式
实例:
def fun(x,y):
return x * y
fun(2,3)
使用lambda函数
r = lambda x,y: x * y
r(2,3)
生成器(generator函数)
生成器的作用是一次产生一个数据项,并把数据项输出,generator函数可以在for循环中遍历,generator函数每次返回一个数据项的特性,使得迭代器的性能更佳
格式:
def 函数名(参数):
yield 表达式
实例:
def func(n):
for i in range(n):
yield i
for i in func(3): ##生成器可以通过for循环遍历
print(i)
r = func(3)
print(r.__next__()) ##使用next()输出
print(r.__next__())
print(r.__next__())
print(r.__next__())
执行结果
0 ##For循环遍历的结果
1
2
0 ##next函数结果
1
2
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/2018/day06/1.py", line 18, in <module>
print(r.__next__())
StopIteration
### 当n的值为3时,生成3个数字后,已经没有数据可生成,所以抛出异常StopIteration