文章目录
一、 函数:
就是为了实现反复调用而进行的封装。
二、定义函数
1.形式参数:
由于定义函数时的参数不是实际参数,会在调用时传递给他们实际数据,所以称定义函数时的参数为形式参数,简称形参。(即函数中定义的变量)
2.实际参数:
称调用函数时传递的实际数据为实际参数,简称实参。
#coding-utf-8
#代码文件: ch08/ch8_1.py
def rect_area(width,height):
area = width * height
return area
def print_area(width,height):
area = width * height
print("{0} x {1} 长方形的面积:{2}".format(width,height,area))
- 其中width以及height均为形参。
三、调用函数
1.使用位置参数调用函数
调用函数的基本形式:再调用函数时传递的实参与定义函数时的形参顺序一致。(按照形参的顺序传递实参)
#coding-utf-8
#代码文件: ch08/ch8_2_1.py
def rect_area(width,height): #形参列表
area = width * height
return area
r_area = rect_area(320,480)
#实参列表,顺序与形参一致。其中320对应width,480对应height。
print("{0} x {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
2.使用关键字参数调用函数
调用函数时可以采用“关键字=实参”的形式,其中,关键字的名称就是定义函数时形参的名称。
#coding-utf-8
#代码文件: ch08/ch8_2_2.py
def rect_area(width,height): #形参列表
area = width * height
return area
r_area = rect_area(width=320, height=480)
#关键字的名称就是定义函数时形参的名称
print("{0} x {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
r_area = rect_area(width=480, height=320)
#实参不再受形参的顺序限制
print("{0} x {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
四、参数默认值
python无函数重载概念,使用参数默认值达到函数重载的效果。
#coding=utf-8
#代码文件:sh08/ch_3.py
def make_coffee(name="卡布奇诺"): #默认值
return "制作一杯{0}咖啡。".format(name)
coffee1 = make_coffee("拿铁") #提供参数
coffee2 = make_coffee() #没有提供参数,使用默认值
print(coffee1) #制作一杯拿铁咖啡
print(coffee2) #制作一杯卡布奇诺咖啡
五、可变参数
1.定义:
函数定义接受不确定数量的参数
2.基于元组的可变参数:
*可变参数
- *可变参数 在函数中被组装成一个元组。
#coding=utf-8
#代码文件:ch08/ch8_4_1.py
def sum(*numbers):
total = 0.0
for number in numbers:
total += number
return total
print(sum(100.0, 20.0, 30.0)) #输出150.0
print(sum(30.0, 80.0)) #输出110.0
3.基于字典的可变参数:
**可变参数
- **可变参数在函数中被组装成一个字典
#coding=utf-8
def show_info(**info):
print('-----show_info-----')
for key, value in info.items():
print('{0} - {1}'.format(key,value))
show_info(name='Tony', age=18, sex=True)
show_info(sutdent_name='Tony', sutdent_no='1000')
六、 函数中变量的作用域
1.全局变量:
在模块内定义的变量
2.局部变量:
在函数内定义的变量
3.将局部变量提升为全局变量
用global 例:global x
七、函数类型 function
1.一个函数可以作为另一个函数的返回值使用;也可以作为另一个函数参数使用。
2.过滤函数 filter()
- filter(function,iterable)
function:提供过滤规则的函数
#coding=utf-8
#提供过滤条件函数
def f1(x):
return x > 50 #找出大于50元素
datal = [66, 15, 91, 28, 98, 50, 7, 80, 99]
filtered = filter(f1,data1)
data2 = list(filtered) #转换为列表
print(data2)
3.映射函数 map()
- map(function ,iterable)
#coding=utf-8
#提供交换规则的函数
def f1(x):
return x *2 #交换规则乘以2
datal = [66, 15, 91, 28, 98, 50, 7, 80, 99]
filtered = map(f1,data1)
data2 = list(mapped) #转换为列表
print(data2)
4.lambda函数
- 用lambda关键字定义匿名函数(只使用一次,不想起名字的函数)
- lambda 参数列表: lambda体
def calc(opr):
if opr == '+'
return lambda~a, b: (a + b) #代替add函数
else:
return lambda a,b: (a - b) #代替sub函数
f1 = calc('+')
f2 = calc('-')
print("10 + 5 = {0}".format(f1(10,5)))
print("10 - 5 = {0}".format(f2(10,5)))