Python 中常用函数(持续更新)

1. 遍历

1.1. 获取 list 索引和值

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标

1
2
3
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
for index, value in enumerate(seasons):
print(index, value) // 0 Spring、1 Summer、2 Fall、3 Winter

1.2. 遍历 dict

  • 遍历 key
  • 遍历 value
  • 遍历 entity
  • 同时遍历 key 和 value
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
a = {'a': '1', 'b': '2', 'c': '3'}
# 1
for key in a:
print(key+':'+a[key])
for key in a.keys():
print(key+':'+a[key]

# 2
for value in a.values():
print(value)

# 3
for entity in a.items():
print(entity)

# 4
for key,value in a.items():
print(key+':'+value)
for (key,value) in a.items():
print(key+':'+value)

2. 三目运算

max = a if a > b else b

3. 参数

  • 作为函数定义时:
    • *参数:收集所有未匹配的位置参数组成一个 tuple 对象,局部变量args指向此tuple对象
    • **参数:收集所有未匹配的关键字参数组成一个 dict 对象,局部变量kwargs指向此dict对象
  • 作为函数调用时:
    • *参数:用于解包 tuple 对象的每个元素,作为单独的位置参数传入到函数中
    • **参数:用于解包 dict 对象的每个元素,作为单独的关键字参数传入到函数中
1
2
3
4
5
6
7
8
9
10
# 函数定义
def temp(*args,**kwargs):
pass

# 函数调用
my_tuple = ("hello","world","python")
temp(*my_tuple) # 等同于 temp("hello","world","python")

my_dict = {"name":"Tom","age":20}
temp(**my_dict) # 等同于 temp(name="Tom",age=20)

1. 单星号

  1. 将所有参数以元组(tuple)的形式导入

    1
    2
    3
    4
    5
    6
    def foo(param1, *param2):
    print (param1)
    print (param2)
    foo(1,2,3,4,5)
    # 1
    # (2, 3, 4, 5)
  2. 解压参数列表

    1
    2
    3
    4
    5
    def foo(runoob_1, runoob_2):
    print(runoob_1, runoob_2)
    l = [1, 2]
    foo(*l)
    # 1 2

2. 双星号

将参数以字典的形式导入,字典对象传入时需要使用双星号

1
2
3
4
5
6
7
8
9
10
11
12
def bar(param1, **param2):
print (param1)
print (param2)
bar(1,a=2,b=3)
di = {'e': 5, 'f': 6, 'g': 7}
bar(4, **di)
"""
1
{'a': 2, 'b': 3}
4
{'e': 5, 'f': 6, 'g': 7}
"""

4. 文件路径操作

  • 获取当前执行脚本的绝对路径 : os.path.abspath(__file__)
  • 获取文件的绝对路径 : os.path.abspath(path)
  • 获取文件的父级路径 : os.path.dirname(path)
  • 获取文件的文件名 : os.path.basename(path)
  • 将全路径分解为 (文件夹,文件名) 的元组 : os.path.split(path),效果等于 (dirname,basename)
  • 将全路径分解为 (路径名,文件扩展名) 的元组 : os.path.splitext(path)
  • 判断路径是一个文件 : os.path.isfile(path)
  • 判断路径是一个目录 : os.path.isdir(path)

5. 遍历目录

  • os.walk : 会继续遍历子目录下的文件,返回三元组 (dirpath, dirnames, filenames)
  • os.listdir : 不会嵌套遍历,返回包含由 path 指定目录中条目名称组成的列表
1
2
3
4
5
6
7
8
9
10
11
import os

def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
print("root", root) # 当前目录路径
print("dirs", dirs) # 当前路径下所有子文件夹
print("files", files) # 当前路径下所有非子文件夹的文件

def file_name(file_dir):
for files in os.listdir(file_dir): # 文件和目录都会列出
print("files:", files)

6. 字符串占位符

类似 java String.format() 方法,如果要在其中使用 {},需要使用原字符转义 {{` 和 `}}

1
2
3
s1 = "hello {}".format("world")     // hello world
s2 = "hello {{}}".format("world") // hello {}
s3 = "hello {{{}}}".format("world") // hello {world}

7. join

list

1
2
list = ["hello","world","python"]
print(" ".join(l)) // hello world java