Python_notes_01

Posted gulidon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_notes_01相关的知识,希望对你有一定的参考价值。

#简介
-Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言
-Python的设计具有很强的可读性
    -解释性语言
    -交互式语言
    -面向对象语言
    -初学者语言
    
#发展历史
-Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的
-Python源代码遵循GPL(GNU General Public License)协议

#特点
-易于学习
-易于阅读
-易于维护
-广泛的标准库
-互动模式
-可移植
-可扩展
-数据库:提供主要商业数据库的借口
-GUI编程:支持GUI可以创建和移植许多系统调用
-可嵌入:嵌入C++以让程序用户获得“脚本化”能力

#环境搭建
-anaconda+pycharm

#基础语法
-print 输出、打印
    print(“hello python”)
    hello python
-标识符
    -在Python里,标识符由字母、数字、下划线组成,但不能以数字开头
    -标识符区分大小写
    -以单下划线开头的(_foo)代表不能直接访问的类属性,需要通过类提供的接口进行访问,不能用from xxx import * 而导入
    -以双下划线开头的(__foo)代表类的私有成员
    -以双下划线开头和结尾的(__foo__)代表特殊方法专用标识,如构造函数:__init__()
-保留字符
    -保留字不能用作常熟或变量,以及其它标识符名称
    -所有Python 的关键字只包含小写字母
        - and
        - exec
        - not
        - assert
        - finally
        - or
        - break
        - for
        - pass
        - class
        - from
        - print
        - continue
        - global
        - raise
        - def
        - if
        - return
        - del
        - import
        - try
        - else
        - is
        - with
        - except
        - lambda
        - yield
-行和缩进
    -上下文保持相同,一个缩进一般是一个tab或4个空格
    -可以使用斜杠()将一行的语句分为多行显示,语句中包含[] {} ()的不需要
-引号和#号
    - ‘xxx‘ 可表示字符串
    - "xxx" 可表示字符串
    -‘‘‘xxx‘‘‘ 可用作注释,一般是比较长的,如段落级的注释
    - # 单行注释
-空行和空格
    -良好习惯,便于后期维护或重构
    -函数之间或类的方法之间用空行分隔,表示一段新的代码的开始,类和函数入口之间也用一行空行分隔,以突出函数入口的显示
    
#变量类型
-变量存储在内存的值,可以指定不同的数据类型
-变量赋值
    -用(=)来赋予
    -可以多个变量同时赋值
        eg:a = b = c = 1
            a, b, c = 1, 2, 3

-标准数据类型
    -Number 数字
        -int 有符号的整型
        -float 浮点型
        -complex 复数
    -String 字符串
        -编程内表示文本的数据类型
    -List 列表
        -用[]标识,最通用的复合数据类型
        -切片
            -列表的值可以切割成片
                -如:[0:2]
    -Tuple 元组
        -用()标识
        -可以看作一个只读的list
    -Dictionary 字典
        -用{}标识
        -由索引(key)和它对应的值(value)组成
        
-数据类型转换
    -函数                   -描述
    -int(x[,base])          -将x转化为一个整数
    -float(x)               -转化为浮点型
    -complex(real[,imag])   -创建一个复数
    -str(x)                 -转化为字符串
    -repr(x)                -将对象x转化为表达式字符串
    -eval(str)              -用来计算在字符串中有效Python表达式,并返回一个对象    
    -tuple(s)               -转为元组
    -list(s)                -转为列表
    -set(s)                 -转为可变集合
    -dict(d)                -创建一个字典,d必须是一个序列(key,value)元组
    -frozenset(s)           -转为不可变集合
    -chr(x)                 -将一个整数转化为一个字符
    -unichr(x)              -将一个整数转化为Unicode字符
    -ord(x)                 -将一个字符转化为它的整数值
    -hex(x)                 -将一个整数转化为16进制字符串
    -oct(x)                 -将一个整数转化为8进制字符串
    
#运算符
-举个例子:4+5=9     4和5被称为 操作数 ,‘+’称为运算符
-支持下列类型的运算符
    -算术运算符
        - + 两个对象相加
        - - 两个对象相减
        - * 两个对象相乘
        - / 两个对象相除
        - % 取模,也就是返回余数
        - ** 幂,返回x的y次幂
        - // 取整除
    -比较(关系)运算符
        - == 比较对象是否相等
        - != 不等于
        - > 大于
        - < 小于
        - >= 大于等于
        - <= 小于等于
    -赋值运算符
        - = 简单的赋值运算符
        - += 加法赋值运算符
        - -= 减法赋值运算符
        - *= 乘法赋值运算符
        - /= 除法赋值运算符
        - %= 取模赋值运算符
        - **= 幂赋值运算符
        - //= 取整除赋值运算符
    -逻辑运算符
        - and 布尔“与”
        - or 布尔“或”
        - not 布尔“非”
    -位运算符
        -按位运算符是把数字看成2进制来计算的
            - & 按位与运算符
            - | 按位或运算符
            - ^ 按位异或运算符
            - ~ 按位取反运算符
            - << 左移动运算符
            - >> 右移动运算符
    -成员运算符
        - in 如果在指定的序列中找到值返回true,否则返回false
        - not in 如果在指定的序列中没有找到值返回true,否则返回false
    -身份运算符
        -用于比较两个对象的存储单元
            - is 如果两个标识符引用自同一对象返回true,否则返回false
            - is not 如果两个标识符引用的不是同一对象返回true,否则返回false
