在学习python和tensorflow的时候,遇到了以下几个小问题和踩过的坑,特做总结。
控制台输出的各种waring信息
我们在运行tensorflow代码,常常能在控制台看到各种warning信息,有时候它的存在会影响我们看其他的输出。
或者有时候我们在看其他作者的tensorflow代码里面会有这样一段代码
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
其实这个就是解决控制台输出的问题。
关于’2’ 所在的那个参数的总结如下:
首先我们要明白控制台的log信息有如下四个等级
INFO(通知)<WARNING(警告)<ERROR(错误)<FATAL(致命的);
数字 | 屏蔽信息 |
---|---|
‘0’ | 无 |
‘1’ | INFO(通知) |
‘2’ | INFO(通知)+WARNING(警告) |
‘3’ | INFO(通知)<WARNING(警告)<ERROR(错误) |
注意有两点:
1.'0’是默认值,输出所有信息
2.'3’不是不输出信息,因为error上面还有fatal
运行python文件报SyntaxError
当你写操作文件的python代码的时候,如果你不注意一下这一点,常常会报错。
在windows中,读取文件路径可以使用“\”,但是在python字符串中“\”有转义的含义,如"\t"可代表TAB,"\n"代表换行. 所有我们需要采取一些措施让我们写的文件路径的 “” 不被理解为转义字符。
- 在路径前面加"r",即保持字符原始值的意思。示例如下:
with open(r'E:\test.txt', 'w') as f:
- 替换为双反斜杠,示例如下:
with open('E:\\test.txt', 'w') as f:
- 替换为正斜杠,示例如下
with open('E:/test.txt', 'w') as f:
通过以上三种方法的处理,就可以很好的解决文件名的书写问题。
当然这里还要说明一下第一个’r’和 读取文件的’r’的含义是不同。
r | 默认,表示从文件读取数据。(可能会出现文档读不全的问题) |
---|---|
w | 以写入方式打开文件。先删除原文件内容,再重新写入新内容。 |
a | 以写入方式打开文件,在文件末尾添加新的内容 |
x | 以写入方式创建新文件并打开文件。 |
r+ | 表示对文件进行可读写操作(删除以前的所有数据) |
字符串中出现 " " 或者’ ’
1、在双引号或者单引号前面加个转义符 \ ,即反斜杠。如"Hello "W “orld”,会输出 Hello "W"orld
2、用单引号引起整个字符串时,中间的双引号会打印出来。如’Hello "W"orld’,同样输出 Hello “W"orld
同理也可以在字符串里嵌入单引号,如"Hello 'W’orld”,输出 Hello 'W’orld
python面对对象编程
因为之前第一次接触面向对象编程所用的语言是JAVA,所以当用python写面向对象的代码时,会发现写法上还是有一些不同的。下面做一个简单的总结。
python类中构造函数:
Class Salary:
basesalary =5000 #类变量,它的值将在这个类的所有实例之间共享。
#你可以在内部类或外部类使用 Salary.basesalary 访问。
def __init__(self, salary):
self.salary = salary
self代表类的实例,而非类类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。
init()方法是一种特殊的方法,类似于JAVA里面的构造器,当创建了这个类的实例时就会调用该方法
可以了解一下Python内置类属性,java中没有。
面向对象编程一个重要的优点就是代码的重用,这就要涉及到继承机制。
python里面的继承语法:
class 子类名(父类名)
...
python私有属性: __private_attrs,两个下划线开头,声明该属性为私有。在类内部的方法中使用时 self.__private_attrs。
Python不允许实例化的类访问私有数据,可以使用 object._className__attrName( 对象名._类名__私有属性名 )访问属性
类的私有方法:__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods
此处省略1000字关于python继承相关机制的介绍【调皮】。
但我想总结一下python中的下划线:
foo(前后双下划线): 定义的是特殊方法,一般是系统定义名字 ,类似 init() ,main()之类的。
_foo(前单下划线): 表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import
__foo(前双下划线): 表示的是私有类型(private)的变量
当然以上分享的这些并不是python的主干知识,学习一门知识深入了解他的主干还是十分重要的,从大树的主干,再到枝干,再到叶子都要做一个细致的梳理。这些小分享更像是叶子上的一滴水珠,衬托或者说点缀了叶子的美丽。
如果文章中有错误欢迎大家指正,也可以用邮箱联系我探讨。
[email protected]