python学习笔记——函数

在程序中需要反复执行的某些代码,可用函数将它们封装起来。函数具有函数名、参数和返回值。可以在模块中但是类之外定义,作用域是当前模块,我们称之为函数,也可在别的函数中定义,我们称之为嵌套函数,还可在类中定义,我们称之为方法。
一、定义函数
def 函数名(形式参数列表):
    函数体
    return 返回值

如果没有数据返回则可省略return语句

由于定义函数时的参数不是实际数据,会在调用函数时传给它们实际数据,所以称定义函数时的参数为形式参数,简称形参;称调用函数时传递的实际数据为实际参数,简称实参。可将形参理解为在函数中定义的变量。

# coding=utf-8

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))

C语言有函数重载,即可定义多个同名函数,但是参数列表不同。python中没有函数重载,而是为函数的参数提供默认值实现。

# coding=utf-8

def make_coffee(name="卡布奇诺"):
	return "制作一杯{0}咖啡。".format(name)

coffee1 = make_coffee("拿铁")
coffee2 = make_coffee()

print(coffee1)  # 制作一杯拿铁咖啡。
print(coffee2)  # 制作一杯卡布奇诺咖啡。

二、可变参数
python中的函数可定义接收不确定数量的参数,这种参数被称为可变参数。可变参数有两种,即在参数前加*或**。
1. 基于元组的可变参数
*可变参数在函数中被组装成一个元组

# coding=utf-8

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

2. 基于字典的可变参数
**可变参数在函数中被组装成一个字典

# 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='Jack', age=20, sex=False)
show_info(student_name='Jack', student_no='2100')

四、函数中变量的作用域
全局变量:模块内
局部变量:函数内

# coding=utf-8

# 创建全局变量x
x = 20

def print_value():
	# global x  # 将x变量提升为全局变量
	x = 10
	print("函数中x = {0}".format(x))

print_value()
print("全局变量x = {0}".format(x))

五、函数类型
python中的任意一个函数都有数据类型,这种数据类型是function,被称为函数类型。
1.一个函数可作为另一个函数的返回值使用。
2. 一个函数可作为另一个函数的参数使用。

# coding=utf-8

# 定义加法函数
def add(a, b):
	return a + b

# 定义减法函数
def sub(a, b):
	return a - b

# 定义平方函数
def square(a):
	return a * a

# 定义计算函数
def calc(opr):
	if opr == '+':
		return add
	else:
		return sub

f1 = calc('+') #f1实际上是add函数
f2 = calc('-') #f2实际上是sub函数
print(type(f1))
print("10 + 5 = {0}".format(f1(10, 5)))
print("10 - 5 = {0}".format(f2(10, 5)))

六、过滤函数filter()
filter(function,iterable)

# coding=utf-8

# 提供过滤条件函数
def f1(x):
	return x > 50 # 找出大于50的元素

data1 = [75, 27, 16, 61, 95, 83, 29, 51, 67,101]
filtered = filter(f1, data1)
print(type(filtered))
data2 = list(filtered)
print(data2)

七、映射函数map()
map(function,iterable)

# coding=utf-8
# 代码文件: ch8_6_3.py

# 提供变换规则的函数
def f1(x):
	return x * 2 # 变换规则乘以2

data1 = [75, 27, 16, 61, 95, 83, 29, 51, 67,101]
mapped = map(f1, data1)
print(type(mapped))
data2 = list(mapped)     # 转换为列表
print(data2)

八、lambda函数
lambda 参数列表:lambda体
注意:lambda体只能是一条语句
在python中使用lambda关键字定义匿名函数,lambda关键字定义的函数也被称为lambda函数。

# coding=utf-8
# 代码文件:ch8_7.py

def calc(opr):
	if opr == '+':
		return lambda a, b: (a + b)  #替代add函数
	else:
		return lambda a, b: (a - b)  #替代sub函数

f1 = calc('+') #f1实际上是add函数
f2 = calc('-') #f2实际上是sub函数
print(type(f1))
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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值