0% found this document useful (0 votes)
7 views37 pages

Python1 1

Uploaded by

z1812332403
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views37 pages

Python1 1

Uploaded by

z1812332403
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

Python 入门

林立宇
地点:复旦大学张江校区

时间: 2019/10/8
目录

• Python 环境配置
• 基本数据类型
• 语句
• 函数
•类
• 模块
• 参考文献
Python 环境配置

• 编译环境
• 从源文件安装:
• [Link]
• Ubuntu: 默认已安装 python3 环境,若有需要,可通过 sudo apt-get install python3.x
安装特定版本
• Anaconda
• [Link] 下载 anaconda (默认为 python3.7 )
• 在终端输入 conda create –n xxx python=3.x 可以获得特定 python 版本的子环境
• 激活子环境: conda activate xxx
• 退出子环境: conda deactivate
• 包的安装工具: pip install xxx
• Ubuntu : sudo apt-get install python-pip
• Anaconda :自带
• 查看版本和途径: pip --ver sion
Python 环境配置

• 常见编辑器

• Vs code: [Link]

• Pycharm: [Link]

• Atom: [Link]

• Jupyter ( Anaconda 已经集成) :

• 安装: conda install –c conda-forge jupyterlab 或者 pip install jupyterlab

• 使用: jupyter notebook

• 本次课程: Anaconda + vscode/jupyter


• 请注意 vscode 中 terminal 类型和 setting 中的路径应当保持一致

• 课程代码: [Link]
Python 基础知识

