"玩转TensorFlow与深度学习模型”系列文字教程,本周带来Python 基本语法及使用(下)!
大家在学习和实操过程中,有任何疑问都可以通过学院微信交流群进行提问,有导师和助教、大牛等为您解惑答疑哦。(入群方式在文末)
第五篇的教程继续对Python进行介绍,主要内容:
函数
基本I/O
错误处理
函数
1.定义函数
在Python之中定义函数要遵循以下几点:
python中定义函数使用def关键字,后面接着函数名称和括号(),最后跟着冒号
函数的参数应当写在括号之中,也可以在括号中定义参数
函数中的 docstring 是可选的,可写可不写,建议写上
函数中的代码块要进行缩进
return 可以用于返回函数返回值或者表达式,return后面什么都不写与 return None 或者不写return 等价
2.调用函数
对函数进行定义了以后,只要通过函数名称对函数进行调用即可
输出:
3.传值(pass by value)与传引用(pass by reference)
在Python当中,所有的参数都是传引用,也就是说如果你在函数中对参数所指向的对象进行了更改,这个操作将会反应在你的参数上。
输出:
还有另外一种常见的情况就是在函数的内部,传进来的引用被覆盖了,如:
输出:
4.函数的参数
调用函数的时候可以使用以下几种参数:
必要(required)参数
关键(keyword)字参数
默认(default)参数
变长(variable-length)参数
必要参数是指必须按照函数定义的参数列表的定义,按照顺序传入,如函数就必须传入参数,如果没有按照要求进行传递参数,将会报错:
输出:
当使用关键字参数对函数进行调用的时候,要按照函数定义的参数名进行赋值,这样允许不按照函数定义的参数顺序进行赋值,因为Python解释器这是可以将参数与传入变量进行对应。
输出:
以上例子指的是在函数在调用时候使用关键字参数,在函数定义的时候也有关键字参数的概念,指的是在定义函数的时候不对函数名进行定义,完全通过函数的输入获得:
输出:
默认参数指的是当参数的值没有在调用时指定的话,函数将为参数赋值一个预先定义好的值,默认参数的位置应当位于参数列表的最后:
输出:
当函数需要处理的变量的数目不确定的时候可以使用变长参数,变长参数在函数定义的时候名字没有预先确定,在定义函数的时候在变量前面增加一个星号(*)表示这是一个变长变量:
输出:
将函数定义过程中的变长参数以及关键词参数结合起来:
输出:
5.匿名函数
匿名函数的定义方法与前面讲的传统的使用的方法是不同,使用关键词定义匿名函数。
匿名函数可以接收任意数目的参数,但是返回值只能是一个值或者表达式,他们不能包含命令或者多个表达式。
lambda 函数具有自己的命名空间,他们除了参数列表中的变量以及全局变量之外无法访问其他的变量。
lambda 函数无法直接被用来打印变量,lambda 函数需要一个表达式
输出:
6.全局变量与局部变量
在函数体中定义的变量具有局部作用域,他们只能在定义他们的函数之内被访问;全局变量可以在程序内被所有的函数访问。
输出:
基本 I/O
这一部分将对基本的I/O操作进行讲解,以Python 2.7举例,Python 3.X 中有部分语法会有所区别
1.在屏幕上进行输出
最简单的方法是使用,print内部可以放0或多个表达式子
输出:
2.从键盘读取输入
从键盘读取输入有两种方式:
raw_input
input
将读取一行,并且返回值为string
使用时python默认输入为一个有效的表达式,返回值为表达式的值
输出:
Python 3.x 中去除了函数,仅仅保留了,input将接受到的任何输入都当作字符串处理
3.文件读写
open函数
open函数被用来打开或者创建文件,它将会返回一个对象。
有几种常见的模式:
r 表示以只读方式打开 (默认模式)
rb 表示以二进制只读打开
r+ 以读写方式打开
rb+ 以二进制读写方式打开
w 以只写方式打开(如果已有文件,将会覆盖,如果没有将会创建)
wb 以二进制只写打开(如果已有文件,将会覆盖,如果没有将会创建)
w+ 以读和写的方式打开一个文件(如果已有文件,将会覆盖,如果没有将会创建)
wb+ 以二进制方式读和写的方式打开一个文件(如果已有文件,将会覆盖,如果没有将会创建)
a 表示 append,追加模式,如果文件存在的话,指针将位于文件的末尾,如果没有文件的话将会创建一个
ab 以二进制格式追加模式打开一个文件
a+ 以追加和读的方式打开一个文件
ab+ 以追加和读的方式打开二进制格式文件
buffer有可以选三种值: 0 表示不适用buffer,1 表示 buffer 文件中的一行,其余正整数表示buffer的字节数
4.file对象的属性
file.close
返回文件是否关闭
file.mode
返回打开文件的模式
file.name
返回文件的名字
输出:
5.close() 方法
file对象的close()方法用于将没有写入文件的信息写入文件以后关闭文件,在打开文件以后要记得关闭文件。
6.read() 和 write()
file 对象可以使用 read() 对文件的内容进行读取,在使用read()对文件进行读取的时候会一次性的读取文件的全部内容。还可以使用readline(),每次读取文件的一行,readlines()则可以一次读取文件中的全部行,并且返回一个列表。
write() 文件可以用于将内容写入文件,在写完文件之后一定要记得使用close()方法保证对于文件的更改已经写入了硬盘。
输出:
在对文件进行读写操作的时候,常用的一种方式是使用,这样Python在对文件读写完成后会自动调用方法:
输出:
错误处理
在Python之中常用的用于处理异常错误的方法有两种:
异常处理
使用assert
1.异常处理
在python中对异常进行处理时经常使用以下结构:
后面跟着需要执行的代码块,后面标注异常的类型,在出现对应的异常的时候执行对应代码块,无论程序是否正确执行后面接着的代码块都会在最后执行。Python 中内置的异常类型,参考这个连接。
输出:
以上代码尝试以模式打开一个文件,如果出现IO错误的话就输出没有此文件,最后输出finished。
2.Assert 语句
使用方法:
assert 将会判断后面跟的表达式是否为真,如果为false的话将会抛出异常,经常可以用于对变量类型,或者程序逻辑进行检查,比如我们写一个计算两个向量内积的程序:
输出:
输出:
参考资料
Tutorial Point
Python Wiki
下周一同一时间"玩转TensorFlow与深度学习模型"系列教程(六):tf.data 使用方法介绍
,请大家保持关注!
TensorFlow与深度学习模型系列教程
加入社群
天学网人工智能学院
培养符合企业需求的实战型AI人才
领取专属 10元无门槛券
私享最新 技术干货