Python 语法基础

近段时间学习了下Python,于是大略总结了下所学的语法知识:

  • 列表的创建:

    1
    movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,["Graham Chapman", ["Michael Palin", "John Cleese", "Terry Gilliam", "Eric Idle", "Terry Jones"]]]

    这里是一个嵌套列表的创建,其中的中括号也可以换成大括号,双引号可以用单引号代替,列表里面可以是混合的数据。常用的方法有 :

    • append():在列表末尾增加一个数据项
    • pop():在列表的末尾删除数据
    • extend(数据项集合):在列表的末尾添加一个数据项集合
    • remove(项):删除一个特定数据的项
    • insert(序号, 数据项):在指定序号的前面插入数据项
  • 列表的遍历之 for 循环:
    列表的遍历需要用到 for 循环,其基本语法是:for 变量 in 列表项:,由此可以将列表中的每一项(只会遍历一级列表)通过 print() 函数输出。

  • 嵌套列表的遍历之 if 判断:
    对于嵌套列表的遍历,需要判断 for 循环时每一项是否是列表项,因此需要用到 if 判断语句和 isinstanceisinstance(变量, list) 用于判断是否是列表,if 的语法是:

    1
    2
    3
    4
    if 某个条件满足:
      True
    else:
      False

  • 嵌套列表的遍历之定义函数:
    上述最多只能够处理一层嵌套的列表,如果希望处理多层嵌套的列表则需要定义函数并去递归调用,其基本语法是:

    1
    2
    def 函数名(参数):
     代码块

  • 转换为模块:
    代码块保存为 .py 文件,创建 setup.py 的文件,包含如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from distutils.core import setup
    setup(
     name='HelloWorld',
     version='1.0.0',
     py_modules=['nester'],
     url='http://www.headfirstlabs',
     author='firstdream',
     author_email='firstdream10@icloud.com',
     description='A simple printer of nested lists'
    )

  • 构建发布文件 (windows 下):
    python setup.py sdist

  • 安装 Python 副本到本地:
    python setup.py install

  • 导入模块:
    import 模块名

  • 向 PyPl 上传代码:
    python setup.py register(第一次上传)

    python setup.py sdist upload

  • 常用 BIF

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #创建一个空的列表
    list()
    #返回一个迭代器,根据需要生成一个指定范围的数字,常配合 for 循环使用
    range()
    for num in range(4):
    print(num)
    #创建成对数据的一个编号列表,从 0 开始
    enumerate()
    #将一个字符串或另一个数转换为一个整数(如果可行)
    int()
    #返回一个 Python 数据对象的唯一标识
    id()
    #返回一个可迭代数据结构中的下一项
    next()

  • 为函数提供默认参数 def 函数名(参数=缺省值):


2016.10.7

  • 文件操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #以默认的 r 模式打开文件
    the_file = open("文件名")
    #以 w 模式打开文件
    out = open("文件名", "w")
    #关闭文件
    the_file.close()
    #读取文件数据行
    the_file.readline()
    #返回文件起始位置
    the_file.seek(0)
    #写入数据到文件
    print("内容", file=文件对象名)

  • 异常处理

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try:
    可能发生错误的代码
    except:
    错误恢复代码
    finally:
    最后的执行代码
    #数据不符合期望的格式时会出现 ValueError
    #数据无法正常访问时会出现 IOError
    #用with处理文件,可不需要 finally 模块
    try:
    with open() as data:
    代码
    except 异常:
    代码

  • 其余方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #显示当前目录及更改当前目录
    import os
    os.getcwd()
    os.chdir("路径")
    #split() 分割字符串,返回一个字符串列表
    (role, line_spoken) = each_line.split(":")
    #利用 split 的可选参数指定为两部分
    split(":", 1)
    #find() 查找字符串
    each_line.find(":")
    #not 取反判断条件
    if not each_line.find(':') == -1:
    #pass 作为Python的空语句或null语句
    #strip() 方法从字符串中去除不想要的空白符
    line_spoken.strip()
    #str() 可以用来访问任何数据对象的字符串表示
    #locals() 返回当前作用域中的变量集合
    if 'man_file' in locals():

2016.10.15

  • pickle "腌制"数据和恢复数据

    Python 提供了一个标准库 pickle 用于保存和加载 Python 的数据对象,使用方法:

    1
    2
    3
    4
    5
    6
    7
    8
    import pickle
    ...
    #pickle 处理文件数据时必须以二进制访问
    with open('mydata.pickle', 'wb') as mysavedata:
    pickle.dump([1, 2, ''three], mysavedata)
    ...
    with open('mydata.pickle', 'rb') as myrestoredata:
    a_list = pickle.load(myrestoredata)

  • 列表推导 列表推导用于减少转换列表时的代码量

    1
    2
    3
    4
    5
    新列表 = [转换函数(t) for t in 原列表]
    new_l = []
    for t in old_l:
      new_l.append(len(t))
    new_l = [len(t) for t in old_l]

  • 集合 set Python 提供一种名为集合的数据结构,集合中的数据是无序的,而且不允许重复  创建集合:

    1
    2
    3
    #set() -> new empty set object
    #set(iterable) -> new set object
    集合名 = set(object)

  • 字典 字典将 value 和 key 关联,使用字典:

    1
    2
    3
    4
    5
    6
    #创建字典
    字典名 = {}
    字典名 = dict()
    #增加数据
    字典名[key] = value #vlaue可以为任意数据类型
    字典名 = {’key‘:value, 'key':value}

  • 1
    2
    3
    4
    5
    6
    #定义类
    class 类名:
    def _init_(self):
    #初始化对象的代码
    #创建对象实例
    对象 = 类名()

  • 继承

    1
    2
    3
    class 类名(继承的类名):
    def _init_(self, 参数):
    #初始化对象的代码

  • 其它
    print(列表[-1]) 输出最后一个数据项
    strip() 方法可以从字符串中去除不想要的空白符
    in 操作符用于检查成员关系
    原地排序 sort(),原列表顺序改变
    复制排序 sorted(),返回一个排序过的原列表副本
    分片访问列表列表[起始值:结束值]可以访问起始到结束(不包括结束值)的列表项