• 文件扩展名: [Link]
• 指定编码格式: #coding=utf-8
• 运行指令: python3.7 [Link]
• 注释: #
• vscode 中快捷键为: “ ctr+/”
• 换行:
• 以换行代表语句的结束
• 可以使用括号, \ ,””” xxx“””(‘’’xxx‘’’) 进行跨行编程
• 缩进:
• 缩进代表一个功能模块的结构,一般 2/4 字符缩进较为美观,而 4 字符缩进更为常见;
注意整个文件的缩进应保持一致 ; vscode 中快捷键为: “ ctr+]”( 向左 ), “ctr+
[”( 向右 )
Python 基础知识

• 键盘输入
• s = input(“ 提示语句” )
• 输出
• print(v1, v2)
• 存在多个输出时,用逗号隔开
• 每一个输出的值应当保持类型一致
• 默认以换行符结束,可以通过关键字
end 修改
• 默认以空格分隔对象,可以通过 sep
修改
如:
print(1, 2, 3, 4, sep=“,”,
end=“.”)
基本数据类型: Number

• 定义: =
• 删除: del()
• 类型转化:
• int(x), float(x), complex(x, y)
• 运算符:
• *( 乘 ) , /( 除 ) , //( 整数除 ), %( 取余 ) , +
(加) ,
-( 减 ) , **( 乘方 ) , +=…
• 函数:
• pow(x, y), abs(), sum(), round() …
• math 模块:
• [Link](), [Link](), [Link](),
[Link] t(), [Link]()…
• cmath 模块:
• [Link] t(), [Link]()…
基本数据类型: list( 列表 )

• 定义:
• 利用 [, ] 定义的数据结构
• 序列操作:
• 索引:通过下标访问
• 切 片 : a[n:m:k] , 表 示 列 表 a 中 从 n
到 m 中以 k 为步长获得的子集
• 相加:序列拼 接
• 相乘: 重 复序列 n 次,一般用 于 序列 初
始化
• 常用函数:
• 成员资格检查 : in
• 列表长度: len()
• 最大值: max()
• 最小值: min()
基本数据类型: list( 列表 )

• 列表方法: dir(list)
• append() :列表拼接
• extend() :合并列表
• sor t/sor ted([key[, rever se]]) :排序
• clear() :清空列表
• copy() :复制列表
• count() :计算指定元素出现次数
• index() :返回指定值第一次出现的索引
• inser t() :插入元素到指定位置
• pop() :根据下标删除 并返回元素
• remove() :删除指定 元素
• rever se() :列表反转
基本数据类型: tuple( 元组 )

• 定义:
• 由 (, ) 定义的,不可改变元素值的数据
结构
• 定义方式:
• 直接由逗号隔开: a = 1, 2, 3
• 圆括号 + 逗号: a = (1, 2, 3)
• 利用关键字定义: a = tuple([1,
2, 3])
• 元素访问方式:
• 下标访问
• 加法:合并集合称为新的集合
• 乘法:返回重复大小的集合
基本数据类型: str( 字符串 )

• 定义:
• 由单(双)引号定义的字符 串:
‘ abcde”fg”hg’, “abc’de’fg”
• 由 r 定义的强字符串: r‘abs\tde\n’
• 可以通过索引访问,但不能用切片进行赋值
等操作
s1 = “hello world!”
s2 = s1[3:-1] (正确)
s1[2] = “a” (错误)
• 可以通过” +” 合并字符串
• [Link]() : str 中 以 {} 为 占 位 符 , 并 在
format() 中 查 找 对 应 的 目 标 进 行 替 换 , 如 无
指定键,默认 按照出现的顺序排序
• 检 查 子 串 是 否 存 在 : in , 存 在 返 回 True ,
否则返回 false
基本数据类型: str( 字符串 )

• 方法: dir(str)
• encode(): 指定编码方式
• split([sep[, max]]): 分割字符串
• strip([char s]): 去除字符串两端字符
join(list): 合并列表为字符 串
• find(sub[, s[, e]]): 在指定区间查 找子
串并返回第 一个索引, 不存在则返回 -1
• index(sub[, s[, e]]): 在指定区间查 找子
串并返回第 一个索引, 不存在则返回 -1
• count(sub[, s[, e]]): 返回字符串中子串
的个数
• replace(old, new[, max]): 替换子串
• center(width[, fillchar]): 扩展字符串
为自定大小,居中并以指定字符 填充空间
• lower(), upper(), swapcase(): 改变大
小写
• …
基本数据类型: dict( 字典 )

• 定义:由键和值组成的一种无序的动态数
据结构
• 定义方式:
• 以 {key: value } 的格式定义
• 使用键值对 创建
• 使用函数 dict 从其他映射创建
• 常见方法:
• 返回字典长度: len()
• 访问键对应的 元素: d[k]
• 添加键值对: d[k] = v
• 删除键对应的 元素: del d[k]
• 成员变量检测 : k in d
基本数据类型: dict( 字典 )

• 字典方法: dir(dict)
• clear() :清除字典
• copy() :复制字典
• fromkeys(seq[, val]) : 返 回 键 为 seq 的 字

• get(key[, default]) : 返 回 指 定 键 对 应 的

• items() :以 (key, value) 的形式返回字典
• keys() :返回所有键
• pop(key[, d]) :删除并返回键对应的值
• popitem() : 随 机 删 除 项 , 并 以 (key,
value) 返回
• setdefault(key[, default]) : 检 查 键 是 否
存在,不存在则添加新键
• update(other) :利用其他字典更新字典
• values() :返回值
基本数据类型: set( 集合 )

• 定义:一种无序不重复的数据结构
• 由 set 定义(可用 于创建空集合)
• 由花括号 {} 定义(注意 与列表定义的区
别)
• 方法与运算
• add() :增加对象
• pop() :随机移除对象
• remove() :移除指定对象
• union() :合并集合,并返回新的集合
• update() :根据给定集合更新当前集

• clear() :清空集合
• copy() :复制集合
• …
课堂作业

• 将一个字符串反向输出,注意空格和可能存在的转义字符。

input: hello world!\n

output: n\!dlrow olleh

• 输入一个元素为二维元组的列表,按照列表的第二个元素从大到小进行排序。

input: [(7, 3), (4, 2), (1, 9), (3, 2), (5, 6)]

output:[(4, 2), (3, 2), (7, 3), (5, 6), (1, 9)]

• 去除列表中重复的元素,并按照从小到大排序。

input: [2, 5, 3, 9, 5, 2, 2, 6, 7]

output: [2, 3, 5, 6, 7, 9]
语句

• 条件语句: if
组成:关键词 + 条件语句
关键词: if, elif, else
条件语句:使用 not, and, or 等词连接,
优先级 not > and > or
条件语句之后用” :” 表示语句的开 始
语句嵌套时以缩进作为语句块的区分
is 与 == 之间的区别: is 判断地址是否相
同,
== 判断值是否相同

• 断言: asser t
判断条件是否满足,不满足则抛 出异常
语句

• for 循环
• 形式: for 条件语句
• 条件语句:
• item in [list]
• i in range([star t, ] stop [, step])
• i, item in enumerate([list])
• 用于列表定义:
• l = [(a, b) for a in l1 for b in l2 if a+b >c]
• l = [a+b for a, b in zip(l1, l2) if a+b >c]
• 中止循环: continue
• 结束循环: break
语句

• while
语句组成:关键字 + 循环体
可用于循环次数可变的情况
可引入 break 、 continue 等关键
词控制

• tr y
关键词: tr y except finally
tr y: 执行的语句块
except [type] :根据执行抛出的异
常类型执行对应的语句,可以指定 异
常类型
finally: 无论是否抛 出异常,均执行
作用:利用 抛出的异常分析程序存在
的原因,同时增加程序的稳定性等
函数

• 定义:完成特定功能的程序块
• 形式: def func(v1, v2, … ):
• 文档:紧跟声明之后 的字符串,进行解释说明
• 调用:
• 参数显式赋值: func(v1=x1, v2=x2,…)
• 参数隐式赋值: func(x1, x2, …)
• 参数可带默认 赋值,声明时放在无默认赋值的变
量之后,调用时可以省略赋值操作
• 定义: def func2(x, y=1)
• 调用: y = func2(x)
函数

• 定义:完成特定功能的程序块
• 参数收集:以元组 / 字典的形式进行参数传递,
有利于代码简洁
• def func(p1, *parms, p2) 以元组的形式收
集参数
调用: y = func(x, v1, v2, v3, p2=x2)
函数内: p1 = x, parms = (v1, v2, v3),
p2 = x2
• def func(p1, *parms1, **parms2) 以 字 典
的形式收集参数,格式为 { 参数名:参数值 }
调 用 : y = func(x, v1, v2, k1=x1,
k2=x2)
函数内: p1 = x1, parms1 = (v1, v2) ,
parms2 = {“k1”:x1,
“k2”:x2 }
函数

• 参数
• 区分传递的参数是否属于可变类型
(字典,列表)
• 对于可变类型参数,函数内部改变数
值,将影响调用原对象中的函数值,
这种影响不受重命 名的影响
• 返回值
• 返回值和调用值个数保持相同,对于
不必要的参数,可以用 _ 表示
def func(…): … return x1, x2, x3
_, x, _ = func(…)
• 作用域
• 变量的作用域一般处于所属的函数块
• 可 以 用 global 关 键 字 声 明 引 用 全 局
变量

• 定义:描述具有相同属性和方法的
集合
• 形式: class A:
• 组成:变量、方法
• 对象:由定义创建的数据结构 实例
• 继承:新定义的类对已存在的类的
属性以及方法的一种复用
• 基类(父类):被继承的对象
• 派生类(子类): 继承基类的类
• 单继承: class A(object)
• 多继承: class B(base1, base2)
• 调用父类函数: super()

• 变量:
• 类变量:在函数体外定义的变量,
为所有实例化的对象公用;通
过”类名 .” 进行引用; 实例化
后可通过” .” 进行引用
• 成员变量:每个对象 独立拥有的
变量,利用 self 进行修饰;在
类声明内部通过” self.” 引用,
在实例化的对象中通过” .” 进
行引用
• 私有变量:利用” __” 修饰的
变量,默认不能直接访问,但可
以通过特殊的方式获取;为保持
良好的封装性,一般建议为其定
义读写的函数。

• 方法
• 方法:对类变量进行运算的功能
块,利用 self 进行修饰
• 隐藏方法:利用” __” 进行修饰
的方法,理论上不可直接访问,
但与隐藏变量 一致,可以通过特
殊的方式进行访问
• 方法重写:继承中,对与父类相
同名字的方法进行重新定义,调
用时,利用 super() ,或者直接
引用父类调用进行区分

• 例化
• a = A(p1, p2, …)

• 例化的过程中自动调用方法” __init__” 传递参数,对变量进行赋值

• 引用成员变量和方法可通过” .” 操作实现,对于方法,可按照函数的调
用方式进行操作

• 对于隐藏结构,可以通过” ._ 类名 __ 结构名”调用(一般不推荐)
模块

• 模块操作:
• 导入整个模块: impor t module _name
• 导入模块中特定的方 法:
from module _name impor t func
• 查看模块的方 法: dir(module _name)
• 查看模块函数功能: help(func)
• 随机数: impor t random
• [Link] :生成 [0, 1) 区间内均
匀分布的随机数
• [Link] :生成 [a, b] 区间内的
随机整数
• [Link] :打乱数列
• …
模块

• 时间: impor t time( 默认以秒为单位 )


• [Link]() :引入休眠时间

• [Link]() :返回系统时间

• [Link] f _counter() :精度最高,


分辨率为时钟周期,计算 sleep 耗时

• [Link] _time() :不计算


sleep 消耗的时间

• …
模块

• 正则表达式: impor t re
• 作用:对字符 串进行匹配,并做进一步的
Method
操作 compile(pattern[, flags])
创建模式
• 组成: [Link](pattern, object) search(pattern, string[, flags])
查找模式
• Pattern: match(pattern, string[, flags])
在字符串开头的匹配模式
• 通配符: .
split(pattern, string[, maxsplit=0])
• 转义字符: \ 根据模式分割字符串
findall(pattern, string)
• 字符集: [^-] 匹配所有字符串,并以列表的格式返回
sub(pat, repl, string[, count=0])
• 二选一和子模式: | () 字符串替换
escape(string)
• 可选模式和重复模式: ? * + {m, n} 对特殊字符进行转义
• 字符串开头和结尾: ^ $
模块

• group:
• group([group1, …])
获取与给定子模式匹配的子串
• star t([group])
返回选定子串的起始位置
• end([group])
返回选择子串的终止位置
• span([group])
返回选定子串的区间
• 替换函数中的子串:
• 利用转义序列 实现子串的选取:
[Link](pat, r ” <em>\
1<em>”, str)
文件操作

• 文件的读写
• 打开文件: f = open(filename,
mode)
• Mode: r( 只读 ), w( 只写 ), x( 创
建文件写 ), a( 追加 ), b( 二进制 ),
t( 文本模式 ), +( 更新 )
• 读取文件: [Link]([si ze])
• 按行读取: [Link]([si ze])
• 写入文件: [Link](str)
• 按行写入: [Link](list[str])
• 关闭文件: [Link]()
• 通过迭代器读写:
with open(fname, mode) as f
文件操作

• pickle: impor t pickle ,扩展名为” .


pkl” , 一 般 用 于 存 储 任 意 类 型 , 可
用 于 python 语 言 内 部 不 同 程 序 间 文
件的操作
• 存: [Link](obj, file)
• 取: [Link](file)
文件操作

• csv: impor t csv ,扩展名


为” .csv” ,以表格的形式保存列表或字

• 列表: [Link](f )
• 字典: csv. Dict Writer(f, header)
• 读: [Link](f )
文件操作

• yaml: impor t yaml , 扩 展 名


为” .yaml” ,常用于写配置文件
• 存: [Link](obj, file)…
• 取: [Link](file)…
• Yaml 规范:
• 每 一 次 dump 只 能 保 存 一 种 类 型 , 多 种
类型需要插入分隔符” ---”
• 以空格的缩进方式区分层次,不能使用
Tab
• 表示方式:字 典:” :” ,列表:” -”
• 更多细节见参考文献 4
实例: argparser
实例: progressbar
参考文献

• 1. Python 菜鸟教程: https://


[Link]/python3/[Link]
• 2. 《 python 基础教程 第 3 版》
• 3. [Link]
• 4. [Link]

You might also like