python入门小记

    2015年06月23日 doc test 字数:1738

一、深入流程控制

这块和普通的c语言差别不大,也是if、for、range、break、continue、循环中的else语句、pass等。 印象比较深的是函式定义、代码风格这块

  • 函式定义

    • 当最后一个形式参数的形式为name 时, 则除去其他的形参的值, 它 将以字典(参阅映射类型——字典) 的形式包含所有剩余关键字参数. 这种 调用可以与具有name 形式的形式参数联合使用, 这 种形式参数接受所有超出函式接受范围的位置参数.(name 必须在name 之前使用)
    • 关键字参数和默认参数区别&使用场景
  • 代码风格

    • 文档字符串习惯,大写字母开头,句号结尾 “”” “””
    • 保持类名和函式名的一致性; 约定是, 类名使用CamelCase 格式, 方法 名和函式名使用lower_case_with_underscres 形式. 永远使用self 作 为方法的第一个参数名(参阅:ref:‘类的初印象‘ 获 得更多有关类和方法的信息).

二、数据结构

整体从列表作为切入点,讲述了列表的方法。进而介绍了集合、字典、元组、序列这几个数据结构的用法以及不同数据结构遍历的技巧。

  • 深入列表
  • 先介绍一些列表的方法如下:
    • list.append(x)
    • list.extend(L)
    • list.insert(i, x)
    • list.remove(x)
    • list.pop([i])
    • list.index(x)
    • list.count(x)
    • list.sort()
    • list.reverse()
  • 列表可以模拟堆栈和队列。具体见pdf即可
  • 元组由若干逗号分隔的值组成。元组输出时用圆括号包围, 以便正确表达元组的嵌套。元组中可以包含列表。
  • 集合。无序不重复的元素集。基本用途包括成员关系测试和重复条目消除。花括号或函式set() 可用于创建集合. 注意: 创建一个空集合只能使用 set(), 而不能使用{}; 后者是创建一个空字典。
  • 字典。了解基本函数,以及构造器dict的使用。 dict([(‘sape ‘, 4139), (‘guido ‘, 4127), (‘jack’, 4098)])
  • 学会使用推导式!!!!!!
  • 比较操作符in 和not in 检查一个值是否在序列中.
  • 当对字典遍历时, 可用items() 方法同时取回键和对应的值.
  • 对序列遍历时, 可以使用enumerate() 函式来同时取回位置索引和相 应的值.
  • 简洁用法列举 集合: a = {x for x in 'abracadabra ' if x not in 'abc'} 列表:[weapon.strip() for weapon in freshfruit]

    [x*y for x in vec1 for y in vec2]

三、模块

  • 模块的定义

Python 提供了方法, 能使用户把定义存放在文件里, 同时又能在 脚本或交互式环境下方便的使用它们. 这样的文件称为模块; 一个模块中的 定义可以导入(import) 到另一个模块或主模块(主模块是执行脚本的最 上层或计算模式下的一组可访问变量的集合). 模块就是包含Python 定义和语句的文件. 文件的名字就是这个模块 名再加上.py. 在一个模块中, 模块的名字(一个字符串) 可以通过全局变 量__name__ 得到. 如果你要经常使用一个函式的话, 可以把它赋给一个局部变量:

fib = fibo.fib fib(500) 1 1 2 3 5 8 13 21 34 55 89 144 233 377

  • 模块的导入 from fibo import fib , fib2 from fibo import * 这样可以导入除以下划线开头(_) 的所有名字. 多数情况中, Python 程序员不使用这个窍门, 因为它导入了一些未知的名字到解释器里, 因此可 能会意外重载一些你已经定义的东西. 注意: 在一般的实践中, 导入* 是不好的, 因为它常常产生难以阅读的 代码. 然而, 在一个交互式会话里使用它可以节省键入.
  • 导入路径。

当导入名为spam 的模块时, 解释器会先在当前目录下查找名为 spam.py 的文件, 若未找到, 则解释器会在由变量sys.path 给定的目录列表 中寻找名为spam.py 的文件. sys.path 从这些位置初始化: • 包含输入脚本的目录(或当前目录). • PYTHONPATH (一个目录名列表, 其语法与shell 变量PATH 相同). • 安装时的默认目录. 初始化后, Python 程序可以修改sys.path. 被运行的脚本所在的目录, 排在 标准库路径之前被首先搜索. 这意味着若是脚本所在目录中有与标准库相 同名称的模块, 则Python 会加载这个模块而不是标准库中的模块. 除非有 意如此, 不然可能会导致错误. 参见标准模块以获取更多信息

这块可以参考一些开源的python框架来看。包等同于一堆模块的集合,功能更加强大。

  • 文件读取相关 f.readline() 会从文件中读取单独的一行; 在每个字符串的末尾都会 留下换行符(\n), 除非是该文件的最后一行并且没有以换行符结束, 这个字 符才会被忽略 f.readlines() 将返回该文件中包含的所有行. 如果给定一个可选参 数sizehint, 它就读取这么多字节, 并且将这些字节按行分割. 这经常用于 允许按行读取一个大文件, 但是不需要载入全部的文件时非常有用. 只会返 回完整的行.

  • python作用域和命名空间