python的学习之路二

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,所以我就在写这些,虽然我也是个菜鸡,嘿嘿嘿~


Reprint please specify: wh1te python的学习之路二

Previous
python的学习之路三 python的学习之路三
On the learning of Python python在第一篇的时候,我就提过,python真正厉害的地方在于它的库,pytohn的库十分的多,库里各式各样的函数为我们提供了很多的方便。当你学会了python的基础语法,剩下来的
2018-05-10
Next
namp的使用 namp的使用
About nmap About nmap根据最近实际渗透测试的经验总结的,也借鉴了几位网上大佬的讲解,写了下自己的心得。 先对nmap做个了解。 0x00 前言nmap是一款网络端口探测/扫描器,在渗透测试以及日站里都有很大
2018-04-23
TOC