一认识python image.png
(1)
image.png由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!
Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
(2)
目前Python主要应用领域:
云计算: 云计算最火的语言, 典型应用OpenStackWEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas系统运维: 运维人员必备语言金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测图形GUI: PyQT, WxPython,TkInter。
二、
pyhton运算:
image.png
三、
pyhton变量:
* 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
* 等号(=)用来给变量赋值
* = 左边是一个变量名
* = 右边是存储在变量中的值
什么是变量
对于变量,在数学中我们已经了解过,就是一个值可能会改变的量。在C++中,我们对变量的认识应该相当于一个标识符,创建一个变量,即开辟一块内存然后给这块内存起个名字,那么这个名字就是“变量”,当然,这个变量的含义和内存地址以及指针都是不相同的。
那么在Python中,变量意味着什么呢?按照我的理解,一言蔽之,就是一个指针。这确实和之前学过的强类型语言是有不同的。为什么这么说呢?首先,python中的变量是没有类型的,有类型的是“对象”,而不是变量。变量没有类型,那么就意味着它可以随意指向任何对象。在强类型语言中,变量其实都是有具体的类型来限制的,规定一个类型的变量只能被赋值与该类型相同或兼容的值。但是在python中,显然变量的自由度更大。其次,之前学过体系结构的同学都应该了解,指针的内存空间大小是与类型无关的,其内存空间只是保存了所指向数据的内存地址。之所以说指针也有类型,是因为在计算偏移量的时候,确实需要类型相关的信息。所以,从深层次的含以上来理解,python中的变量与强类型语言中的指针非常相似。
In [1]: a = 3
In [2]: a = "abc"
In [3]: a
Out[3]: 'abc'
从上述代码中也可以明显的印证我们上面对python中变量行为的总结是正确的,与指针的行为非常相似。
什么是对象
我的理解是:对象=确定内存空间+存储在这块内存空间中的值。这一点其实和java有些相似。<<java编程思想>>这本书前面第一章,就对对象和引用这两个概念做了很清晰的区分。Java中,对象是分配在堆上的,存储真正的数据,而引用是在堆栈中开辟的内存空间用于引用某一个对象。抛开java中引用的概念不谈,两种语言对于对象这个概念的理解,我认为还是可以等价的,都是数据+内存空间感觉。Python中,对象才有类型,不同的对象可以拥有不同类型的数据。
什么是引用
引用在Python中的语义应该是一种关系,即变量和对象之间的关系,其实也就是指针指向某一块内存空间的关系。既然是变量和对象之间的关系,那么其实就意味着,对于一个对象来说,和不同的变量可能存在着多个“引用”关系。因为变量是无类型的,他想关联谁就可以指向谁,这也就牵扯到了一个“引用计数”的概念,python中的gc大体上就是使用这种原理在做的。
既然说到多个变量可以引用同一个对象,那么就不得不说一下,如果其中一个引用改变了值,会影响到其他指向这个对象的变量么?
In [4]: a = 2
In [5]: b = a
In [6]: a
Out[6]: 2
In [7]: b
Out[7]: 2
In [8]: b =3
In [9]: a
Out[9]: 2
In [10]: b
Out[10]: 3
从上面的代码结果来看,答案应该是否定的。如果了解清楚变量和对象的语义就能对这个问题很容易做出判断,变量值的改变,就相当于指针变量内存空间内值的改变,也就是指向的对象换了一个,但其实之前所指向对象的内容是并没有收到影响的。
但是也有特例,比如列表,指向列表的变量通过索引访问的方式,可以直接改动列表在该索引处存储的值。这个时候,如果有两个变量同时引用一个列表对象,那么其中任何一个变量利用这种方式对列表的修改,都会影响到另外一个。
为了能够避免这种情况,可以对列表单独拷贝一份。两个变量互不干涉,而拷贝列表最直接的方式,莫过于“切片”操作了。
变量的比较
对于变量的比较,见得最多的,莫过于“==”和“is”。前者比较的是对象所存储的数据的值是否相等,后者则比较的是两个变量是否都引用了同一个对象。这些显而易见的东西,很多人应该不以为然,但是一些因语言内部优化的小细节,可能会打破你之前的认识。
In [12]: a = 3
In [13]: b = 3
In [14]: a == b
Out[14]: True
In [15]: a is b
Out[15]: True
按照我们之前所讲的,a和b两个变量应该是引用了两个不同的对象,但是这两个对象内存中的值都是3。但是,a is b得到的结果却是True。原因有如下两点:
Python在底层做了一定的优化,对于使用过整数以及字符串都会被缓存起来。所以上述b引用的应该是被缓存过的3
之所以采用这种优化的方式,是因为python中数字和字符串一经创建都是不可修改的。所以不会出现,因使用了缓存的对象值造成“脏读”的问题
结尾
任何一种语言或是一种知识,表面上看起来都是有很多相似的地方的。这也是计算机相关知识的一个比较大的特点。但是很多东西,稍微的往底层走一点,其实还是差别很大的。接触了c++, golang, java, python这几种语言,仅仅是在对象,变量,引用这种最基本的概念上还是有挺多细节上的不同的,这也恰恰能够体现了每种编程语言的设计哲学。所以现在想想,多接触几门语言,并不是一件坏事。
变量的输入:
(1) 关于函数
* 一个 提前准备好的功能(别人或者自己写的代码),可以直接使用,而 不用关心内部的细节
* 目前已经学习过的函数
函数
说明
print(x)
将 x 输出到控制台
type(x)
查看 x 的变量类型
(2) input 函数实现键盘输入
* 在 Python 中可以使用 input 函数从键盘等待用户的输入
* 用户输入的 任何内容 Python 都认为是一个 字符串
(3)类型转换函数
变量的格式化输出
* 在 Python 中可以使用 print 函数将信息输出到控制台
* 如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符
* % 被称为 格式化操作符,专门用于处理字符串中的格式
* 包含 % 的字符串,被称为 格式化字符串
* % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
下面是完整的,它可以与%符号使用列表:
0.1 标识符和关键字
1.1 标识符
image.png标示符就是程序员定义的 变量名、函数名
名字 需要有 见名知义 的效果,见下图:
- 标示符可以由 字母、下划线 和 数字 组成
- 不能以数字开头
- 不能与关键字重名
1.2 关键字
* 关键字 就是在 Python 内部已经使用的标识符
* 关键字 具有特殊的功能和含义
* 开发者 不允许定义和关键字相同的名字的标示符
通过以下命令可以查看 Python 中的关键字
image.png
In [1]: import keywordIn [2]: print(keyword.kwlist)
提示:关键字的学习及使用,会在后面的课程中不断介绍
* import 关键字 可以导入一个 “工具包”
* 在 Python 中不同的工具包,提供有不同的工具
python支持以下几种运算符
* 算术运算符
下面以a=10 ,b=20为例进行计算
运算符
描述
实例
加
两个对象相加 a + b 输出结果 30
减
得到负数或是一个数减去另一个数 a - b 输出结果 -10
乘
两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/
除
x除以y b / a 输出结果 2
//
取整除
返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
%
取余
返回除法的余数 b % a 输出结果 0
**
幂
返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
9/2.0
4.5
9//2.0
4.0
* 赋值运算符
运算符
描述
实例
=
赋值运算符
把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7
a, b = 1, 2
a
1
b
2
* 复合赋值运算符
运算符
描述
实例
+=
加法赋值运算符
c += a 等效于 c = c + a
-=
减法赋值运算符
c -= a 等效于 c = c - a
*=
乘法赋值运算符
c *= a 等效于 c = c * a
/=
除法赋值运算符
c /= a 等效于 c = c / a
%=
取模赋值运算符
c %= a 等效于 c = c % a
**=
幂赋值运算符
c **= a 等效于 c = c ** a
//=
取整除赋值运算符
c //= a 等效于 c = c // a
四、
常用的数据类型转换:
结语
Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
注意:Python的整数没有大小限制。
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。
网友评论