python学习
python下载安装
(跟随大创脚步,随时更新,仅供自己学习,只为看懂大创遇到的python代码,切勿模仿)
1. 关于python的下载
下载地址:Python官网:https://www.python.org/
点击DOWNLOAD,选择windows,选择安装版本(根据需要)
接着配置环境变量,在path后面加上python目录(就是下载的位置),保存,在cmd命令框中输入“python”若有相关提示则安装正确。
运行python代码可以在命令执行框,也可以是集成开发环境(Pycharm)
安装Pycharm
下载及安装:https://www.runoob.com/w3cnote/pycharm-windows-install.html
2. OS文件/目录方法
os.listdir(),返回指定的文件夹包含的文件或文件夹的名字列表
eg: os.listdir(path)
os.path.join() 路径拼接文件路径
可以传入多个路径,会从第一个“/”开头的参数开始拼接,在保证上述情况下,若出现“./”开头的参数,会从“./”开头的参数的上一个参数开始拼接
3. 注释
单行注释以“#”开头
多行注释用三个单引号’’’,或三个双引号"""括起来(成对出现,将注释包围起来)
4.def
自己定义的函数
5.List列表
python(list)列表,可以进行切片操作
list中的数据可以有不同的类型,可以通过list[i]来访问数据
eg:print.list[1:3],这里输出的是list中从下标1到下标3之前(不包括下标3!!)
list.append(‘aaa’),向list尾部插入数据
del list[2],删除列表中下标为2的元素
len函数可以求list的长度
cmp(l1,l2),比较l1和l2的元素,
如果不是同一类型,则检查是否是数字,若是数字,进行强制类型转换,否则通过类型名字的字母顺序进行比较
(p.s.python3.x中已经没有cmp板块,通过operator.eq(‘he’,‘he’)来进行比较,返回True或者False)
list.index(obj) 从列表中找出第一个与obj匹配的索引信息
list.remove(obj) 从列表中移除第一个与obj匹配的值
list.reverse() 反向列表的元素
6.for循环
for 初始 in 范围:
语句
7.File
file.readline() 读取整行,包括‘\n’字符
file.readlines() 读取所有行并返回列值
8.time
time.time() 返回当前的时间戳(是1970纪元之后经过的浮点秒数)
9.ord
ord() 返回对应的十进制的整数
eg: >>>ord (‘a’) 输出: 97
10.timeit
timeit.default_timer() 默认的计时器
更新时间2020.02.24
(目前跟随python科学与计算课程安排,python3.5)
Python输出:print函数
print(变量)/print(字符串)
(python2中使用的是print语句,如print mystring)
python输入:input函数
x=input(‘please input a number:’)
一般返回的是str字符串类型,所以可以通过类型转换函数进行类型转换
如:int(), float() , eval() 可以转为有效的表达式进行求值并返回结果
x=int(input(‘please input a number:’))
更新时间2020.03.07
range函数
range(start,end,step=2)
意思是从start开始(包括start)到end结束(不包括end)间隔为2,连续取数。
range(start,end)step可省略,缺省值为1
range(end)start可省略,缺省值为
自定义函数
```python
def name(x,y=true):
print('y is ok')
def name2(x=true):
print('x is ok')
如上,y=true,x=true均为默认参数,
但是def name3(y=true ,x): 的形式是不允许的
同时,x,y也可以是函数名,以实现传递函数的功能
匿名函数 lambda
如:r=lambda x:x+x (lambda后的x为参数,:后为表达式,函数返回值赋给r)
乘方表示
y=-0.1x**4-0.15x3-0.5*x2-0.25*x+1.2
x的4次方,x的3次方,x的2次方
plt.rcParams[]
pylot中通过rc配置文件定义默认属性,如窗体大小,线条宽度,颜色,坐标轴,文本,字体等等
plt.rcParams['font.sans-serif']=['SimHei']#设置字体为simhei,显示中文
plt.rcParams['axes.unicode_minus']=False#设置正常显示正负号
plt.rcParams['lines.linestyle'] = '-.'#设置线条样式
plt.rcParams['lines.linewidth'] = 3#设置线条宽度
plt.title()
用来设置图像的标题
plt.title('sin曲线')
plt.legend
plt.legend(loc='best')#loc为图例位置,可取(‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’, ‘center left’, ‘center , right’, ‘lower center’, ‘upper center’, ‘center’)
#图例,就是图线旁边的一个小方框,用来提示每条图线是什么
plt.plot()
plot用来绘制图线
plt.plot([x-h,x],[f(x-h),f(x)],'r--',label='前')#共四个参数,[x-h,x],[f(x-h),f(x)],r--,label
#指的是第一个参数从x-h到x中取值,第二个参数从f(x-h)到f(x)
#r--,为r红色,线条为“--”
#label='前'指的是该图线的标签
np.linspace
生成数据
xx=np.linspace(-0.5,1.5,20)#在指定间隔内返回均匀间隔的数字,共20个
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#start为起始点,stop结束点,num为样本数,endpoint为真是包括stop,为假时不包括,
#retstep为真时,会返回(sample,step)
#step为样本步长
#dtype为数据类型
#sample包含num个等间隔样本的闭区间[start, stop]或者左闭右开区间[start, stop)(区间右端的开闭基于endpoint为True或者False)
更新时间:2020.03.10
变量作用域
即变量能够被访问的范围
全局变量
在程序主体发挥作用
局部变量
在函数体内发挥作用
注意:
1.当全局变量和局部变量同名的时候,遵循 内层屏蔽外层的原则,即函数体内的变量发挥作用。
2.当在函数体内为定义在全局的变量重新赋值时,需要在函数内添加global语句,此时变量值在函数体内修改过后,程序主体中的变量值相应改变。
常用python标准库函数
标准库 | 函数 / 常数 |
---|---|
math | PI,e,pow(x,y),ceil(),floor(),sqrt(),degrees(),radians()等 |
os | getcwd(),chdir(),rename(),remove() |
random | choice(),randint(),randrange(),random(),uniform()sample(),shuffle() |
datetime | date.today(),time(),datetime.now(),strftime(),timestamp(),fromtimestamp() |
import math
math.ceil(3.6)#向下取整,结果为4
math.floor(3.6)#向上取整,结果为3
math.pow(2,3)#次方,2的3次方
math.sqrt(4)#开方
math.degrees(3.14)#弧度制转为角度制
math.radians(180)#角度制转弧度制
import os
os.getcwd()#获得当前的工作目录
path='c:\\test'
os.chdir(path)#改变当前目录
os.rename('test.txt','test1.txt')#修改文件名字(c盘)
os.remove('test1.txt')#删除文件
import random
random.choice(['c++','java','python'])#从序列中获取随机值
random.randint(1,100)#生成1-100之间的随机整数
random.randrange(0,10,2)#从range生成的一组数中随机输出一个整数
random.random()#生成0-1.0之间的一个随机浮点数,包含0,不包含1.0
random.uniform(5,10)#生成5-10之间的一个随机浮点数
random.sample(range(100),10)#从range生成的数中随机选择10个输出,返回一个列表
nums=[1001,1002,1003,1004]
random.shuffle(nums)#将nums中的元素打乱
import datetime
from datetime import date
from datetime import time
from datetime import datetime
date.today()#输出当前的日期
tm=time(23,36,52)#创建时间23:36:52
dt=datetime.now()#当前的日期和时间,时间会包括毫秒
print(dt.srftime('%a, %b %d %Y %H:%M'))#格式化输出当前的时间日期
dt=datetime(2020,3,10,23,26)
ts=dt.timestamp()#将目前的日期时间转化为时间戳(秒数)
print(datetime.fromtimestamp(ts))#将时间戳转化为时间日期
异常Exception
错误:语法错误,运行时刻错误,逻辑错误
python中每一个异常都是类的实例
异常类 | 描述 |
---|---|
BaseException | 所有异常的基类 |
Exception | 常规异常的基类 |
AttributeError | 对象不存在此属性 |
IndexError | 序列中无此索引 |
IOError | 输入/输出操作失败 |
KeyboardInterrupt | 用户中断执行 |
KeyError | 映射中不存在此键 |
NameError | 找不到名字 |
SyntaxError | python语法错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
ZeroDivisionError | 除(或取模)运算的第二个参数为0 |
异常处理
try - except
可用多个except语句和一个except块捕捉异常
获取本地数据
即获取本地文件中的数据
文件的打开,读写和关闭
文件的打开
open函数,返回一个文件对象
文件对象可迭代
file_obj=open(filename,mode='r',buffering=-1,......)
#第一个参数为文件名
#mode为可选参数,r为以读的方式打开文件
#buffering也为可选参数,默认值为-1(0代表不缓冲,1或大于1的值表示缓冲一行或指定缓冲区大小)
open函数-mode
mode | function |
---|---|
r | 读模式 |
w | 写模式,会清空原来的内容 |
x | 写模式,若文件已存在则操作失败 |
a | 追加模式,从EOF开始,必要时创建新文件 |
r+ | 读写模式 |
w+ | 读写模式。清空原内容 |
a+ | 读和追加模式 |
rb | 二进制读模式 |
wb | 二进制写模式 |
ab | 二进制追加模式 |
rb+ | 二进制读写模式 |
wb+ | 二进制读写模式 |
ab+ | 二进制读写模式 |
文件写
file_obj.write(str)
文件读
网络数据的获取
requests库
reguests.get()
网页数据解析
序列
python中有6中序列,
其中字符串,列表,元组是最常见的
序列中每一个元素都有和其位置相对应的索引
0。。。。。。。N-1
-N。。。。。。。-1
序列相关操作
功能 | 标准类型运算符 |
---|---|
值比较 | < , > ,<= , >= , == , != |
对象身份比较 | is,is not |
布尔运算 | not,and,or |
功能 | 序列类型运算符 |
---|---|
类型转换函数 | list(),str(),tuple() |
求长度 | len() |
排序 | sorted() |
求最值 | max(),min() |
求和 | sum() |
返回enumerate对象,一个一个的由元素的索引和值构成的元组 | enumerate() |
返回一个zip对象,将对象对应的元素打包成一个一个的元组 | zip() |
逆序 | reversed() |
字符串
’ '," ",三引号(保持原貌)
输出函数
string.join(iterable)
将string作为分隔符,连接iterable为一个字符串
字符串常用方法
列表
可扩展的,可变,容器,可包含不同类型的对象
sorted方法,原始列表的值不改变