Python Note

Python

It's personal python note

引言

有兩種方式構建軟件設計:
 一種是把軟件做的很簡單以至于明顯找不到缺陷;
 另一種是把它做得很復雜以至于找不到明顯的缺陷.
                --by C.A.R Hoare

標識符

  • 第一個字符必須是字母或下劃線
  • 大小寫敏感

list []

  • python內置的一種數據類型
  • 有序
  • append()追加、insert()插入、pop()剃尾或刪除
  • list里數據類型可不同
  • list還可以嵌套使用

tuple ()

  • 與list類似,但一旦被初始化則不可以改變
  • 在定義中若只有一個元素時,需在后面追加逗號。tuple(1,)

控制語句

  • if 判斷
  • for...in 循環
  • while 循環

dict {}

  • 字典,相當于map
  • dict的key必須是不可變對象

set ([])

  • 一組key的集合,但不存儲value,key不重復

函數 def

  • 函數的返回值用return語句返回
  • 空函數
    如果想定義一個什么事也不做的空函數,可以用pass語句.
  • 參數檢查
    數據類型檢查可以用內置函數isinstance()實現
def my_abs(x): 
      if not isinstance(x, (int, float)): 
           raise TypeError('bad operand type') 
      if x >= 0: 
           return x 
      else: 
           return -x
  • 返回多值
    Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。
  • 默認參數
def power(x, n=2): 
      s = 1 
      while n > 0: 
          n = n - 1 
          s = s * x 
      return s

注意必選參數在前,默認參數在后
默認參數必須指向不變對象

  • 可變參數
    在Python函數中,還可以定義可變參數。顧名思義,可變參數就是傳入的參數個數是可變的,可以是1個、2個到任意個,還可以是0個。
    例:給定一組數字a,b,c……,請計算a2 + b2 + c2 + ……
def calc(*numbers):
      sum = 0 
      for n in numbers: 
             sum = sum + n * n 
      return sum
>>> calc(1, 2, 3)
14
>>> calc()
0
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
  • 關鍵字參數
    關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝為一個dict。
def person(name, age, **kw): 
      print('name:', name, 'age:', age, 'other:', kw)
>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> 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)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

關鍵字作用是擴展函數。

  • 命名關鍵字檢查
def person(name, age, **kw): 
      if 'city' in kw: 
          # 有city參數 
          pass 
      if 'job' in kw: 
          # 有job參數 
          pass 
      print('name:', name, 'age:', age, 'other:', kw)

如果要限制關鍵字參數的名字,就可以用命名關鍵字參數,例如,只接收city和job作為關鍵字參數。這種方式定義的函數如下:

def person(name, age, *, city, job): 
      print(name, age, city, job)
  • 參數組合
    在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用,除了可變參數無法和命名關鍵字參數混合。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數/命名關鍵字參數和關鍵字參數。

遞歸函數

def fact(n): 
      if n==1: 
          return 1 
      return n * fact(n - 1)
  • 使用遞歸函數需要注意防止棧溢出。
  • 解決遞歸調用棧溢出的方法是通過尾遞歸優化。尾遞歸是指,在函數返回的時候,調用自身本身,并且,return語句不能包含表達式。這樣,編譯器或者解釋器就可以把尾遞歸做優化,使遞歸本身無論調用多少次,都只占用一個棧幀,不會出現棧溢出的情況。
def fact(n): 
      return fact_iter(n, 1)
def fact_iter(num, product): 
      if num == 1: 
          return product 
      return fact_iter(num - 1, num * product)

高級特性

  • 切片
    取一個list或者tuple或者字符串的部分元素的操作。
>>> L[0:3]
>>> (0, 1, 2, 3, 4, 5)[:3]
>>> 'ABCDEFG'[:3]
  • 迭代
  • 列表生成式
    列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式。
  • 生成器 generator
  • 迭代器
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Python 是一種相當高級的語言,通過 Python 解釋器把符合語法的程序代碼轉換成 CPU 能夠執行的機器碼...
    Python程序媛閱讀 1,951評論 0 3
  • 基礎1.r''表示''內部的字符串默認不轉義2.'''...'''表示多行內容3. 布爾值:True、False(...
    neo已經被使用閱讀 1,724評論 0 5
  • 函數名其實就是指向一個函數對象的引用,完全可以把函數名賦給一個變量,相當于給這個函數起了一個“別名”:a = ab...
    bjchenli閱讀 635評論 0 0
  • 1.定義函數: 沒有return,默認返回None 2.定義空函數 相當于什么也不做,可以用來做函數體占位符,沒有...
    maskwang520閱讀 338評論 0 0
  • 教程總綱:http://www.runoob.com/python/python-tutorial.html 進階...
    健康哥哥閱讀 2,077評論 1 3