Python总结:Python基础(一)

发布时间:2019-07-17 10:13:54编辑:auto阅读(1678)

    Python之路【第二篇】:Python基础(一)


    入门知识拾遗

    一、作用域

    对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用。

    1
    2
    3
    if 1==1:
        name = 'wupeiqi'
    print  name

    下面的结论对吗?

    外层变量,可以被内层变量使用

    内层变量,无法被外层变量使用

    二、三元运算

    1
    result = 1 if 条件 else 2

    如果条件为真:result = 值1
    如果条件为假:result = 值2

    三、进制

    • 二进制,01

    • 八进制,01234567

    • 十进制,0123456789

    • 十六进制,0123456789ABCDE

    Python基础

    对于Python,一切事物都是对象,对象基于类创建

    所以,以下这些值都是对象: "wupeiqi"、38、['北京', '上海', '深圳'],并且是根据不同的类生成的对象。

    一、整数

    如: 18、73、84

    每一个整数都具备如下功能:

    int

    二、长整型

    可能如:2147483649、9223372036854775807

    每个长整型都具备如下功能:

    long

    三、浮点型

    如:3.14、2.88

    每个浮点型都具备如下功能:

    float

    四、字符串

    如:'wupeiqi'、'alex'

    每个字符串都具备如下功能:

    str

    注:编码;字符串的乘法;字符串和格式化

    五、列表

    如:[11,22,33]、['wupeiqi', 'alex']

    每个列表都具备如下功能:

    list

    注:排序;

    六、元组

    如:(11,22,33)、('wupeiqi', 'alex')

    每个元组都具备如下功能:

    tuple

    七、字典

    如:{'name': 'wupeiqi', 'age': 18} 、{'host': '2.2.2.2', 'port': 80]}

    ps:循环时,默认循环key

    每个字典都具备如下功能:

    dict

    1
    2
    3
    练习:元素分类
    有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66 , 'k2': 小于66}

     八、set集合

    set是一个无序且不重复的元素集合

    set

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    练习:寻找差异
    # 数据库中原有
    old_dict = {
        "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 },
        "#2":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
        "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
    }
     
    # cmdb 新汇报的数据
    new_dict = {
        "#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 800 },
        "#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
        "#4":{ 'hostname':c2, 'cpu_count': 2, 'mem_capicity': 80 }
    }
     
    需要删除:?
    需要新建:?
    需要更新:? 注意:无需考虑内部元素是否改变,只要原来存在,新汇报也存在,就是需要更新

    demo 

    九、collection系列

    1、计数器(counter)

    Counter是对字典类型的补充,用于追踪值的出现次数。

    ps:具备字典的所有功能 + 自己的功能

    1
    2
    3
    c = Counter('abcdeabcdabcaba')
    print c
    输出:Counter({'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1})

    Counter

    2、有序字典(orderedDict )

    orderdDict是对字典类型的补充,他记住了字典元素添加的顺序

    OrderedDict

    3、默认字典(defaultdict) 

    学前需求:

    1
    2
    有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
    即: {'k1': 大于66 , 'k2': 小于66}

    原生字典解决方法

    defaultdict字典解决方法

    defaultdict是对字典的类型的补充,他默认给字典的值设置了一个类型。

    defaultdict

    4、可命名元组(namedtuple) 

    根据nametuple可以创建一个包含tuple所有功能以及其他功能的类型。

    1
    2
    3
    import collections
     
    Mytuple = collections.namedtuple('Mytuple',['x', 'y', 'z'])

    Mytuple

    5、双向队列(deque)

    一个线程安全的双向队列

    deque

    注:既然有双向队列,也有单项队列(先进先出 FIFO )

    Queue.Queue

    迭代器和生成器

    一、迭代器

    对于Python 列表的 for 循环,他的内部原理:查看下一个元素是否存在,如果存在,则取出,如果不存在,则报异常 StopIteration。(python内部对异常已处理)

    listiterator

    二、生成器

    range不是生成器 和 xrange 是生成器

    readlines不是生成器 和 xreadlines 是生成器

    1
    2
    3
    4
    >>> print range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> print xrange(10)
    xrange(10)

    生成器内部基于yield创建,即:对于生成器只有使用时才创建,从而不避免内存浪费

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    练习:<br>有如下列表:
        [13, 22, 6, 99, 11]
     
    请按照一下规则计算:
    13 22 比较,将大的值放在右侧,即:[13, 22, 6, 99, 11]
    22 6 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]
    22 99 比较,将大的值放在右侧,即:[13, 6, 22, 99, 11]
    99 42 比较,将大的值放在右侧,即:[13, 6, 22, 11, 99,]
     
    13 6 比较,将大的值放在右侧,即:[6, 13, 22, 11, 99,]
    ...

    Demo

    深浅拷贝

    为什么要拷贝?

    1
    当进行修改时,想要保留原来的数据和修改后的数据

    数字字符串 和 集合 在修改时的差异? (深浅拷贝不同的终极原因)

    1
    2
    3
    在修改数据时:
        数字字符串:在内存中新建一份数据
             集合:修改内存中的同一份数据

    对于集合,如何保留其修改前和修改后的数据?

    1
    在内存中拷贝一份

    对于集合,如何拷贝其n层元素同时拷贝?

    1
    深拷贝

    作业

      开发一个简单的计算器程序
      *实现对加减乘除、括号优先级的解析,并实现正确运算 

     

    o_Warning.png

    作者:武沛齐
    出处:http://www.cnblogs.com/wupeiqi/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。


关键字

上一篇: python大佬进阶学习路线

下一篇: python 10