07.Python函数方法(函数的定义、参数、注释说明+递归+lambda+高阶函数+内置高阶函数+代码示例)

函数基础

函数定义

函数组成:函数一般包括函数定义符(def)、函数名、传入参数(形式参数,可为空)、返回值(使用return,可为空省略)、说明注释等内容。

PS:1、一个函数内只能用一个 return,象征着函数的结束,return 语句后边的语句不会执行;

2、传入参数有多个时,调用函数时的实际参数的位置应必须传入参数一致。

3、函数必须先定义,再调用,即函数定义必须在函数调用执行语句之前出现;

4、函数默认情况下不会自动执行,只有在被调用时才会执行其中的代码;

函数调用函数名(传入参数)

def greet(name):
    """
    打招呼的函数,接受一个名字作为参数。
    """
    return 'hello, '+name
    

# 函数的调用
print(greet("Alice"))  # 输出 "Hello, Alice!"

函数嵌套:指的是⼀个函数⾥面又调用或定义了另外⼀个函数。

def outer_function():
	# 外部函数
    print("这是外部函数")
    def inner_function():
		# 内部函数
        print("这是内部函数")
    # 调用内部函数
    inner_function()
# 调用外部函数
outer_function()
函数参数

概述:在Python中,函数的参数有位置参数、关键字参数、默认参数、可变长参数等类型

位置参数:最常见的参数类型,相当于 Java 的形式参数,在函数调用时,根据位置顺序将实际参数传递给形式参数。

关键字参数:通过指定参数名和对应的值来传递参数,而不依赖于它们的位置顺序。使用关键字参数可以提高代码的可读性,并且可以省略某些参数。

默认参数:也叫缺省参数,在函数定义时为参数指定默认值。如果没有提供相应的实际参数,则会使用默认值。

可变长参数:允许函数接受可变数量的参数。在Python中,有两种类型的可变长参数,不定长位置参数(使用 *args 来接收)、不定长关键字参数(使用 **kwargs 来接收)。

"""   位置参数   """
def greet(name, age):
    print("Hello, " + name + "! You are " + str(age) + " years old.")
greet("Alice", 25)

"""   关键字参数   """
def user(name='Nancy', fruit='pear'):
    print(f'{name}喜欢吃{fruit}')
user()
user('张三', '苹果')

"""   默认参数   """
def info(name, age, gender='男'):
    print(f'您的名字是{name}, 年年龄是{age}, 性别是{gender}')
info('张三', '26')
info('Nancy', '23', '女')

"""   不定长位置参数   """
def sum_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total
print(sum_numbers(1, 2, 3))  # 输出 6

"""   不定长关键字参数   """
def print_info(**kwargs):
    for key, value in kwargs.items():
        print(key + ": " + str(value), end=', ')
print_info(name="Alice", age=25)  # 输出 name: Alice, age: 25
递归函数

概述:会重复执行自身的过程,每次都处理一个更小的问题,直到达到终止条件,然后逐层返回结果。常用于如树的遍历、搜索算法和动态规划等场景。

特点:必须有出口(终止条件),函数内部⾃己调⽤自⼰。

def factorial(n):
    if n == 0:			# 终止条件,放在函数调用之前
        return 1
    else:
        return n * factorial(n - 1)
# 计算阶乘
result = factorial(5)
print(result)  # 输出 120
函数说明

概述:Python提供【 help(函数名) 】方法快速查询一个函数的说明注释,注释需要位于

函数进阶

lambda

概述:Lambda表达式是一种用于创建匿名函数的简洁语法。它通常由关键字 lambda 开头,后跟一个或多个参数、冒号( : )、以及一个返回结果的表达式。

格式:lambda 参数列表 : 返回值表达式,其中参数列表可以为空,也可以是位置参数、默认参数、可变参数等,只能返回⼀个表达式的值。

print((lambda: 100)())				# 100
print((lambda a: a)('hello world')) 				# hello world
print((lambda a, b, c=100: a + b + c)(10, 20)) 		# 130
print((lambda *args: count(args))(10, 20, 30)) 		# 返回值为元组
print((lambda *args: max(args))(10, 20, 30))		# 30
print((lambda **kwargs: kwargs)(name='python', age=20)) 	# 返回值为字典

students = [
	{'name': 'TOM', 'age': 20},
	{'name': 'ROSE', 'age': 19},
	{'name': 'Jack', 'age': 22}
]
# 按name值升序排列列
students.sort(key=lambda x: x['name'])
print(students)
# 按name值降序排列列
students.sort(key=lambda x: x['name'], reverse=True)
print(students)
# 按age值升序排列列
students.sort(key=lambda x: x['age'])
print(students)
高阶函数

概述:Python 支持高阶函数,高阶函数是指将一个或多个函数作为传入参数,或/并一个函数作为返回值的函数,它将函数作为数据进行处理。

def sum_num(a, b, f):
	return f(a) + f(b)

def self_def(x):
    return x ** 2

result1 = sum_num(-1, 2, abs)		# abs为Python内置的求绝对值函数,类似的有max、sum等
print(result1) 						# 结果:3

result2 = sum_num(-1, 2, self_def)
print(result2)  					# 结果:3

result3 = sum_num((1, 2), (2, 5), lambda a: a[0] * a[1])
print(result3)  					# 结果:12

result4 = sum_num((1, 2, 8), (2, 5, 3), max)
print(result4)  					# 3
内置高阶

概述:Python常用的内置高阶函数有 map( )、filter( )、reduce( ) 等,通过传入的函数,对可迭代对象进行操作并返回结果。

map:格式为【 map( func, iterable ) 】,将对象中的元素,根据 func 作一对一的映射迭代,并输出可迭代的 map 对象。

filter:格式为【 filter( func, iterable ) 】,将对象中的元素,根据 func 逐个进行判断,保留判断结果为 True 的元素,并返回可迭代的 filter 对象。

reduce:格式为【 reduce( func, iterable ) 】,其中 func 函数的输入必须为两个参数。

import functools

numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x ** 2, numbers)
print(list(squared))  	# 输出 [1, 4, 9, 16, 25]

odds = filter(lambda x: x > 2, numbers)
print(list(odds))  		# 输出 [3, , 5]

strings = ["Hello", " ", "World"]
combined = functools.reduce(lambda x, y: x + y, strings)
print(combined)  		# 输出 "Hello World"

nums = [(2, 5), (3, 3), (6, 1), (4, 7)]
sun_num = functools.reduce(lambda a, b: a + b, nums)
print(sun_num)			# 输出 (2, 5, 3, 3, 6, 1, 4, 7)

你可能感兴趣的:(#,Python,python,开发语言,pycharm)