Python发展的未来方向
- 数据分析
- 自然语言处理
- 社交网络分析
- 人工智能
- 深度学习
- 计算机视觉
- 网络爬虫
- 量化交易
- …
Python语言特点
- 语法简洁,实现相同功能,代码量相当于其他语言的1/10~1/5
- 跨平台,可用于大部分操作系统,集群,服务器,甚至小设备(树莓派)上
- 可扩展,可与其他编程语言集成,如C,C++,Java等
- 开放源码,Python和大部分支持库及工具都是开源的
- 多用途,可用于快速,交互式代码开发,也可用于构建大型应用程序,如科学计算,数据处理,人工智能等
- 类库丰富,除了自身提供的几百个内置库,开源社区还贡献了十几万个第三方库,拥有良好的编程生态…
1.配置
软件安装完成配置了sublime的插件,运行了第一个hello world程序,可以在终端和IDE运行。
2.变量
字符串 方法 . upper()、.lower()、.title()首字母大写
去除空白 .lstrip() .strip() .rstrip()
整数和浮点型
str() 转化为字符串
注释 #…
import this 常看隐藏
3.列表
array[-1] 返回最后一个数组元素,以此类推。下标从0开始
.append() 在最后面追加新的列表元素
.insert(index,data)在列表的指定索引位置插入新的元素
del 语句 删除 del array[index]
.pop(index) 删除指定索引位置的值,默认删除最后一个元素
.remove(value)删除列表中指定值的元素
.sort()排序 按字母 反向可设置 sort(reverse=True )永久性排序,会改变原数组
sorted() 临时排序,不改变原数组
.reverse(列表) 倒着排序
len() 获取列表长度 不是方法,没有.len()
4.操作列表
range(start,end , 步长 ) 生成系列数字
list( ) 可以将range()的结果转换为列表
统计运算 min() max() sum()
列表解析 array=[x2 for x in range(1,10)]
*切片 使用列表的一部分 print(array[start:end])
元组 不可修改的列表 使用括号包闭 array=(200,400)可以重新赋值但不能修改元素
设置代码格式 缩进 (四个空格) 行长 空行 Python改进方案 PEP8
5.if语句
== 比较
and 连接多个条件
or 同上,一个成立即可
…in…
…not in…
if …if if 多个if独立语句
if-else
if-elif-else 只执行一个代码块
输出1-9序列:
num_arrays = [1,2,3,4,5,6,7,8,9]
for num_array in num_arrays:
if num_array == 1:
print('1st')
elif num_array == 2:
print("2nd")
elif num_array == 3:
print("3rd")
else:
print(str(num_array)+"th")
print("all over")
6.字典
键值对,用{ }包含,逗号隔开
for key, value in dictionary.items(): 其中key,value名称可以任意
Python不关心键值对的添加顺序,只关心键值对的关联关系。
.items() 遍历字典键值对列表
.keys() 遍历字典的键,返回列表
.values() 遍历字典的值,返回列表
1.在字典中存储列表
2.在列表中存储字典
3.在字典中存储字典
item = []
for item_nums in range(30):
item_array = {'cyk':'xxxx'}
item.append(item_array)
for item_new in item[:5]:
print(item_new)
7.用户输入和while循环
input() 输入并用变量保存
int() 转化为数值
% 求模运算符
raw_input() Python 2.7中输入
while
flag = True 使用标志,用于会有多个条件发生变化时break 不继续执行,退出整个循环
continue 不继续执行,回到循环开头,根据条件判断是否继续循环
使用while循环处理列表和字典
8.函数 def
实参和形参
文档字符串 ‘’’’’’ ‘’’’’’ 描述函数内容
位置实参 实参与形参位置一一对应
关键字实参 在调用时采用键值对,不考虑顺序 (形参=实参)
返回值 return
切片表示法 [ : ] 创建列表副本,不会影响原列表(会花时间和内存创建副本,一般不用)
*arrays 传递任意数量的实参 ,显示为元组
**info 传递任意数量的实参,存储到字典中
引用模块 import module_name 调用 module_name.function_name()
引用模块方法 from module_name import function_name1,2,3 调用 function_name()
创建别名 from module_name import function_name as fn 调用 fn()
给模块指定别名 import module_name as mn
导入所有函数 from module_name import * 调用:直接调用函数 实践中一般不用,采用具体导入和句点表示法
函数编写指南
函数名: 全部小写和下划线,描述性文字
文档字符串’’’’’’ ‘’’’’’’ 描述函数功能
给形参指定默认值,以及函数调用中的关键字实参,不要加空格
def fun_name(parameter_0,parameter_1='temp')
fun_name(para_0,para_1='temp1')
9.类、面向对象编程
class Dog() 类名首字母大写
Python 2.7 中创建类 class Dog(object)
init(self) self 表示指示实例本身的引用,不需要传参 init() 特殊的方法
以self为前缀的变量可以供类中所有方法使用
class Dog():
def __init__(self, name, age):
self.name = name
self.age = age
def dog_run(self):
print(self.name +" run")
def dog_jump(self):
print(self.name +" jump")
dog = Dog('ss', 13)
dog.dog_jump()
继承
class Son(Father):
def __init__(self,A,B,C):
super().__init__(A,B,C)
python 2.7 需要两个实参:子类名和对象
class Son(Father):
def __init__(self,A,B,C):
super(Son,self).__init__(A,B,C)
模块和类的相互引用 引用语句中不加括号 import module_name 调用: module_name.class_name
from module_name import ClassName
from module_name import * 不推荐使用
类编码风格
类名:驼峰法命名法 ClassName, 不使用下划线
类和模块都需要文档字符串描述功能 ‘’’’’‘说明’’’’’’
类使用一行空行分隔方法,模块使用两行空行分隔类。
10.文件和异常
异常:Python创建的特殊对象
with open('file.txt') as new_name:
temp = new_name.read()
print(temp)
with 在不再需要访问文件时将其关闭,比close() 要好,python会自动在合适的时机关闭
文件路径: 相对路径 绝对路径
window中使用\来划分,Linux和OS X中使用/划分
file_path='home\files\file_name.txt'
with open(file_path) as new_name:
.readlines() 逐行读取
.replace(old, new)
.split() 将字符串按空格划分成列表
open(‘地址’,‘w’) 写入文件
读取模式:‘r’(默认)
写入模式:‘w’ 会清空原文件内容,不存在则新建
附加模式:‘a’ 以追加方式写入文件,不存在则新建
读写模式:‘r+’.write() 写入文件 不会自动换行,要加\n
错误处理:
将可能引发错误的代码放入 try-except结构中,依赖于try成功执行的代码放入else中
try:
.....
except 错误类型:
....
else:
.....
ZeroDivisionError FileNotFoundError
使用pass跳过错误,不执行任何操作except
ZeroDivisionError:
pass
.count(字符串) 计算字符串在原字符串中出现了多少次,区分大小写
使用JSON结构存储数据
json.dump(参数1,参数2) 1:要存储的对象 2:被存储的地方
json.load(文件名) 读取json数据
import json 导入json
重构:将代码划分成一系列完成具体工作的函数,这样的过程叫做重构。重构让代码更清晰,更易于理解和维护。
return None 不返回任意值
11.测试代码
Python模块 unittest
单元测试: 用于测试函数的某个方面没有问题
测试用例:一组单元测试,用于测试函数在各种测试下都符合要求
全覆盖测试:包含一整套单元测试,用于测试函数在各种情况下都没问题,一般难以实现,用于后期。
测试方法名必须以test开头
import unittest 导入测试模块
继承 unittest.TestCase类
self.assertEqual(first, second) 断言方法 核实得到的结果与期望的结果是否一致
结果如下:
句点表示一个测试通过了
OK表示所有的单元测试都通过了
测试没有通过:
unittest.TestCase中的断言方法
setUp()方法 用于设置一系列实例及属性,并在测试方法中直接使用这些实例相当于创建全局变量和实例。
def setUp(self):
运行测试用例,每完成一个单元测试,都打印一个字符。. 表示通过
E 测试引发错误
F 断言失败
因此在运行测试用例时,在输出的第一行看到的句点和字符串各不相同。
The End
以上,希望对你梳理python知识点有用。