廖雪峰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閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • Python 是一種相當高級的語言,通過 Python 解釋器把符合語法的程序代碼轉換成 CPU 能夠執行的機器碼...
    Python程序媛閱讀 1,931評論 0 3
  • 基礎1.r''表示''內部的字符串默認不轉義2.'''...'''表示多行內容3. 布爾值:True、False(...
    neo已經被使用閱讀 1,709評論 0 5
  • 目錄最重要的工具PIP, 以及常用的網站,IDE推薦 基本概念 函數 進階概念:裝飾器,迭代器,列表推導式,匿名函...
    六合魚閱讀 255評論 0 0
  • Print(“HelloWorld”)這句經典的語句在各種語言基礎中都是必須學習的,這也是幫你入門的象征吧,我也不...
    Dear_slq閱讀 714評論 0 0
  • 1.定義函數: 沒有return,默認返回None 2.定義空函數 相當于什么也不做,可以用來做函數體占位符,沒有...
    maskwang520閱讀 332評論 0 0