说明:本文为 学习网课 《tensorflow笔记1.0》时所作笔记
环境安装按照《tensorflow笔记》前置课程安装。(乌班图16.04 python2.7 tf1.3)
2.1 Linux指令、hello world
桌面点击右键,选择open terminal 打开终端(快捷键为 ctrl+ alt + t )
pwd | 打印当前在哪个目录 |
ls | 列出当前路径下的文件和目录 |
mkdir + 目录名 | 新建目录 |
cd + 目录名 | 进到指定目录 |
在终端中输入 python : 运行python 解释器
运算符 | - * / %(加减乘除模) |
运算顺序 | 先乘除 在加减 括号最优先 |
变量 | 就是一个标签,由非数字开头的字母、数字、下划线组成,他的内容可以是数值、字符串、列表,元组、和字典。 |
数值 | 就是数字 。a = 100 ('100' 是字符串,不是数值) |
字符串 | 就是用一对双引、或单引号 引起来的内容,只要被引号引起来,就是字符串了。 b = "Hello World !" |
\t | 表示tab |
\n | 表示 换行 |
\" | 表示 “ (将引号本身 和 字符串 区别开) |
%s | 占位,用%后的变量替换(具体见这位大佬的帖子https://blog.csdn.net/Leeeoplod/article/details/89243729) |
例子如下
a = 100
b = "Hello World!"
print " point = %s \n\" %s\"" %(a,b)
打印出
point = 100
"Hello World!"
2.2列表,元组,字典
2.2.1列表 [ ]
c = [1, 2, 3, 4, 5, 6, 7] d = [ "张三", ”李四“, ”王五“] e = [1, 2, 3, '4', "5",d]
用列表名 【索引号】索引列表中的元素,(正向从0,反向从-1开始),如 d[0] 表示列表d中的第零个元素 ”张三“,d[-1] = "王五"
用列表名 【起:止】表示切片,从列表中切出相应的元素,前闭后开。起 止 的负号表示从列表尾部向前数。
如,c[0:2] 切出 [1,2] ,c[ :] 切出 [1, 2, 3, 4, 5, 6, 7]
用列表名 【起:止:步长】 带步长的切片,步长有方向。
例
c = [1, 2, 3, 4, 5, 6, 7], 切出[5,4,3,2] 用c[4:0:-1]
切出[5,4,3,2,1] 用c[4: :-1],切出[6, 4, 2]用c[-2::-2],(从倒数第二个一直到正数第一个都包括,步长为-2.)
修改: 列表名【索引号】=新值
删除: del 列表名【索引号】
插入:列表名.insert(插入位置索引号,新元素)
注意:
c = [1, 2, 3, 4, 5, 6, 7]
d = c
#上面操作使得 c d 为同一个变量
#若要使 c d 为不同变量
#应使用 d = c[ : ], 即列表从头到尾的切片
#若使用 e = c[4:0:-1] ,则 e =[](空列表)
2.2.2 元组
元组 () 誓言, 一旦定义不能改变。
例,f = (2, 3, 4)
2.2.3 字典
字典 { }
字典里放着 {键: 值,键: 值,键: 值,键: 值} n对键值
如,dic ={1:"123", "name" : "zhangsan", "height" : 180}
用字典名【键】索引字典的值
dic{"name"}表示dic中 键 ”name“ 的值 "zhangsan"
修改: 字典名 【键】= 新值 注意 这里用的 是【】 不是 {} ,下同
删除:del 字典名 [键]
插入: 字典名 【新键】= 新值
2.3 条件语句
vim 文件名 (表示打开或新建文本)
# 新建一个叫做 c.py 的文件,如果文件存在,则打开文件
vim c.py
在vim 中 点击 i 进入插入模式 可往文本里写内容 ,vim 其他用法可以参看网站,菜鸟教程(https://www.runoob.com/)
”esc键“+ ":"+q 表示退出vim
”esc键“+ ":"+wq 表示退出vim并保存文档
”esc键“+ ":"+q! 表示退出vim但不保存文档
if 条件成立: 执行任务 | if 条件1成立: 执行1任务 else: 执行任务2 | if 条件1成立: 执行1任务 elif: 执行任务2 - - - elif 条件n成立: 执行任务n else: 执行任务n+1 |
python 语句用左对齐表代码层次, 注意 # coding=utf-8 的 = 号两边不要空格
== 表示(测试)等于 ,and 表示与, or 表示 或。
2.4循环语句
for 变量 in range(开始值,结束值): 执行某些任务 # 注意 这里的开始值和结束值和2.2.1列表一样,是前闭后开的 |
for 变量 in 列表名: 执行某些任务 |
while 条件: 执行某些任务 |
终止循环用 break |
2.5turtle 模块
import turtle # 导入turtle 模块
t = turtle.Pen() # 用turtle模块中的Pen类,实例化一个叫做t的对象
t.forward(num) # 让t 向前走 num 个像素点,num为数字
t.backward(num) # 让t 向后走 num 个像素点,num为数字
t.left(angle) # 让t 左转 多少角度, angle 单位为度
t.right(angle) # 让t 右转 多少角度, angle 单位为度
t.reset() # 让t 复位
2.6函数、模块、包
函数: 执行某些操作的一段代码。 如 :input()
定义函数: def 函数名 (参数表,可以没有参数):
函数体
使用函数: 函数名 (参数表) 如:input("please input your class number:")
#定义函数
def hi_name (yourname):
print "hello $s" %yourname
#使用函数
hi_name("zhangsan")
#输出
hello zhangsan
函数返回值:return
def add(a,b):
return a+b
#调用
c= add(5,6)
#c被赋值为add 的返回值 11
内建函数:python解释器自带的函数
abs(-10) 返回 10,绝对值函数
模块: 函数的集合,先导入,再使用,用 模块.函数名 调用。
import time
time.asctime()
#输出
'Wed Jul 28 12:39:51 2021'
包: 包含有多个模块
#从一个包中导入一个模块
from PIL import image
局部变量:在函数中定义的变量,只在函数中存在,函数执行结束不可再用。 |
全局变量:在韩式前定义的变量,一般在整个代码最前面定义,全局可用。 |
2.7类、对象、面向对象的编程
类:物以类聚人以群分,是函数的集合(这里ppt应该错了,应该还有属性),可实例化出对象的模具。
实例化:对象 = 类() 例如2.5中 t=turtle.Pen()
对象:是类实例化出的实体,对象实实在在存在,完成具体工作。
面向对象:程序员反复修改优化类,实例化出对象, 调用类里面的函数执行具体的操作。
类 | 行为(函数、方法) |
动物 Animals | 呼吸 breathe 移动 move 吃 eat |
哺乳动物 Mammals | 喂奶 breastfeed |
猫 Cats | 捉老鼠 catch_mouse |
上面的类是下面类的父类(又叫超类),下面是上面的子类。比如动物是哺乳动物的父类,猫是哺乳动物的子类
子类实例化出来的对象,可以使用自身和父类的函数和变量(变量又叫属性,使用父类的函数和变量叫继承)
类的定义 : class 类名(父类名,如果没有父类则空): pass(这里的pass 为占位,替代类中的内容,无具体意义) | class Animals: pass class Mammals(Animals): pass class Cats(Mammals): pass |
先用pass 占位置,起架构;再用具体的函数替换pass完善类。注意类名一般以大写字母开头
类里定义函数时,语法上规定第一个参数必须是self.
__init__函数(前后都是双下划线),在新对象实例化时会自动运行,用于给新对象赋初值。
class Animals: def breathe(self): print "breathing" def move(self): print "moving" def eat(self): print "eating food" | class Mammals(Animals): def breastfeed(self): print "feeding young" | class Cats( Mammals): def __init__(self,spots): self.spots = spots def catch_mouse(self): print "catch mouse" |
# 将毛类实例化出一个叫做 kitty的对象,kitty有自己的特征属性,比如身上有10个斑点
# 实例化时运行__init__函数,给spots赋值,告知kitty有10个斑点。
kitty = Cats(10)
# 打印 出kitty的spots 值为10
print kitty.spots
# kitty可以做具体的工作,比如捉老鼠:
# 对象运行函数,必须调用对象.函数名,调用类里的函数
kitty.catch_mouse()
# 会运行print "catch mouse" 故打印出catch mouse
对象调用类里的函数,用对象.函数;对象调用类里的变量,用对象.变量名;
类内定义函数时,如调用自身或父类的函数和变量,需用self.引导,应写为 self.函数名或self.变量名。
class Cats( Mammals): def __init__(self,spots): self.spots = spots def catch_mouse(self): print "catch mouse" | class Cats( Mammals): def __init__(self,spots): self.spots = spots def catch_mouse(self): print "catch mouse" def left_foot_forward(self): print " left foot forward" def left_foot_backward(self): print " left foot backward" | def dance(self): self.left_foot_forward() self.left_foot_backward() self.left_foot_forward() self.left_foot_backward() |
原来的猫类 | 优化扩展后 |
# Kitty 实例化代码
class Animals:
def breathe(self):
print ("breathing")
def move(self):
print ("moving")
def eat(self):
print ("eating food")
class Mammals(Animals):
def breastfeed(self):
print ("feeding young")
class Cats(Mammals):
def __init__(self,spots):
self.spots = spots
def catch_mouse(self):
print ("catct mouse")
def left_foot_forward(self):
print (" left foot forward")
def left_foot_backward(self):
print (" left foot backward")
def dance(self):
self.left_foot_backward()
self.left_foot_forward()
##
##
##
kitty = Cats(10)
kitty.dance()
print (kitty.spots)
kitty.catch_mouse()
#输出结果
# left foot backward
# left foot forward
# 10
# catct mouse
2.8 文件类操作
导入pickle 库: import pickle
开: 文件变量 = open(”文件路径文件名“,”wb") # open 函数细节可以参考菜鸟教程(https://www.runoob.com/)
存: pickle.dump(待写入的变量,文件变量)
关: 文件变量.close()
存的过程可以使用
with open(”文件路径文件名“,”wb") as 文件变量
pickle.dump(待写入的变量,文件变量)
这样可以让系统自动在不使用 文件时,自动关闭文件。取的过程类似。
开: 文件变量 = open(”文件路径文件名“,”wb")
取: pickle.load(文件变量)
关: 文件变量.close()
python 中 文件存储还可以使用 json模块、shelve模块 、pprint.pformat()函数 等