zoukankan      html  css  js  c++  java
  • Python语言及其应用

    遍历python语法

     

     

    2.基本元素:数字、字符串和变量

    2.1 python有哪些基本类型?
    布尔型(True, False),整型(42,100000),浮点型(3.14159,1.0e8),字符串型("string")

    2.2 python中所有的数据都是以对象的形式存在。
    对象就是数据实体,变量就是名字。对象有类型之分,基本的就以上几种,对象还分常量和变量。

    2.3 变量赋值(=)?
    赋值不等于复制,变量赋值只是为数据对象取了一个名字,名字是对对象的引用而不是对象本身。
    变量名是与实际数据相关联的名字,变量存在的意义就是为了让人方便引用内存中的值,在编译时变量名会被替换为地址。

    2.4 如何查看对象的类型?type()语句

    2.5 python数字(整数和浮点数)运算?
    +、-、*、/(浮点除)、//(整数除)、%(求余)、**(幂)、divmod()

    2.6 python中的基数
    0b/0B二进制、0o/0O八进制、0x/0X十六进制

    2.7 类型转换、长度查看(均为内置函数,不依附于对象,可以直接使用)
    int(), float(), str(), bool();len()

    2.8 python3从python2中分离出来的原因?
    Unicode

    2.9 字符串型?
    第一个序列类型,本质是字符序列,不可变(同元组,不能直接插入、删除和更改元素)。

    2.10 创建字符串?
    单引号或双引号创建(交互式解释器输出的字符串永远是单引号包裹的),三连(单双)引号创建多行字符串。

    2.11 print函数的输出格式
    print会截取最外层的引号,直接输出实际内容;自动在各输出部分之间添加空格;所有输出最后添加换行符。(print输出格式可以设置)

    2.12 字符串操作:拼接、复制、提取、单个字符替换
    “+”拼接字符串常量和变量;直接先后放置可以拼接字符串常量;“*”可以做字符串乘法,做复制;“[]”可以通过偏移量提取字符,可以从头[0][1][2]提取,也可以从尾部[-1][-2]提取(不能超过最大限制)。“obj.replace('obj', 'c')”可用于替换字符串的单个字符。

    2.13 分片操作[start:end:step]
    [:]提取整个字符串;[start:]从start到结尾;[:end]从开头到end-1(特别注意);[start:end]从start到end-1;[start:end:step]从start到end-1,每step个字符提取一个。
    偏移量0是开头;-1是结尾;step为负就是逆序。

    2.14 字符串对象的成员函数:split(),join(),
    string.split("string" or 'c')将字符串按分隔符分割为子串的列表[]。
    ("string" or 'c').join(list)反向操作
    string.startwith("string"); string.endwith("string"); string.find("string"); string.rfind("string"); string.count("string"); string.isalnum().
    string.strip("."); string.capitalize(); string.title(); string.upper(); string.lower(); string.swapcase(); string.center(30); string.ljust(30); string.rjust(30).

    2.15 字符串子串替换:replace()
    string.replace("obj", "c", num)函数有三个参数,第三个为最多替换多少处。功能不如正则表达式强大。

     

    3.容器:列表、元组、字典与集合

    将数据进行拆分和合并,加工为特定形式。
    3.1 序列结构 字符串、元组、列表(前两者不可变)(后两者不要求所含元素种类相同)

    3.2 创建列表 [] list[] 列表推导式 (列表有序,元素可重复)

    3.3 数据结构之间的转换 list(), tuple(), dict(), set()
    list()可以将字符串、元组转化为列表,split()可以将字符串分割为列表,join可以将列表形成字符串

    3.4 使用[下标]获取列表元素,[0][1][2], [-1][-2][-3];

    3.5 列表里面可以包含任意元素,所以列表可以嵌套列表,[[],[],[]],一般嵌套两层就足够了,类似二维数组。

    3.6 切片提取元素:[start, end, step]

    3.7 列表对象的成员函数:list.append(var)(在末尾添加元素), list.extend(var)(+=)(合并列表), list.insert(num, var)(在指定位置插入元素), list.remove(value)(删除指定值元素), list.pop(1)(获取并删除指定位置元素,其中pop()==pop(-1)), list.index(value)(查询特定值元素的位置), list.count(value)(计算列表中指定值出现的次数), list.sort(reverse=True)(排序列表,列表会改变,可设定排序方向), 

    3.8 python语句操作列表:del语句,del list[num]; in语句(判断值是否在列表中), 

    3.9 python函数:sorted()排序;len()获取长度;=(赋值);copy()(复制);(赋值才不会偶联,复制有多种方法,list(),切片)

    3.10 创建元组:()创建空元组;元组是以逗号创建并标记的,逗号不能省,括号可以;

    3.11 可以将元组赋值给多个变量,进行元组解包;

    3.12 创建字典:{}创建空字典;添加元素;

    3.13 dict()可以将任意双值子序列转化为字典(嵌套);dict.clear()删除所有元素;dict.get(key, return);dict.keys()获取所有键;dict.values()获取所有值;dict.items()获取所有键值对;dict.copy()复制;

    3.14 字典成员函数:dict.update(dict)合并字典;

    3.15 del删除指定键的元素;in判断键是否存在;

    3.16 创建集合:set()创建空集;{1,2,3}创建集合;

    3.17 集合运算:交集&;并集|;差集-;异或集^;<=判断是否子集;>=判断是否超级;>判断是否真超集;

    3.18 总结:[]创建列表;逗号创建元组;{}创建字典;注意:由于字典的特性,列表、字典、集合都不能作为字典的键;元组可以;还有不可变的常量。

    4.Python外壳:代码结构

    Python不使用()、{}来划分代码;而是使用:和代码缩进(缩进决定如何配对)来划分代码。
    4.1 使用连接一行代码

    4.2 选择结构:if elif else
    if exp:
        if exp:
        elif exp:
        else:
    else:
        statement

    4.3 python可以直接使用比较符号比较字符串,而perl不行。

    4.4 布尔操作符and, or, not;

    4.5 循环结构:while for
    count = 1
    while count <= 5:
        print(count)
        count+=1
       
    for的牛逼之处在于:在数据结构长度未知,具体实现未知的情况下遍历整个数据结构,核心是in。
    for rabbit in rabbits:
        print(rabbit)
    对字典的迭代可能需要用到keys(), values(), items()等成员函数。

    4.6 python很奇葩,貌似没有自增自减运算符++、—。

    4.7 控制循环:break continue

    4.8 循环外的else,循环正常结束(从头到尾),没有使用break中断。

    4.9 并行迭代:zip(), 正常for in只能对单个数据结构,而zip()则可以同时迭代多对数据结构。zip()也不局限于for中,它可以迭代任何成组数据结构。

    4.10 range()生成自然数序列:
    range(start, end, step)
    zip()、range()返回的都是可迭代对象,可以用于for in遍历,但是要称为数据实体就必须使用list()、tuple()、set()、dict()转化。

    4.11 推导式
    看似复杂,其实很简单,[]里,前面是表达式,后面是迭代变量,使用for和if确定迭代变量的值。
    列表推导式:
    a = [str(b)*3 for b in range(1,6) if b % 2 == 0]
    cells = [(a, b) for a in list1 for b in list2 if ...]
    字典推导式:
    counts = {letter:word.count(letter) for letter in word}
    集合推导式
    a_set = {num for num in range(1,6) if num % 3 == 1}
    生成器推导式(元组),返回一个生成器对象,只能运行一次。
    num_thing = (num for num in range(1,6))

     

    4.12 函数
    4.12.1 创建函数的基本格式:
    def func1():
        exp
        return var

    4.12.2 python函数参数的传递:位置参数、关键字参数、默认参数
    位置参数(*):就是C里面最原始的参数传递形式,按顺序传递,必须弄清定义函数的每个位置参数的意义。
    关键字参数(**):就是强行指定传递参数,优先级比位置参数低,一般是不记得函数后面几个参数,就强行指定。
    默认参数:是在函数定义时,给函数参数定义的默认值。缺省参数。若调用时提供了参数就会覆盖。

    4.12.3 传递可变数量的参数(*)(**)
    (*)将一组可变数量的位置参数集合成参数值的元组。
    (**)将参数收集到一个字典里

    4.12.4 文档字符串 函数开始的一段说明和帮助的字符串

    4.13 函数的参数可以是任意的对象,也可以是函数,调用方式是一样的。

    4.14 内部函数 在函数的内部定义另外一个函数,目的是避免函数内部的重复。

    4.15 匿名函数:lambda()
    lambda()是用一个语句表达的匿名函数,目的是用来代替小型函数,临时用一次。
    edit_story(stairs, lambda word: word.capitalize() + '!')
    lambda函数接受一个参数word,冒号后为函数的定义。

    4.16 生成器(就是前面的元组的推导式)
    为了迭代庞大的数据结构,而不需要创建序列实体,当序列比较大时通常会创建一个生成器函数。(此时不用return,而是用yield)
    def my_range(first=0, last=10, step=1):
        number = first
        while number < last:
            yield number
            number += step
    此函数返回一个生成器对象,可用于for迭代。

    4.17 装饰器
    在不改变源代码的情况下修改已经存在的函数;
    装饰器就是一个函数,以一个函数为输入,并返回另一个函数。
    结合:*arg和**kwargs;闭包;函数作为参数
    def document_it(func):
        def new_function(*args, **kwargs):
            print("Running function:", func.__name__)
            print("Positional arguments:", args)
            print("Keyword argument:", kwargs)
            result = func(*args, **kwargs)
            print("Result:", result)
            return result
        return new_function
    装饰器,顾名思义,就是装饰一下已有的函数,返回新的函数。
    也可以在定义函数前,添加装饰器的名字,如@document_it,之后定义的函数就会默认使用装饰器。
    可以有多个装饰器,靠近函数的装饰器会优先执行。

    4.18 命名空间和作用域

    4.18.1 怎么查看每个对象的唯一ID值? id()语句

    4.18.2 怎么在函数内部读取全局变量? global关键字

    4.18.3 怎么获取命名空间的内容?
    locals()返回局部命名空间内容的字典
    globals()返回全局命名空间内容的字典

    4.18.4 两个下划线__的是什么?
    在函数内部,func.__name__就是该函数的名称;func.__doc__是文档字符串。
    主程序的名字就是__main__.

    4.19 异常,try和except处理错误
    >>> short_list = [1,2,3]
    >>> position = 5
    >>> try:
        short_list[position]
    except:
        print('Need a psotion between 0 and', len(short_list)-1, 'but got', position)
    解释:在try中的代码会被执行,如果存在错误,就抛出异常,然后执行except中的代码;否则跳过except代码块。
    except exceptiontype as name获取整个异常对象

    4.20 自定义异常
    需要自定义异常类,可以继承已有的异常类;
    使用时,就raise My_Exception(var)就可以了;

    补充:None只能用is语句来识别。

  • 相关阅读:
    2012个人总结与展望
    C++Event机制的简单实现
    string与char*比较 ——why use string
    创建型模式学习总结——设计模式学习笔记
    Bridge模式——设计模式学习笔记
    Singleton模式——设计模式学习
    Adapter模式——设计模式学习笔记
    C++ 申请连续的对象内存
    7 个致命的 Linux 命令与个人评论
    关于保存Activity的状态
  • 原文地址:https://www.cnblogs.com/leezx/p/5680126.html
Copyright © 2011-2022 走看看