黑马python七、八章

黑马python七、八章

函数的多种参数使用形式

  • 位置参数
  • 关键字参数:通过“键=值”的形式传递参数。如果有位置参数,其必须在关键字参数前
  • 缺省参数:即默认参数。所有位置参数必须在默认参数前,包括定义和调用。
  • 不定长参数:
    • 位置传递
    • 关键字传递
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      def print_info(*args, **kwargs):

          print("不定长位置参数:")

          for arg in args:

              print(arg)

          print("不定长关键字参数:")

          for key, value in kwargs.items():

              print(f"{key}: {value}")



      # 调用函数,传递不定长位置参数和关键字参数

      print_info(1, 2, 3, name="Alice", age=25)
      在上述代码中:
  • *args用于接收不定长的位置参数,它会将传入的多个位置参数打包成一个元组。在print_info函数中,通过for循环遍历args元组来打印每个位置参数。
  • **kwargs用于接收不定长的关键字参数,它会将传入的多个关键字参数打包成一个字典。在print_info函数中,通过for循环遍历kwargs字典的items()来打印每个关键字参数及其对应的值。

lambda匿名函数

  1. 作为简单函数的快捷方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 普通函数

def add(x, y):

    return x + y



# lambda匿名函数

add_lambda = lambda x, y: x + y



print(add(3, 5))  

print(add_lambda(3, 5))  

在这个例子中,lambda x, y: x + y创建了一个与add函数功能相同的匿名函数,并将其赋值给add_lambda变量。这样可以在需要简单函数的地方快速定义函数,而不需要使用def关键字定义一个完整的函数。

  1. 与内置函数结合使用
1
2
3
4
5
6
7
8
9

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

# 使用lambda函数和map函数将列表中的每个元素平方

squared_numbers = list(map(lambda x: x ** 2, numbers))

print(squared_numbers)  

这里map函数需要一个函数作为参数,lambda x: x ** 2定义了一个匿名函数,用于计算每个元素的平方,然后map函数将这个匿名函数应用到numbers列表的每个元素上,最后将结果转换为列表并打印。

  1. 作为排序的键函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

students = [

    {'name': 'Alice', 'age': 20},

    {'name': 'Bob', 'age': 22},

    {'name': 'Charlie', 'age': 19}

]

# 按照学生的年龄排序

sorted_students = sorted(students, key=lambda x: x['age'])

print(sorted_students)  

在对students列表进行排序时,sorted函数的key参数接受一个函数,用于指定排序的依据。lambda x: x['age']定义了一个匿名函数,返回每个学生字典中的'age'值,sorted函数根据这个值对学生列表进行排序。

mode三种基础访问模式

  • r:只读,指针放开头,默认模式。
  • w:只写,文件存则删原内容从头编,不存在则建新。
  • a:追加,文件存则新内容接后,不存在则建新。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    # 打开文件获得文件对象

    file_object = open('example.txt', 'r', encoding='utf-8')  

    # 读取指定长度字节(这里假设读取10个字节)

    content = file_object.read(10)  

    print(content)  

    # 读取一行

    line = file_object.readline()  

    print(line)  

    # 读取全部行,得到列表

    lines = file_object.readlines()  

    print(lines)  

    # for循环文件行,一次循环得到一行数据

    for line in file_object:  

        print(line)  

    # 关闭文件对象

    file_object.close()  



    # 通过with open语法打开文件,可以自动关闭

    with open('example.txt', 'r', encoding='utf-8') as f:  

        content = f.read()  

        print(content)
  • 不管是read还是readline(s)都是使用的指针,因此如果其前面有read相关命令,后面会接着其读。
  • 如果使用read()不加num参数则会读取全文。
  • 如果不关闭文件则程序会占用文件。

文件的写出、追加

write()写入到内存,flush()在打开文件的状态下从内存写入硬盘,如果不使用flush()close()也会在文件关闭时写入硬盘。


黑马python七、八章
https://blakehansen130.github.io/2025/01/19/黑马python七、八章/
发布于
2025年1月19日
许可协议