首页 python基础语法
文章
取消

python基础语法

分支条件

if

for

while

数据结构

元组(Tuple)

元组(tuple)是一种序列(sequence)结构,而且是一种不可变序列。

创建元组

1
2
3
4
5
6
7
8
9
10
11
12
13
res = ()

res = tuple()

res = tuple([])

res = (1,)

res = 1, 2, 3, 4, 5, "a", "b", "c", "d", "e"

res = (1, 2, 3, 4, 5, "a", "b", "c", "d", "e")

res = tuple([1, 2, 3, 4, 5, "a", "b", "c", "d", "e"])

访问元组

1
2
3
4
5
6
item = res[0]

item = res[0:5]

# 拆包操作
item1, item2, item3, item4, item5, *item6 = res

遍历元组

1
2
3
4
5
for item in res:
    print(item)

for i, item in enumerate(res):
    print("{0} - {1}".format(i, item))

列表(List)

列表(List)也是一种序列结构,与元组不同,列表具有可变性,可以追加、插入、删除和替换列表中的元素。

创建列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
res = []

res = list()

res = list([])

res = [1]

res = [1, 2, 3, 4, 5, "a", "b", "c", "d", "e"]

res = list((1, 2, 3, 4, 5, "a", "b", "c", "d", "e"))

res = list([1, 2, 3, 4, 5, "a", "b", "c", "d", "e"])

res = [0] * 10

访问列表

1
2
3
4
5
6
item = res[0]

item = res[0:5]

# 拆包操作
item1, item2, item3, item4, item5, *item6 = res

操作列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 追加元素

res.append(6)

res.extend([7, 8])

res += ["f", "g", "h"]

# 插入元素

res.insert(13, 10)

# 替换元素

res[13] = 9

# 删除元素

res.remove(9)       # 按照元素删除

res.pop(12)         # 按照索引删除,并返回该索引上元素的值
res.pop()           # 如果没有索引则删除最大索引的元素

遍历列表

1
2
3
4
5
for item in res:
    print(item)

for i, item in enumerate(res):
    print("{0} - {1}".format(i, item))

列表推导式

1
new_list = [x**2 for x in range(10) if x > 1 if x < 5]

集合(Set)

集合(set)是一种可迭代的、无序的、不能包含重复元素的数据结构。

创建集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 可变集合

res = {}

res = set()

res = {1, 2, 3, 4, 5}

res = set((1, 2, 3, 4, 5))

res = set([1, 2, 3, 4, 5])

# 不可变集合

res = frozenset()

res = frozenset((1, 2, 3, 4, 5))

res = frozenset([1, 2, 3, 4, 5])

res = frozenset({1, 2, 3, 4, 5})

操作集合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 添加元素

res.add("a")

# 删除元素

res.remove("a")     # 如果元素不存在会报错

res.discard("a")    # 如果元素不存在不会报错

res.pop()           # 随机删除一个元素并返回元素值

# 清除集合

res.clear()

遍历集合

1
2
3
4
5
for item in res:
    print(item)

for i, item in enumerate(res):
    print("{0} - {1}".format(i, item))

集合推导式

1
new_set = {x % 2 for x in range(10) if x > 1 if x < 8}

字典(Dictionary)

字典(dict)是可迭代的,可变的数据结构,通过键来访问元素。

创建字典

1
2
3
4
5
6
7
8
9
10
11
12
13
res = dict()

res = {1: "a"}

res = dict(((1, "a"),))

res = dict([(1, "a")])

res = dict({1: "a"})

res = dict(zip([1, 2, 3], ["a", "b", "c"]))

res = dict(a = 1, b = 2, c = 3)

访问字典

1
2
3
4
5
6
7
8
9
10
11
res["a"]

res.get("a")

res.get("a", "DEFAULT_VALUE")

res.keys()

res.values()

res.items()

操作字典

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 增加键值对

res["d"] = 5

# 修改键值对

res["d"] = 4

# 删除键值对

del res["d"]

res.pop("d")

res.pop("d", "DEFAULT_VALUE")

res.popitem()

遍历字典

1
2
3
4
5
6
7
8
for key, value in res.items():
    print("{0} - {1}".format(key, value))

for key in res.keys():
    print(key)

for value in res.values():
    print(value)

字典推导式

1
2
3
res = {1: "a", 2: "b", 3: "c", 4: "d", 5: "e"}

new_dict = {k*2: v*2 for k, v in res.items() if k < 4}

函数

可变参数

1
2
3
4
5
6
7
8
def fun(*args, **kwargs):
    for arg in args:
        print("One of *args is {arg}".format(arg=arg))
    print()
    for key, value in kwargs.items():
        print("One of **kwargs is {key} - {value}".format(key=key, value=value))

fun("arg1", "arg2", "arg3", "arg4", "arg5", key1="value1", key2="value2", key3="value3", key4="value4", key5="value5")

常用模块

datetime

datetime 模块中提供了以下几个类:

  • datetime: 包含日期和时间

  • date: 包含日期

  • time: 包含时间

  • timedelta: 计算时间跨度

  • tzinfo: 时区信息

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
import datetime

datetime.datetime(2019, 11, 4, 23, 59, 59, 1000)

datetime.datetime.today()

datetime.datetime.now()

datetime.datetime.utcnow()

datetime.datetime.fromtimestamp(1572883199.001)

datetime.datetime.utcfromtimestamp(1572883199.001)

datetime.date(2019, 11, 4)

datetime.time(23, 59, 59, 1000)

# 日期时间计算

dt = datetime.datetime(2019, 11, 4, 23, 59, 59, 1000)

delta = datetime.timedelta(weeks=1,days=1)

dt += delta

# 日期格式化
dt = datetime.datetime.today()

dt.strftime('%Y-%m-%d %H:%M:%S.%f')

datetime.datetime.strptime(dt_str,'%Y-%m-%d %H:%M:%S.%f')

logging

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import logging
import logging.config

# 配置文件设置
logging.config.fileConfig("log.conf")

# 如果有了配置文件则不需要以下配置
logging.basicConfig(level=logging.ERROR,
                    filename='logging.log'
                    )

logger = logging.getLogger(__name__)

logger.debug("This is DEBUG log.")
logger.info("This is INFO log.")
logger.warning("This is WARNING log.")
logger.error("This is ERROR log.")
logger.critical("This is CRITICAL log.")

配置文件设置

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
[loggers]                           # 配置日志器
keys=root,simpleExample             # 日志器包含了 root 和 simpleExample

[logger_root]                       # 配置根日志器
level=DEBUG
handlers=consoleHandler             # 日志器对应的处理器

[logger_simpleExample]              # 配置 simpleExample 日志器
level=DEBUG
handlers=fileHandler                # 日志器对应的处理器
qualname=logger1                    # 日志器名字

[handlers]                          # 配置处理器
keys=consoleHandler,fileHandler     # 包含了两个处理器

[handler_consoleHandler]            # 配置 consoleHandler 日志器
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]               # 配置 fileHandler 日志器
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=('test.log','a')

[formatters]                        # 配置格式化器
keys=simpleFormatter                # 日志器包含 simpleFormatter

[formatter_simpleFormatter]         # 配置 simpleFormatter 格式化器
format=%(asctime)s-%(levelname)s-%(message)s
本文由作者按照 CC BY 4.0 进行授权