8.1 定义函数
def rect_area(width,height):
area = width * height
return area
def print_area(width,height):
area = width * height
print("{0} × {1} 长方形的面积:{2}".format(width,height,area))
8.2.1 使用位置参数调用函数
def rect_area(width,height):
area = width * height
return area
r_area = rect_area(320,480)
print("{0} × {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
8.2.2 使用关键字参数调用函数
def rect_area(width,height):
area = width * height
return area
r_area = rect_area(width = 320,height = 480)
print("{0} × {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
r_area = rect_area(width = 320,height = 480)
print("{0} × {1} 长方形的面积:{2:.2f}".format(320,480,r_area))
8.3 参数的默认值
def make_coffee(name = "卡布奇诺"):
return "制作一杯{0}咖啡".format(name)
coffee1 = make_coffee("拿铁")
coffee2 = make_coffee()
print(coffee1) #制作一杯拿铁咖啡
print(coffee2) #制作一杯卡布奇诺咖啡
8.4 可变参数
def sum(*numbers):
total = 0.0
for number in numbers:
total += number
return total
print("100 + 20 + 30 =",sum(100.0,20.0,30.0))
print("30 + 20 =",sum(30.0,20.0))
8.4.2 基于字典的可变参数
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(student_name = "Tony",student_no = 1000)
8.5 函数中变量的作用域
#创建全局变量x
x = 20
def print_value():
x = 0
print("函数中 x = {0}".format(x))
print_value()
print("全局变量 x = {0}".format(x))
#创建全局变量x
x = 20
def print_value():
global x #将x变量提升为全局变量
x = 10
print("函数中 x = {0}".format(x))
print_value()
print("全局变量 x = {0}".format(x))
8.6.1 理解函数类型
#定义加法函数
def add(a,b):
return a + b
#定义减法函数
def sub(a,b):
return a - b
#定义计算函数
def calc(opr):
if opr == '+':
return add
else:
return sub
#定义平方函数
def square(a):
a * a
f1 = calc('+') #f1实际上是add()函数
f2 = calc('-') #f2实际上是sub()函数
print("10 + 5 = {0}".format(f1(10,5)))
print("10 - 5 = {0}".format(f2(10,5)))
8.6.2 过滤函数filter()
#提供过滤条件函数
def f1(x):
return x > 50 #找出大于50的元素
data1 = [65,15,91,28,98,50,7,80,99]
print(data1)
filtered = filter(f1,data1) #转换为列表
data2 = list(filtered)
print(data2)
8.6.3 映射函数map()
data1 = [65,15,91,28,98,50,7,80,99]
filtered = filter(lambda x: (x > 50), data1)
print(data1)
data2 = list(filtered)
print(data2)
mapped = map(lambda x:(x * 2), data1)
print(data1)
data3 = list(mapped)
print(data3)
8.7 lambda()函数
def calc(opr):
if opr == '+':
return lambda a, b: (a + b)
else:
return lambda a, b: (a - b)
f1 = calc('+') #f1实际上是add()函数
f2 = calc('-') #f2实际上是sub()函数
print("10 + 5 = {0}".format(f1(10,5)))
print("10 - 5 = {0}".format(f2(10,5)))
8.8 使用更多的lambda()函数
data1 = [66,15,91,28,98,50,7,80,99]
print(data1)
filtered = filter(lambda x:(x > 50),data1)
data2 = list(filtered)
print(data2)
filtered = map(lambda x:(x * 2),data1)
data3 = list(filtered)
print(data3)