笔记一

2.1,安装Python;2.2,安装TensorFlow

环境配置

Python版本和TensorFlow版本选择,书中以python3.6.4和TensorFlow1.4进行讲解的,考虑到书中的内容是两年前的,并且我所参考的代码是基于TensorFlow1.12.0的,又考虑到不同编译环境合并困难,因此,我决定新建一个conda环境,版本采用如下策略。

python使用conda环境指定的3.6
numpy==1.16.3
protobuf=3.7.1
TensorFlow=1.12.0

装完TensorFlow之后,其余的依赖包都自动装好了。我发现,之前pytharm给其他project安装过某个moudle,pycharm在为新的project准备环境时会直接copy过来,就不会去网上重新下载,这样就很快,不受网络环境的限制,很nice,不错不错。

2.4,知识背景准备

2.4.1,怎样输入python程序

  • 一定要用UTF-8来保存python程序
  • pycharm的默认编码就是UTF-8,所以,使用pycharm不用每次进行设置,但是使用普通文本编辑器需要注意这个问题。
  • 保存的时候记得保存文件的位置,保存的文件夹都不要用带空格的英文或者数字命名。
  • 程序中用到的标点符号如果没有特殊情况,一律使用英文标点,误输了中文标点会导致程序运行错误。

2.4.2,怎么执行python程序

python文件(.py文件)的执行方法

$ python test.py

上述命令是在命令行执行test.py的格式。
注意两个point:

  • python可以替换成某一个特定目录下的python.exe,注意要使用**python.exe的绝对路径****。
  • test.py可以换成非当前目录下的py文件,但是需要使用该py文件的绝对路径作为python.exe的参数。

python交互式界面执行python程序

在cmd或者terminal中,键入python,便进入了python交互式界面,在>>>直接输入要执行的python语句即可。

类比联想
.py文件被称为脚本文件,我们还遇到过bash脚本。因此:

  • bash脚本是一组shell命令。bash脚本可以以一个脚本的粒度执行;这组shell命令还可以在terminal中逐个输入并执行。
  • python脚本是一组python语句。python脚本可以以一个脚本的粒度执行;这组python语句还可以在python交互式界面逐个输入并执行。
  • 我们注意到某些术语是互通的,shell解释器python解释器

2.4.3,变量(variable)

变量的命名

python对变量名的大小写是 敏感 的,以相同字母命名变量但是大小写不同,Python会认为他们是不同的变量。示例:

theredapple
TheRedApple
theRedApple
THEREDAPPLE

基本类型的变量

基本类型书中介绍了三种,分别是:int,float,str

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>D:\Program_Files_x64\Anaconda3\envs\deeplearning_Py_TF\python.exe
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 19
>>> b = 9.18
>>> type(a)
<class 'int'>
>>> type(b)
<class 'float'>
>>> c = a + b
>>> type(c)
<class 'float'>
>>> print(c)
28.18
>>>
>>> a = "good"
>>> b = "morning"
>>> c = a + " " + b
>>> print(c)
good morning
>>> type(a)
<class 'str'>
>>> type(b)
<class 'str'>
>>> type(c)
<class 'str'>
>>>

复合类型的变量

复合类型书中介绍了两种,分别是:数组(array)和字典。
注意:书中术语数组的英文使用的是array,根据下边代码示例中的type(a)的输出(在示例的末尾),数组对应的英文术语应该是list。字典的英文,书中没有给出,根据下边代码示例中的type(info)的输出(在示例的末尾),字典对应的英文是dictionary,简写成dict。

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>D:\Program_Files_x64\Anaconda3\envs\deeplearning_Py_TF\python.exe
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = [1, 2, 3]
>>> print(a[0])
1
>>> print(a[2])
3
>>> a[2] = 5
>>> print(a[2])
5
>>>
>>> info = {"name": "Adam", "height": 175, "weight": 60}
>>> print(info["name"])
Adam
>>> print(info["height"])
175
>>> print(info["weight"])
60
>>> info["height"] = 180
>>> print(info["height"])
180
>>>
>>> print(info)
{'name': 'Adam', 'height': 180, 'weight': 60}
>>> print(a)
[1, 2, 5]
>>> type(a)
<class 'list'>
>>> type(info)
<class 'dict'>

数组没什么好说的,和C类似,数组下标从0开始。

