Python 语言指引

Python 语言指引

基础

Python 使用 # 添加注释信息

if __name__ == '__main__':  # 当文件被直接运行时

变量

Python 的数据有类型,但是 Python 变量没有类型,声明变量不需要关键字。

# 给变量 name 赋值字符串
name  = "Moha Online"
score = 100    # 给变量 score 赋值 100

Python 3.5 之后的版本添加了类型标注功能,但是 Python 还是弱类型的语言。

name: int = "Moha Online"

Python 3.6 之后,字符串前加 f(format)的格式字符串(f-strings)可用花括号 {} 引用变量或变量及其方法。

f"Hello, {name}!"
f"Hello, {name.title()}!"

常量

Python 无内建常量机制。

数值

整数相除得浮点数。Python 3.6+ 可在整数中加下划线 _,使大数在代码中易读。

字符串

f 字符串中的 {} 花括号用于转义,转为变量、方法的结果,输出花括号时双写。三双引号内文字可换行,用于生成 API 文档。

常用方法 作用
str.rstrip() 去除字符串右边白字符(空格、换行、制表符)

逻辑控制

if 条件,for 循环,末尾跟 : 冒号。多个条件判断用 and 或 or 连接。pass / break 可以跳过或退出循环。

条件测试符号 意义
==
!=
<=
>=
in 元素是否在集合里
for number in range():
car = 'bmw'
car == 'bmw'                   # True
car == 'bmw' and car != 'audi' # True

序列与集合

函数 作用
( , , ) Tuple
set(序列) => { , } 去重生成 set 对象
sorted(序列) 排序

列表推导式

newlist = [expression for item in iterable if condition == True]
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

# Replace output
newlist = [x if x != "banana" else "orange" for x in fruits]

print(newlist) # output is: ['apple', 'orange', 'cherry', 'kiwi', 'mango']

列表操作

# 切割
fruits[:3]  # ["apple", "banana", "cherry"]

# 复制
my_foods = fruits[:]

# 添加
fruits.append('pear')

# 逻辑判断
'apple' in fruits  # True

元组 tuple

只读的列表,小括号 ( ) 定义。

字典

对象,花括号 { } 定义,方括号 [ ] 引用确定存在的属性,.get(KEY) 引用不确定存在的属性,不存在时返回 None。调用 .items() 的结果可遍历属性。

# 遍历
for key, value in dictionary.items():

# 只遍历属性名
for key in dictionary:
for key in dictionary.keys():

集合 set

花括号 { } 定义,无序、非重元素集。

函数

有默认值的形参放最后。变长参数转 tuple 后传入 *形参。变长键值对转 dictionary 后传入 **形参。函数声明下一行用 3 双引号写 API 文档。

__表示私有,_表示保护。

语法 作用
class 类名: 定义
class 类名(父类名) 继承
= 类名( ) 调用类的 __init__ 函数实例化对象
对象名.变量名 访问、设置类中通过 self. 定义的变量
对象名.函数名
函数名 作用
__init__(self, ...) 构造函数,self Python 自动传入
super() 返回父类对象

模块 Module

.py 结尾的文件。

语法 作用
import 主文件名 导入模块
from 主文件名 import 函数名 导入某函数
from 主文件名 import * 导入所有函数
import 主文件名 as 别名 有重名模块时赋别名
from 主文件名 import 函数名 as 别名 有重名函数时赋别名

常用内置模块 

常用模块 常用函数 作用
csv reader = csv.reader(LINES)
csv for row in reader
json .dumps(OBJECT) 对象转 JSON 字符串
json .loads(STRING) JSON 字符串转对象
random randint, choice
pathlib Path(FILE_PATH) 文件处理
pathlib .read_text()
pathlib .write_text(STRING) 覆写字符串到文件

第三方库

用 pip 管理。

库名
matplotlib
plotly 交互式数据可视化网页
pytest
pygame 游戏开发

matplotlib

import matplotlib.pyplot as plt
plt.style.available

fig, ax = plt.subplots()
ax.plot([], [])
plt.show()

plotly

# 基于地图的散点图
import plotly.express as pe
import pandas as p


fig = pe.scatter_geo(lat=lats, lon=lons, size=mags, title=title)
# pe.colors.named_colorscales()
fig = pe.scatter_geo(lat=lats, lon=lons, size=mags, title=title,
        color=mags,
        color_continuous_scale='Viridis',
        labels={'color':'Magnitude'},
        projection='natural earth',
    )
fig.show()

# 隐藏 size 需要同时提供 DataFrame 和 hover_data 参数
f = p.DataFrame({'lat':lats, 'lon':lons, 'color': mags, 'size': mags})
fig = pe.scatter_geo(f, lat='lat', lon='lon', size='size', title=title,
        color='color',
        color_continuous_scale='Viridis',
        labels={'color':'magnitude'},
        projection='natural earth',
        hover_data={'size': False},
    )

Pygame

import pygame
常见语句 作用
pygame.init()
self.clock = pygame.time.Clock()
self.clock.tick(60) 设置帧率

错误处理

try:

except FileNotFoundError:

except ValueError:
  raise ValueError("EXPLAIN")

except: # 处理所有其他错误

else:
类型 意义
KeyboardInterrupt 用户终止进程
ValueError 内部函数参数错误

参考文档

Author: njun
njun's picture
Updated: 2023/04/04