廖雪峰Python笔记

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

  • 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了一下,没啥特别的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,886评论 0 3
  • 基础1.r''表示''内部的字符串默认不转义2.'''...'''表示多行内容3. 布尔值:True、False(...
    neo已经被使用阅读 1,645评论 0 5
  • 目录最重要的工具PIP, 以及常用的网站,IDE推荐 基本概念 函数 进阶概念:装饰器,迭代器,列表推导式,匿名函...
    六合鱼阅读 240评论 0 0
  • Print(“HelloWorld”)这句经典的语句在各种语言基础中都是必须学习的,这也是帮你入门的象征吧,我也不...
    Dear_slq阅读 681评论 0 0
  • 1.定义函数: 没有return,默认返回None 2.定义空函数 相当于什么也不做,可以用来做函数体占位符,没有...
    maskwang520阅读 314评论 0 0