数组是通过通过数字来索引;字典通过文字来索引,与我们常用的外语字典一样。
字典变量的定义:

  • 定义字典变量的时候,要用大括号{}括起来,所有的文字也就是字符串要用双引号括起来。
  • 在上个例子中,Adam也是字符串,因此也用双引号括起来。
  • 数字无须括起来。
  • 索引的字符串和具体的值之间,要用冒号分隔。
  • 字典的两个元素用逗号分隔。

引用字典中某个值的时候,使用值对应的索引字符串进行索引,print(info["name"])
字典中某个值的修改,info["height"] = 180

2.4.4,函数(方法)

函数(function),方法(method)
函数参数(parameter)

print()和type()

上边已经引入了

str()

代码示例

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>D:\Program_Files_x64\Anaconda3\envs\deeplearning_Py_TF\python.exe
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("我的身高是" + 175)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> print("我的身高是" + str(175))
我的身高是175
>>>

函数str()把175这个数字转成字符串,即把 int 转成了 str

2.4.5,对象

对象(object)
(父对象类),男人(子对象类),女人(子对象类)
某一个具体的男人,“亚当”是对象类男人的一个“对象实例”,简称“实例”;“夏娃”就是对象类女人的实例。
包含男人女人可以被叫做一个包(package)。
一个包中可以包含很多个对象类。

使用对象来对事物进行分类的目的是:把与事物有关的数据和行为都合并在一个对象类中,这样看起来逻辑更清晰,管理起来更方便。实际上我们定义一个对象类,主要是为了把与它有关的变量和函数集中起来管理。

在python交互式环境中输入如下代码:

import sys

该代码的作用是导入一个叫做sys的对象类,import是导入的意思。
python中虽然内置了一些对象(整数、字符串都是对象),但剩余大多数即使是python安装后自带的对象(或者叫包,一个包有时候可能包含有多个对象)也需要在使用前以这种方法导入。其余第三方提供的包也需要导入。
sys是一个包含了与python语言系统相关的变量和函数的对象类包,以后对这些对象类包都直接称为对象包或者更简单的包。导入sys包之后,可以按照代码示例中使用sys包中已经定义好的变量和函数。

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>D:\Program_Files_x64\Anaconda3\envs\deeplearning_Py_TF\python.exe
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import sys
# 使用sys包中已经定义好的变量
>>> print(sys.version)
3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)]
# 使用sys包中已经定义好的函数
>>> print(sys.getwindowsversion())
sys.getwindowsversion(major=10, minor=0, build=18362, platform=2, service_pack='')
>>> sys.exit(0)

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>

一般把对象的变量称为对象的属性或成员变量,把对象的函数称为对象的成员方法或成员函数。
成员(member)

对象类的成员和对象实例的成员之间的区别。
前面我们说的成员变量和成员函数其实都是对象类的成员。但有时候,某些成员不是针对对象类的,而是针对对象实例的。下面看这个例子:

(deeplearning_Py_TF) D:\inst2vec_experiment\PycharmProjects\deeplearning_Py_TF>D:\Program_Files_x64\Anaconda3\envs\deeplearning_Py_TF\python.exe
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1.0
>>> print(a.is_integer())
True
>>> a = 1.2
>>> print(a.is_integer())
False
>>>

这个地方,书中解释的有问题(page 53),is_integer()就是float类的方法,在pycharm跳转得到如下结果:

class float(object):
    def is_integer(self, *args, **kwargs): # real signature unknown
        """ Return True if the float is an integer. """
        pass

我觉得书中想阐述的可能是classmethod这个东西,详细内容请参考博客

2.4.6,条件判断和分支

a = 10
b = 15

if a > b:
    print(a - b)
else:
    print(b - a)
a = 10
b = 10

if a > b:
    print(a - b)
elif a < b:
    print(b - a);
else:
    print("a == b")

python中的代码块是缩进控制的。我自己使用pycharm自动给的缩进来控制代码结构,而不是自己敲tab或者多个空格。

书中说,tab和空格都可以,但是整个程序要统一缩进方式。

2.4.7,循环

for循环

for i in range(5):
    print(i)

上述代码的输出是:

0
1
2
3
4

以后看到这个代码的时候不要想这么多,不要想range的返回值是啥,就记住这种代码的意思是让for下面的代码循环执行range函数中参数所表示的数值那么多次就可以了。
不成文的惯例,i,j,k这些字母来命名循环变量。

2.4.8,注释

# 单行注释

2.4.9,程序运行时出现错误怎么办?

任何编程高手,写程序难免出现错误,所以重要的不是避免错误,而是出现错误的时候如何才能知道错在哪里,以便进行相应的修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值