python3简明教程--函数

注:本实验来源于 实验楼:python3简明教程 作者: FrostSigh

索引:

项目Value
1,定义一个函数对函数的定义和调用
2,局部或全局变量global 及几个例子
3,默认参数值默认参数的机种情况(易错点)
4,关键字参数关键字参数使用
5,强制关键字参数强制使用规则
6,文档字符串调用函数文档
7,高阶函数什么是高阶函数 (map()函数
1,定义一个函数

使用关键字def来定义一个函数,语法:

def 函数名(参数):
	语句1
	语句2

例:

def sum(a, b):
	return a + b

res = sum(3, 5)
print(res)

在这里插入图片描述
例:根据上次写的回文检查程序,写一个函数,然后返回True 或者 false

def palindrom(s):
	return s == s[::-1]	#如果s == s[::-1]返回True,反之返回Flase

if __name__ == '__main__': #如果函数名称是main就执行。

	s = input("Enter a string: ")
	
	'''调用palindrom()函数,并传递参数s;如果返回True,执行if块;如果返回False,执行else块'''
	if palindrom(s):
		print("Yes!")
	else:
		print("No!")

在这里插入图片描述

2,局域或全局变量

通过几个例子搞清楚全局变量和局部变量。

def change():
	a = 90
	print(a)
	
a = 9

print("Before the function call ", a)
print("Inside change function ", end=' ')
change()
print("After the function call ", a)

"""
先对a赋值9,然后打印此时的a,调用change()函数,在函数内部对a赋值90,打印此时的a
。然后函数返回到原来位置的下一个指令,打印此时的a

--当我们在函数里写a = 90时,实际上创建了一个新的名为a的局部变量,这个变量只在函数里可用,
并且会在函数完成时销毁,即使这两个变量的名字相同,但他们不是同一个变量。
"""

print("-" * 50)


a = 9

def change():
	print(a)
	
change()

"""
先对a赋值9,然后调用change()函数,打印变量a的值
--在外面的a可作为全局变量
"""

print("-" * 50)

'''
a = 9
def change():
	print(a)
	a = 100
change()

"""
出错原因:在change()函数内部重新定义了一个局部变量。在执行print(a)时,不知道此时的
局部变量a的值,所以会报错。
"""

'''

a = 9
def change():
	global a
	print(a)
	a = 100
	
print("Before the function call ", a)
print("Inside change function ", end=' ')
change()
print("After the function call ", a)

"""
先对a赋值9,然后打印此时的a,调用change()函数,打印全局变量a;然后对全局变量a进行赋值100
,打印此时的a

---此时函数体能访问全局变量,。
"""

print("-" * 50)


def change():
	global a
	a = 90
	print(a)
	
a = 9
print("Before the function call ", a)
print("Inside change function ", end = ' ')
change()
print("After the function call ", a)


"""
先对a赋值9,然后打印此时的a;调用change()函数,把a作为全局变量,对全局变量a赋值90,打印
此时的a;然后打印此时的全局变量a

----通过关键字global,来告诉a的定义是全局的,因此在函数内部更改了a的值,函数外的a的值也
实际更改了。
"""

在这里插入图片描述

3,默认参数值

函数的参数可以有默认值,就是说我们如果对指定的参数变量没有给出任何值则会赋其默认值。
例如:
在这里插入图片描述
两个非常重要的地方:
其一,具有默认值的参数后面不能再有普通参数。比如:

f(a, b=90, c)

就是错误的。

其二,默认值只被赋值一次,因此如果默认值是任何可变对象时会有所不同。例如:


def f(a, data=[]):
	data.append(a)
	return data

print(f(1))
print(f(2))
print(f(3))

如列表,字典或大多数类的实例。此函数在调用过程中会累积传给它的参数。
在这里插入图片描述
可以修改为:


def f(a, data=None):
	if data is None:
		data = []
	data.append(a)
	return data

print(f(1))
print(f(2))
print(f(3))

在这里插入图片描述

4,关键字参数

函数可以通过关键字参数的形式来调用,形如 keyword = value

def func(a, b=5, c=10):
	print('a is', a, 'and b is', b, 'and c is', c, end = ' ')
	
func(12, 24)
print()
func(12, b=3)
print()
func(32, c=12, b=32)
print()

在这里插入图片描述
在函数调用时使用了变量名,比如f(12, c=23),我们将24赋值给c且b具有默认值。这就是关键字参数。

5,强制关键字参数

我们将函数的参数标记为只允许使用关键字参数。用户调用函数时只能对每一个参数使用相应的关键字参数。
在这里插入图片描述在这里插入图片描述

6,文档字符串

在python里我们使用文档字符串来说明如何使用代码。这对于交互模式非常有用,也能用于自动创建文档。
例:

import math

def longest_side(a, b):
	"""
	用函数来计算三角形的最长边的值:
	
	:a边:三角形的a边
	:b边:三角形的b边
	
	:return:第三条边(最长边)的长度,浮点型
	"""
	return math.sqrt(a*a + b*b)
	

if __name__ == '__main__':
	print(longest_side.__doc__)
	print(longest_side(3, 4))
	print(longest_side(7, 9))

在这里插入图片描述
通过调用函数的文档(longest.doc)对交互模式有很大作用。

7,高阶函数

高阶函数或仿函数可以接受函数作为参数的函数:

  • 使用一个或多个函数作为参数
  • 返回另一个函数作为输出
    例:
#定义一个函数
def high(st):
	'''接受一个列表参数,然后返回列表中的每一个元素的大写形式'''
	return [i.upper() for i in st]

#定义一个高阶函数
def test(f, st):
	'''接受一个函数作为第一个参数,一个列表为第二个参数;然后返回第一个参数的调用结果'''
	return f(st)

#定义一个列表
lst = ['python', 'Linux', 'Git']

#调用高阶函数test()并传递一个函数参数和一个列表
print(test(high, lst))

在这里插入图片描述

map()函数
map是python里非常有用的高阶函数。它接受一个函数和一个序列(迭代器)作为输入,然后对序列(迭代器)的每一个值应用这个函数,返回一个序列(迭代器),其包含应用函数后的结果。
例如:

lst = [1, 2, 3, 4, 5]

def square(num):
	'''返回所给数的平方'''
	
	return num*num

#调用map()函数,并向它传递1个函数和一个列表,然后以列表形式打印
print(list(map(square, lst)))

在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值