python自我学习 一 python语法,及变量类型
python语句后面不需要分号,这和 谷歌主推的kotlin 语言一样,或许,以后的新语言,也会采用这种形式。
使用过C的都知道,变量要先声明定义,才能使用,变量有很多类型,本以为php语言用 var就把所有类型包括进去,够省略了,没想到python变量直接不用声明。
python变量直接赋值即可使用,个人理解为这样的状况: 赋值的时候,直接创建赋值内容对应的类型对象,这个解释器可自动判断何种对象,分配好了内存空间,创建好了对象,然后将变量作为标识,分配给这个对象,以便标识使用。
这样一来,解释器自己可根据具体赋值判断何种类型,所以变量就不需要在声明了,直接赋值使用就可以了。
书写规则
python,就我目前学习的过程看,去掉了用大括号标识语句块,而是采用了缩进的方式,但是不知道为什么采用这种方式,可能有助于加快解释器执行,加快编译吧。
这就要求,首行顶格,同一层次对齐。
基本变量类型
isinstance() 与 type()
判断对象类型,isinstance() 很圆滑的,很世故很讲关系,考虑的多面些,考虑到了继承关系。
type () 很简单,很单纯,一根筋,老子才不考虑你祖宗十八代是谁,我只看你自己的实力,你父亲祖父当大官,和我半毛钱也没关系。
多变量赋值
这种方式与C语言一样,但是意义却不一样,C语言是在内存中分配三个整形空间,分别将其赋值为1,python的含义是:创建一个整形对象,三个变量被分配到了相同的内存上。
#为多个对象指定多个变量a,b,c=1,2,"gudianxiaoshuo"
这种赋值方式,就和其它语言有些不一样了。
相当于连续创建了三个内存空间,分别分配对应的变量标识
标准数据类型
python提供了六种标准数据类型
Number 包括 int float bool complex
String
List
Tuple
Sets
Dictionary
1、数据Numer
Print格式化的语法与其它语言有差别
格式化我用的最爽的vc中CString的Format,当然其它语言也能实现类似功能
Python中引用和其它语言类似 %d %f %s
但是具体的值的语法规则有点另类,它不是用逗号隔开,而是使用了%( )作为实际值,对应的实际值都放在了小括号里面了
如:
数值运算
String
字符串使用单引号或双引号括起来,单引号双引号含义一样,(不像PHP,可能有两种不同含义)
字符串截取也很有特色,
使用 变量[iStart][iEnd]
但是要注意,实际截取的字符串范围为[iStart,iEnd) ,包含开头的iStart,但不包含结尾的iEnd
还有一个事,要注意,这里的字符串是常量,不能改变
和其它语言一样,反斜杠也是转义
不同的是,在字符串前面加r 表示不转义,原样输出
字符串索引方式:
这个也比较有意思,比C++灵活多了
从左往右 从0开始 0 代表最开始的字符从右往左 从-1开始 -1代表最后的字符 -2代表倒数第二位的字符
List 列表
在数据结构中,list是存储线性关系的最常用的数据结构。
内部实现有两种类型:顺序存储、链式存储。
数组就是典型的顺序存储,连续的数据存储空间。链表就是链式存储,每个元素的位置不一定连续。
所幸,在python中,你不必考虑它内部是如何实现的,直接拿来用就可。
python的列表,相当于扩展的数组,数组只能存储一种类型,而python中列表可以同时存储多种类型。
list与数组类似,用 [] 赋值
list赋值
Tuple元组
与列表类似,不同之处在于元组不能修改,类似于C++的常量数组
特殊之处,定义空元组 和 1个元素的元组
string、list和tuple都属于有序的sequence(序列)。
下面要介绍的集合和字典就不是有序的序列了
set集合
由{} 或 set()创建
# 集合 无序 不重复# 创建空集合用set() 而不是 {}# {}是创建一个空字典
Dictionary字典
为什么起字典这么奇怪的类型名字。
其实,大部分人很久没用字典了,估计都想不起来怎么用了。
字典是干嘛的,是解释字的。
字典中的字都是作为关键字,不能重复,找到这个关键字,然后再看它的含义。
Dic【关键字】:含义
而Python中就采用了这种逻辑对应方式:
Dic[关键字 ]=关键字对应的值
内部应该是使用的哈希表,哈希表可以实现快速查找
我们不必关注内部实现方式,只要能拿来用就可以,