(七)python函数

一、 函数:

  就是为了实现反复调用而进行的封装

二、定义函数

请添加图片描述

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)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤傲倾城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值