美文网首页
廖雪峰Python笔记

廖雪峰Python笔记

作者: Hanze2111 | 来源:发表于2016-12-04 16:54 被阅读157次

    廖老师教程写的还是不错的,看了一下午,基本可以写脚本了。

    • Hello World

      • 不用写分号
    • 输入输出

      • print输出,多个字符串用逗号隔开,中间会填补空格,相当于print(join(args))
      • name = input(), 等待键盘输入,结果存到name中。
    • 数据类型:

      • 字符串
        • 单引号和双引号括起来的都是字符串,字符串中还有单双引号的用\转义(这件事儿IDE应该会帮我们干好)。
        • 换行\n,要打印\本身,要用\来转义,即\\。忽略转义打印字面值r''(并不是很好使)
        • 多行,'''...''',什么日了狗的写法,辣鸡。
        • 编码: str.encode(charset), 解码: bytes.decode(charset)
        • 格式化:print('%2d-%02d' % (3, 1))
      • 布尔值
        • Ture,False(大写首字母)
        • 逻辑运算:and 与,or 或,not
      • 空值:None
      • 变量:字母数字下划线组成,不能以数字开头。
      • 常量:大写
    • 基本数据结构

      • List:
        • 创建list:classmates = ['Michael', 'Bob', 'Tracy']
        • 获取长度:len(classmates) # 3
        • Random Access: classmates[1] # Bob
        • Reverse �Access: classmates[-1 # Tracy]
        • 从尾部追加:classmates.append('Adam') #['Michael', 'Bob', 'Tracy', 'Adam']
        • Random Insert: classmates.insert(1, 'Jack') #['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
        • 删除尾部元素:pop()
        • Random Delele:pop(i)
        • Random Update: classmates[1] = 'Sarah'
        • List元素数据类型不用一致。
      • tuple
        • 有序不可修改
        • 多种类型
        • 一个元素的tuplet = (1,)
      • dict
        • 创建:d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
        • 读取:d['Adam']
        • 插入和更新:d['Jack'] = 88
        • 删除:d.pop('Bob')
      • Set(Set中的元素不可变)
        • 创建Set:s = set([1, 2, 3], 或者s = {1, 2, 3}
        • 添加元素:s.add(4)
        • 删除元素: s.remove(4)
        • 运算: 交集 s1 & s2,并集s1 | s2
    • 流程控制

      • if elif else,注意缩进和:日了你哥的写法。
      • for in range while 懒得写了,最基本的
    • 函数

      • 内置函数

      • 定义函数:

        def my_abs(x):
            if x >= 0:
                return x
            else:
                return -x
        
      • 参数:

        • 默认参数:def power(x, n=2) 默认参数要不可变
        • 可变参数: def calc(*numbers)
        • 关键字参数(传入必须参数后,再可以传一个dict):def person(name, age, **kw):
        >>> person('Adam', 45, gender='M', job='Engineer')
        name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
        
        >>> extra = {'city': 'Beijing', 'job': 'Engineer'}
        >>> person('Jack', 24, **Extra)
        >>> #传入的只是Extra的一个拷贝,不会修改外部数据
            name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
        
        • 命名关键字参数:用来控制关键字的名字:
            def person(name, age, *, city, job):
                print(name, age, city, job)
        
        • 如果前边有偶可变参数,不用单独加*
        • 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
      • 切片:

        • 列表L正常切:L[0:3]
        • 开头为0可以省略:L[:3]
        • 反向切:L[-2:] #取后两个元素
        • 跳着切:L[::5]
        • 原样复制:L[:]
      • 迭代

        • 就一个foreach,可以用于任何Iterable的东西上。
        • 如果需要index
            >>> for i, value in enumerate(['A', 'B', 'C']):
                  print(i, value)
            0 A
            1 B
            2 C
        
      • 列表生成器,毛列表生成器,就是个for引导:

            >>> [x * x for x in range(1, 11) if x % 2 == 0]
            [4, 16, 36, 64, 100]
        
            >>> [m + n for m in 'ABC' for n in 'XYZ']
            ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
        
      • 生成器:

        • 普通生成器:g = (x * x for x in range(10)) 只是把列表的【】变成括号
        • 调用next(<genetor>)来蹦出一个个元素。
        • 宝宝用yield写一个斐波那契吧,教程写的不好看
            def fib():
                yield 0
                yield 1
                head = fib()
                tail = fib()
                next(tail)
                while True:
                    yield next(head) + next(tail)
        
      • 高阶函数:

        • map/reduce/filter:没啥特别的,函数直接传名。reduce是左结合的,这几个api一致性做的还不错,第一个参数是函数,第二个参数是list
        • 返回一个空参数闭包可以实现lazy
        • lambda: 只能写一行,真撒哔啊这种写法。
        • 函数可以在函数里面声明:
            def log(text):
                def decorator(func):
                    def wrapper(*args, **kw):
                        print('%s %s():' % (text, func.__name__))
                    return func(*args, **kw)
                return wrapper
            return decorator
        
        • 偏函数:就是Curry了一下,没啥特别的。

    相关文章

      网友评论

          本文标题:廖雪峰Python笔记

          本文链接:https://www.haomeiwen.com/subject/jamhmttx.html