用Python玩转数据——Week1

第一个Python程序

  • 运行方式
    • Shell方式
    • 文件方式

      模块是对象,并且所有的模块都有一个内置属性 name。一个模块的 name 的值取决于您如何应用模块。如果 import 一个模块,那么模块name 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, name 的值将是一个特别缺省”main“。

  • IO
    • 输入
      var = input();
      Python 3.x中raw_input() 和input()整合成了input(), 返回类型为str
    • 输出
      print语句
  • 代码风格

    • 注释 # comment
    • 续行

      • 续行符
      • 括号内的内容
      • 三引号
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        >>>print('''hello 
        world''')
        hello
        world

        >>> x = '''hello
        ... work'''
        >>> x == 'hello work'
        False

        >>> y = 'hello work'
        >>> z = 'hello \
        ... work'
        >>> y == z
        True
    • 缩进——语句块

基础语法

  • 变量: 标识对象,引用对象
  • 标识符: 合法的变量名称
  • 关键字

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Python中的对象包含三要素:id、type、value
    其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值

    is判断的是a对象是否就是b对象,是通过id来判断的
    ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的

    >>> a=100
    >>> b=100.0
    >>> a is b
    False
    >>> a==b
    True
    >>> id(a)
    30696848L
    >>> id(b)
    48685000L
    >>> id(a)==id(b)
    False
  • 运算符

    • 算术运算符
    • 位运算符
    • 比较运算符
    • 逻辑运算符
  • 表达式:用运算符连接各种类型数据的式子
  • 赋值:给变量类型和“值”

    • 增量赋值
      m %= 5
      没有 m++ 这样的语句
    • 多重赋值
      PI = pi = 3.14159
    • 多元赋值

      x, y = y, x
      等式俩边是元祖

      多重赋值PI, r = 3.14159, 3的本质由两个步骤构成:
      temp = 3.14159, 3 # 元组打包(Tuple packing)
      PI, r = temp # 序列解包(Sequence unpacking),多重赋值有时也称为序列解包

  • 语句:完整执行一个任务的一行逻辑代码
    • 语句包含表达式

数据类型

必须有明确的数据类型,程序才能分配给常量、变量精确 的存储大小,才能进行精确或高效率的运算

  • Python标准数据类型

    • (长)整型

      Python 3.x中没 有long类型, 整数都是int型
      存储大小跟内存有关,不会发生溢出问题

      1
      2
      3
      4
      5
      6
      7
      >>> x = 100000000000000000000000000000
      >>> x **=2
      >>> x
      10000000000000000000000000000000000000000000000000000000000
      >>> x **=2
      >>> x
      100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    • 浮点型

      没有double

    • 复数型
    • 布尔型
    • 序列类型
      • 字符串: 不可变
      • 列表:可变
      • 元组:不可变
    • 映射类型
      • 字典

基本运算

  • 算术运算符

    乘方 ** 正负号+ -
    乘除
    / 整除//
    取余% 加减+ -

  • 比较运算

    3 < 4 < 7 # same as ( 3 < 4 ) and ( 4 < 7 )
    True
    4 > 3 == 3 # same as ( 4 > 3 ) and ( 3 == 3 )
    True
    4 < 3 < 5 != 2 < 7
    False

  • 逻辑运算
  • 字符运算符
    • 原始字符串操作符 (r / R)
    • Unicode 字符串操作符( u / U )

函数、模块和包

函数

  • 内建函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    绝对值函数abs(x)
    类型函数type(x)
    四舍五入函数round(x)

    >>> round(3.4)
    3
    >>> round(4.6)
    5
    >>> round(3.5)
    4
    >>> round(2.5)
    2

    四舍六入五成双
  • 非内建函数: 非内建函数的使用需要靠模块引入

模块

一个完整的Python文件即是一个模块

  • 文件:物理上的组织方式 math.py
  • 模块:逻辑上的组织方式 math

  • 一个有层次的文件目录结构
  • 定义了一个由模块和子包组成 的 Python 应用程序执行环境

  • 库是一组具有相关功 能的模块的集合

RANGE和 XRANGE

  • range():Python3返回的是一个range对象,需要用list(range())方式进行调用

    range (start, end, step=1)
    range (start, end)
    range (end)

  • xrange
    Python3 不支持xrange()

循环

  • while

    1
    2
    3
    4
    5
    6
    while expression: 
    suite_to_repeat

    • 条件表达式
    • 当 expression 值 为 True
    时执行suite_to_repeat代码块
  • for

    1
    2
    for iter_var in iterable_object: 
    suite_to_repeat
    • 可以明确循环的次数

      • 遍历一个数据集内的成员
      • 在列表解析中使用
      • 生成器表达式中使用
    • iterable_object

      • String
      • List
      • Tuple
      • Dictionary
      • File
  • 循环中的else语句
    • 如果循环代码从break处终止,跳出循环
    • 正常结束循环,则执行else中代码

函数

内建函数

自定义函数

1
2
3
def addMe2Me(x):
'apply operation + to argument' #DocString,用来说明文本
return (x+x)

print(fn._doc):查看函数文档

参数

  • 默认参数

    默认参数一般需要放置在参数列表的最后

  • 关键字参数

    关键字参数是让调用 者通过使用参数名区 分参数。允许改变参 数列表中的参数顺序

  • 传递函数

    函数可以像参数一样传递给另外一个函数

  • lamda函数
    1
    2
    3
    4
    5
    lambda     x, y  :  x + y

    my_add = lambda x, y : x + y
    >>> my_add(3, 5)
    8

变量作用域

  • 全局变量
  • 局部变量

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # Filename: scopeofvar.py
    def f(x):
    print a
    a =5
    print a + x

    a= 3
    f(8)

    UnboundLocalError: local variable 'a' referenced before assignment
    # 在这里 a 为全局变量
  • global语句

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    global语句强调全局变量

    # Filename: scopeofvar.py
    def f(x):
    global a
    print a
    a= 5
    print a + x

    a= 3
    f(8)
    print a


    Output: 3
    13
    5