#条件语句/分支循环
-通过一条或多条语句的执行结果(true或false)来决定执行的代码块
-可以嵌套使用,但不推荐
    - if语句
        if 判断条件 :
            执行语句...
    - 双向分支
        if 判断条件 :
            执行语句...
        else:         
            执行语句...
    -多路分支
         if 判断条件 :
            执行语句...
         elif 判断条件: #可以有很多个
            执行语句...
         else:         #可选
            执行语句...          
#循环语句
-重复执行某些固定动作或处理基本固定的事物
-分类
    -for循环
        for 变量 in 序列:
            语句1
            语句2
            ...
        else:         #可选
            语句1
            语句2
            ...
    -while循环
        while 条件表达式:
            语句块        
-循环之break,continue,pass
    -break:无条件结束整个循环,简称循环猝死
    -continue:无条件结束本次循环,重新进入下一循环
    -pass:不做任何事情,空语句,多为保持程序的完整性而作占位用
#迭代器与生成器
-迭代器
    -迭代是Python最强大的功能之一,是访问集合元素的一种方式,字符串,列表或元组对象都可用于创建迭代器
    -迭代器是一个可以记住遍历的位置的对象
    -迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
    -迭代器有两个基本的方法:iter() 和 next()
-生成器
    -在 Python 中,使用了 yield 的函数被称为生成器(generator)
    -跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
    -在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行
    -调用一个生成器函数,返回的是一个迭代器对象
#函数
-代码的一种组织形式
-一个函数一般完成一项特定的功能
-函数的使用
    -函数需要先定义
    -使用函数俗称调用
        def 函数名称(参数列表):
            函数体
    -函数名称自己定义,约定俗成,大驼峰给类使用
    -参数
        -形参(形式参数)
            -函数定义时用到的参数没有具体值,只是一个占位符号
        -实参(实际参数)
            -调用函数实际输入的值
    -返回值
        -return:返回执行结果


#匿名函数
    -python 使用 lambda 来创建匿名函数,不再使用 def 语句这样标准的形式定义一个函数
    -lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去
    -lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数

#变量作用域
-变量有作用范围限制     
-分类
    -全局(global): 在函数外部定义
    -局部(local):在函数内部定义
-变量的作用范围
    -全局变量:在整个全局范围都有效
        - 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
    - 局部变量:在局部范围可以使用
        - 局部变量在全局范围无法使用
-LEGB原则
    - L(Local)局部作用域
    - E(Enclosing function locale)外部嵌套函数作用域
    - G(Global module)函数定义所在模块作用域
    - B(Buildin): python内置魔抗的作用域
#递归函数
- 含税直接或者间接调用自身
- 优点:简洁,理解容易
- 缺点:对递归深度有限制,消耗资源大
- python对递归深度有限制,超过限制报错
- 在写递归程序的时候,一定注意结束条件
-经典案例,汉诺塔

#数据结构
-list 列表
    -列表可以修改,而字符串和元组不能
    -列表方法
        list.append(x)      把一个元素添加到列表的结尾
        list.extend(L)      通过添加指定列表的所有元素来扩充列表
        list.insert(i,x)    在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引
        lsit.remove(x)      删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误
        lsit.pop(i)         从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素
        lsit.clear()        移除列表中的所有项,等于del a[:]
        lsit.index(x)       返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误
        list.count(x)       返回 x 在列表中出现的次数
        list.sort()         对列表中的元素进行排序
        lsit.reverse()      倒排列表中的元素
-tuple 元组
    -元组可以看成是一个不可更改的list
    -元组特性
        -是序列表,有序
        -元组数据值可以访问,不能修改,不能修改,不能修改
        -元组数据可以是任意类型
        -总之,list所有特性,除了可修改外,元组都具有
        -也就意味着,list具有的一些操作,比如索引,分片,序列相加,相乘,成员资格操作等,一模一样
        -元组的函数,基本跟list通用
-set 集合
    -集合是高中数学中的一个概念
    -一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
    -特性
        -集合内数据无序,即无法使用索引和分片
        -集合内部数据元素具有唯一性,可以用来排除重复数据
        -集合内的数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据
-dict 字典(key,value)
    -创建有值的字典, 每一组数据用冒号隔开, 每一对键值对用逗号隔开
    -用dict创建有内容字典
    -利用关键字参数    
    -特性
        - 字典是序列类型,但是是无序序列,所以没有分片和索引     
        - 字典中的数据每个都有键值对组成
-遍历
  ...

(未完待续...)

 


















































































































































































































































































































以上是关于Python_notes_01的主要内容,如果未能解决你的问题,请参考以下文章

Python_notes_04

Python_notes_03

Python学习笔记(基本功能的使用)

翻译:《实用的Python编程》01_01_Python

week01_python基础语法__01

Python Flask01