python之函数的进阶用法 可变元组参数:可以接受多个实际参数的值# *args *gfd 都可以,但 一般约定用args要结合之前的形参、实参、默认参数来理解记忆。

一、函数形参:

1.*args


    可变元组参数:可以接受多个实际参数的值

# *args   *gfd 都可以,但 一般约定用args

def my_fun(a, b, *args, c):
 print(a, b, args, type(args), c)
my_fun(10, 20, 30, 15, 50, c=100)

要结合之前的形参、实参、默认参数来理解记忆。
    

2.**kargs

        可变字典你操作:可以接收多个关键字参数

         是一个特殊的语法,用于在函数定义中接收任意数量的关键字参数。

         只能接收关键字参数,不能接收位置参数。

        不能与同名的普通关键字参数一起使用。

def my_fun(a, b, *args, c=18, **kargs):
 print(a, b, c, args, type(args), kargs, type(kargs))
my_fun(10, 20, 30, 40, c=15, d=48, e=415)

注意: 不能重复赋值,一个萝卜对一个坑。

3.kwargs 与 *args 的区别

        *args 用于接收任意数量的位置参数,返回类型是元组。 

        **kwargs 用于接收任意数量的关键字参数,返回类型是字典。

        

D:\python2412\pythonProject\venv\Scripts\python.exe D:\python2412\pythonProject\48.函数进阶.py 
10 20 15 (30, 40) {'d': 48, 'e': 415} 
进程已结束,退出代码为 0

这里可以看出这两个形参返回的类型。 

二、递归函数:

               1. 核心理解                             

自己调用自己

               2.一定要有递归出口

               3.有能力循环

一个简单案例:1+2+3+4+5

def get_sum(n):
 if n == 1:
 return 1
 else:
 return n + get_sum(n - 1)
print(get_sum(5))

 进阶用法:用递归查看指定路径所有文件

import os
def get_files(path):
 # 判断路径是否存在
 if not os.path.exists(path):
 print("路径不存在")
 return
 # 遍历路径下的所有文件和文件夹
 for item in os.listdir(path):
 # 拼接完整的文件或文件夹路径
 item_path = os.path.join(path, item)
 # 如果是文件夹,则递归调用该函数
 if os.path.isdir(item_path):
 get_files(item_path)
 # 如果是文件,则打印文件路径
 else:
 print(item_path)
# 调用函数
get_files(r"D:\python2412")

这里就需要用到前面的知识了 ,比如os模块和os方法,因此经常复习学过的知识是一个好习惯,也能让你对这些知识运用的越来越熟练。

三、匿名函数:

匿名函数(Anonymous Function)在 Python 中通常使用 lambda 关键字来定义。匿名函数是一种没有函数名的函数,通常用于定义简单的、一次性的函数。下面是对匿名函数的详细介绍:

1. 匿名函数的基本概念

  • 定义方式:使用 lambda 关键字定义,语法格式为 lambda arguments: expression。
  • 特点
    • 匿名函数没有函数名。
    • 匿名函数只能包含一个表达式,且返回该表达式的结果。
    • 匿名函数通常用于简单的操作,不适合复杂的逻辑。

2. 匿名函数的使用示例

示例 1:基本使用

# 定义一个匿名函数,计算两个数的和
 

add = lambda x, y: x + y
# 调用匿名函数
result = add(3, 5)
print(result)

# 输出: 8

示例 2:在 sorted 函数中使用

# 使用 sorted 函数和匿名函数按字典值排序
 

data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}, {'name': 'Charlie', 'age': 35}]
sorted_data = sorted(data, key=lambda x: x['age'])
#打印排序后的结果
print(sorted_data)

# 输出: [{'name': 'Bob', 'age': 25}, {'name': 'Alice', 'age': 30}, {'name': 'Charlie', 'age': 35}]

3. 匿名函数的应用场景

  • 简单操作:适用于简单的数学运算、条件判断等。
  • 高阶函数:常用于 map、filter、sorted 等高阶函数中,作为参数传递。
  • 临时函数:在需要临时定义一个简单函数时,使用匿名函数可以避免定义一个完整的函数。

4. 匿名函数的注意事项

  • 表达式限制:匿名函数只能包含一个表达式,不能包含复杂的逻辑。
  • 可读性:虽然匿名函数可以简化代码,但过度使用会降低代码的可读性。
  • 命名:虽然匿名函数没有函数名,但可以将匿名函数赋值给一个变量,以便多次调用。

5. 匿名函数与普通函数的对比

  • 普通函数
    • 使用 def 关键字定义。
    • 可以包含多个语句和复杂的逻辑。
    • 有函数名,可以多次调用。
  • 匿名函数
    • 使用 lambda 关键字定义。
    • 只能包含一个表达式。
    • 没有函数名,通常用于一次性的简单操作。

四、系统函数

在 Python 中,系统函数通常指的是那些由 Python 标准库提供的内置函数,这些函数提供了丰富的功能,用于处理各种常见的任务,如数据类型转换、数学运算、文件操作等。下面是一些常用的系统函数:

"""
len             返回可迭代类型长度
print           输出
input          输入
max           最大值
min            最小值
sorted        对可迭代类型排序
id               返回元素对应的唯一标识
abs            绝对值
all              所有元素都是真 结果返回True  为空返回True
any            任意元素是真 结果返回True  为空返回False
ascii asc    编码
bin             将十进制转二进制
hex            将十进制转十六进制
oct             将十进制转八进制
open          文件操作
pow           次方
callable      是否可以调用 是否可以跟()  函数可以调用
ord(字符)   返回字符对应的unicode
chr(unicode数字)  返回对应的字符
divmod()   求商与余数
round        四舍五入
sum           求和

"""

import json
print(id([1, 2, 3]))
print(abs(-50))
print(all([True, True, "hello"]), all([True, True, ""]), all([]))
print(any([1, 0, False]), all([]))
print(json.dumps("中国人"), ascii("中"))
print(json.dumps("中国人", ensure_ascii=False))

一定要有自己的函数解释代码,每当复习时脑海里要有对应的代码案例。这样你才会在不断使用中积累自己的代码经验。

作者:Joshuahgk原文地址:https://blog.csdn.net/Joshuahgk/article/details/145061976

%s 个评论

要回复文章请先登录注册