On the learning of Python
python
上篇介绍了python的基础变量以及基本语法,本篇继续介绍常见的操作,也非常的实用。
0x01 基本规则
Python语句中有一些基本规则和特殊字符:
井号 # 表示之后的Python为注释
换行 \n 是标准的行分隔符
反斜线 \ 将继续上一行
分号; 将两个语句连接在一行中 具体使用在同一行书写多个语句
例如:import sys; x = 'foo'; sys.stdout.write(x + '\n')
冒号:将代码块的头和体分开
语句(代码块)用缩进块的方式体现
不同的缩进深度分隔不同的代码块
Python文件以模块的形式组织
python还支持多重赋值:x=y=z=1
python支持:+= -= *= /= %= **= >>= <<= &= ^= \=
python多元赋值(x,y,z) = (1,2,'a string')
标识符:
标识符是计算机语言中允许作为名字的有效字符串集合。
合法的Python标识符:
1.第一个字符必须是字母或者下划线
2.剩下的字符可以字母数字或者下划线
3.大小写比较敏感,就是区分大小写
4.标识符不能以数字开头
0x02 这是一些书面道理,可以帮助你理解python
Python对象
标准类型:
整型 int integer
布尔型 bool boolean
长整型 long integer
浮点型 float floating point real number
复数型 complex number
字符串 str string
列表 list
元组 tuple
字典 dict dictionary
內建类型:
Null 对象(none)
文件
集合/固定集合
函数/方法
模块
类
bool值为False的对象:
None
False
所有值为0的数
0(整型)
0.0(浮点型)
0L(长整型)
0.0+0.0j(复数)
""(空字符串)
[]空列表
()空元组
{}空字典
切片对象:
例如:
foolist = ['123','xba','155.11','abc']
foolist[::-1]
结果为:
['abc','155.11','xba','123']
标准类型操作符
对象值的比较:
数字类型根据数值的大小和符号比较,字符串按照字符序列值进行比较。
例如:
2 == 2
True
'abc' < 'xyz'
True
['3','abc'] == ['abc','3']
False
对象身份比较:
foo1 = foo2 =4.3实质上是foo1、foo2同时指向了一个新建的数字对象4.3
foo1 = 4.3,foo2 = foo1 道理同上
foo1 = 4.3,foo2 = 1.0 + 3.3 实质上是foo1、跟foo2指向了两个不同的新建对象4.3
标准类型对象身份比较符:
操作符 功能
obj1 is obj2 obj1 和 obj2 是同一个对象
obj1 is not obj2 obj1 和 obj2 不是同一个对象
布尔类型:
操作符 功能
not expr expr 的逻辑非(否)
expr and expr2 expr1 和 expr2的逻辑与
expr1 or expr2 expr1 和 expr2的逻辑或
标准类型內建函数
标准类型內建函数:
函数 功能
cmp(obj1,obj2) 比较obj1和obj2,根据比较结果返回整型i:
i<0 if obj1<obj2
i>0 if obj1>obj2
i==0 if obj1 == obj2
repr(obj) 或'obj' 返回一个对象的字符串表示
str(obj) 返回对象适合可读性好的字符串表示
type(obj) 得到一个对象的类型,并返回相应的type对象
type()
相当于php中的var_dump()
接受一个对象作为参数,并返回它的类型。它的返回值是一个类型对象。
type(123).__name__ 可以直接返回数据的类型
'int'
str() 和 repr()
內建函数str()和repr()或反引号操作符(``)可以方便的以字符串的方式获取对象的内容、
类型、数值等属性信息。
例如:
str(4.53-2j)
'(4.53-2j)'
repr([0,5,9,9])
'[0,5,9,9]'
`[0,5,9,9]`
'[0,5,9,9]'
三者基本没有差别,只是str返回的,用户可读性比较高,``和repr基本完全一样
isinstance() 跟type()类似
例如:查看python 4.2.py
进阶版 查看python 4.1.py
减少函数的调用次数,可以尝试调用模块来进行。
(模块是啥?都有神马?可以自己创建模块吗?)
Python类型操作符和內建函数总结
操作符/函数 描述 结果
字符串表示
`` 对象的字符串表示 str
內建函数
cmp(obj1,obj2) 比较两个对象 int
repr(obj) 对象的字符串表示 str
str(obj) 对象的字符串表示 str
type(obj) 检测对象的类型 type
值比较
< 小于 bool
> 大于 bool
<= 小于或等于 bool
>= 大于或等于 bool
== 等于 bool
!= 不等于 bool
<> 不等于 bool
对象比较
is 是 bool
is not 不是 bool
布尔操作符
not 逻辑反 bool
and 逻辑与 bool
or 逻辑或 bool
布尔比较总是返回True或者False
类型工厂函数
內建函数:
int(),long(),flaot(),complex()
str(),unicode(),basestring()
list(),tuple()
type()
工厂函数:
dict()
bool()
set(),frozenset()
object()
classmethod()
staticmethod()
super()
property()
file()
以上分类其实都是工厂函数,工厂函数可以简单的理解为,Python自带的一些函数,方便你的使用
标准类型的分类
存储模型:
分类 python类型
标量/原子类型 数值(所有的数值类型),字符串(q全部是文字)
容器类型 列表,元组,字典
更新模型:
x = 'abc'
x = '123'
i = 0
i = i+1
上述例子中,实质上并不是对象数据的更新(即:x从abc更新为123),而是旧的x被抛弃,
新建了一个x去存储数据。新对象取代了旧对象。可以通过id()查看
分类 Python类型
可变类型 列表,字典
不可变类型 数字,字符串,元组
访问模型:
直接存取:
对非容器类型可以直接访问。所有的数值类型都归到这一类。
顺序:
序列类型是指容器内的元素按从0开始的索引顺序访问,一次可以访问一个或多个元素。
映射:
映射类型类似于序列的索引属性,但是它是通过一个唯一的键来访问,它容纳的是
哈希键-值对的集合。
以访问模型为标准的类型分类
访问模型
分类 Python类型
直接访问 数字
顺序访问 字符串、列表、元组
映射访问 字典
标准类型分类
数据类型 存储模型 更新模型 访问模型
数字 标量 不可更改 直接访问
字符串 标量 不可更改 顺序访问
列表 容器 可更改 顺序访问
元组 容器 不可更改 顺序访问
字典 容器 可更改 映射访问
不支持的类型
1.char或byte
2.指针
3.int vs short vs long
4.float vs double float在Python中一般就够用了
其实这些理论就是帮你理解一些细节部分,虽然目前我对python也是一知半解的水平都说不上,就我碰到过的一些错误,感觉这些还是有所帮助的。
0x03 小结
之所以本篇没有放上脚本,是因为我很久都没写了,最近没时间,所以我就只能放点这些书面内容了,目前还是以更新技巧为主。最近这几天搞完,我就可以慢慢放上我学的时候写的一些程序,还是比较逗逼的。大家就把我这些当书去看吧~
因为有人想学python,所以我就在写这些,虽然我也是个菜鸡,嘿嘿嘿~