前面介绍的函数太简单了:
以下是 20 个不同的 Python 函数实例
下面深入一点点:
以下是20个稍微深入一点的,使用Python语言定义并调用函数的示例程序:
20个函数实例
- 简单函数调用
def greet():print("Hello!")greet()
- 带参数的函数
def greet(name):print("Hello, " + name + "!")greet("Alice")
- 返回值的函数
def add(x, y):return x + yresult = add(3, 5)
print(result)
- 默认参数
def greet(name="World"):print("Hello, " + name + "!")greet()
greet("Alice")
- 可变参数
def add(*args):total = 0for num in args:total += numreturn totalresult = add(1, 2, 3, 4, 5)
print(result)
- 关键字参数
def greet(name, age):print("Hello, " + name + "! You are " + str(age) + " years old.")greet(name="Alice", age=25)
- 使用lambda创建匿名函数
double = lambda x: x * 2
print(double(5))
- 递归函数
def factorial(n):if n == 0 or n == 1:return 1else:return n * factorial(n-1)result = factorial(5)
print(result)
- 函数作为参数传递
def add(x, y):return x + ydef operation(func, a, b):return func(a, b)result = operation(add, 3, 4)
print(result)
- 返回函数
def make_multiplier(n):def multiplier(x):return x * nreturn multipliertimes3 = make_multiplier(3)
print(times3(5))
- 在函数中修改列表
def add_one(numbers):for i in range(len(numbers)):numbers[i] += 1my_list = [1, 2, 3, 4]
add_one(my_list)
print(my_list)
- 使用assert断言
def divide(x, y):assert y != 0, "Cannot divide by zero!"return x / yresult = divide(10, 2)
print(result)
- 函数递归调用
def fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)print(fibonacci(7))
- 匿名函数与map函数结合
nums = [1, 2, 3, 4, 5]
doubles = list(map(lambda x: x * 2, nums))
print(doubles)
- 使用filter过滤列表
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums)
- 使用reduce进行累积计算
from functools import reducenums = [1, 2, 3, 4, 5]
total = reduce(lambda x, y: x + y, nums)
print(total)
- 列表推导式应用
squared = [x**2 for x in range(10)]
print(squared)
- 生成器函数的定义与使用
def square_generator(n):for i in range(n):yield i**2squared = square_generator(5)
print(list(squared))
- 装饰器的使用
def my_decorator(func):def wrapper():print("Something is happening before the function is called.")func()print("Something is happening after the function is called.")return wrapper@my_decorator
def say_hello():print("Hello!")say_hello()
- 使用functools.partial创建偏函数
from functools import partialdef power(x, y):return x ** ysquare = partial(power, y=2)
cube = partial(power, y=3)print(square(5))
print(cube(5))
函数参考基础知识
在 Python 中,函数使用关键字 def
来定义,后面跟着函数名和参数列表,然后是一个冒号,之后是函数体,包含了函数的具体操作和返回值。例如:
def greet(name):return "Hello, " + name
以上是一个简单的函数定义,函数名为 greet
,接受一个参数 name
,返回一个拼接了 "Hello, " 和 name
的字符串。
Python 函数还支持默认参数值和关键字参数,可以在定义函数时为参数指定默认值,也可以通过关键字参数来在调用函数时明确指定参数的值。这使得函数在使用时更加灵活。
在 Python 中,函数也支持返回多个值,实际上,Python 的函数返回的是一个元组(tuple),即使看起来只有一个值。这让函数可以返回多个数据,提高了函数的灵活性。
另外,在 Python 中函数也可以嵌套定义,即在一个函数内部再定义一个函数。这种嵌套定义的函数称为内部函数,可以帮助组织代码,提高代码的可读性。
Python 还支持匿名函数,即 lambda 函数,可以用来编写简单的函数,通常用于传递给高阶函数或需要一个简短的函数定义的场合。
总的来说,Python 的函数是 Python 编程中不可或缺的部分,通过函数可以将代码结构化、模块化,提高代码的重用性和可维护性,是 Python 编程中非常重要的基础知识之一。
相关学习:
以下是 20 个不同的 Python 函数实例
我的图书
下面两本书欢迎大家参考学习。
OpenCV轻松入门
李立宗,OpenCV轻松入门,电子工业出版社,2023
本书基于面向 Python 的 OpenCV(OpenCV for Python),介绍了图像处理的方方面面。本书以 OpenCV 官方文档的知识脉络为主线,并对细节进行补充和说明。书中不仅介绍了 OpenCV 函数的使用方法,还介绍了函数实现的算法原理。
在介绍 OpenCV 函数的使用方法时,提供了大量的程序示例,并以循序渐进的方式展开。首先,直观地展示函数在易于观察的小数组上的使用方法、处理过程、运行结果,方便读者更深入地理解函数的原理、使用方法、运行机制、处理结果。在此基础上,进一步介绍如何更好地使用函数处理图像。在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的实例来说明问题,避免使用过多复杂抽象的公式。
本书适合计算机视觉领域的初学者阅读,包括在校学生、教师、专业技术人员、图像处理爱好者。
本书第1版出版后,深受广大读者朋友的喜爱,被很多高校选为教材,目前已经累计重印9次。为了更好地方便大家学习,对本书进行了修订。
计算机视觉40例
李立宗,计算机视觉40例,电子工业出版社,2022
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书以OpenCV-Python(the Python API for OpenCV)为工具,以案例为载体,系统介绍了计算机视觉从入门到深度学习的相关知识点。
本书从计算机视觉基础、经典案例、机器学习、深度学习、人脸识别应用等五个方面对计算机视觉的相关知识点做了全面、系统、深入的介绍。书中共介绍了40余个经典的计算机视觉案例,其中既有字符识别、信息加密、指纹识别、车牌识别、次品检测等计算机视觉的经典案例,也包含图像分类、目标检测、语义分割、实例分割、风格迁移、姿势识别等基于深度学习的计算机视觉案例,还包括表情识别、驾驶员疲劳监测、易容术、识别年龄和性别等针对人脸的应用案例。
在介绍具体的算法原理时,本书尽量使用通俗易懂的语言和贴近生活的示例来说明问题,避免使用复杂抽象的公式来介绍。
本书适合计算机视觉领域的初学者阅读,适于在校学生、教师、专业技术人员、图像处理爱好者使用。