Python3學(xué)習(xí)日記 Day-1

NOTE:文章中的代碼縮進(jìn)不知道怎么搞,直接粘貼使用會(huì)報(bào)錯(cuò)

學(xué)習(xí)地址

Python基礎(chǔ)

  1. Python是大小寫敏感
  2. 縮進(jìn)代表語(yǔ)法內(nèi)容,使用4個(gè)空格的縮進(jìn),所以粘貼代碼時(shí)注意縮進(jìn)是否正確
  3. #開(kāi)頭的語(yǔ)句是注釋
  4. 數(shù)據(jù)類型
  • 整數(shù)int
  • 浮點(diǎn)數(shù)(小數(shù))float
  • 字符串str 用單引號(hào)或雙引號(hào)括起來(lái)
  • 布爾值bool 只有TrueFalse兩個(gè)值,注意大小寫
  • 空值 None
  • 列表 list a=[] vs 元組 tuple a=()
  • 字典 dic a = {key:value}
  • set 是一組key的集合,但不儲(chǔ)存value a = set(list)
  1. 編碼
  • 字符串str使用Unicode編碼,支持多語(yǔ)言
  • str與bytes互相轉(zhuǎn)換時(shí),如無(wú)特殊需求,僅使用UTF-8編碼
  • 常用占位符如下
    %d 整數(shù) %f 浮點(diǎn)數(shù) %s 字符串 %x 十六進(jìn)制整數(shù)
    note: 不確定用什么,%s 永遠(yuǎn)起作用,會(huì)將所有類型轉(zhuǎn)換為字符串
  1. 條件判斷
if a > 2:
    xxxx
elif a > 1:
    sssss
else:
    dddd
  1. 循環(huán)
  • for循環(huán)
sum = 0
for x in range(101): 
    sum = sum + x
print(sum)
  • while循環(huán)
sum = 0
n = 99
while n > 0: 
    sum = sum + n 
    n = n - 2
print(sum)
  1. 定義函數(shù)
def function_name(<canshu>):
    pass
    return xx <,yy>

note:函數(shù)返回的多值是一個(gè)tuple

定義函數(shù)時(shí),需要確定函數(shù)名和參數(shù)個(gè)數(shù)
如果有必要,可以先對(duì)參數(shù)的數(shù)據(jù)類型做檢查
函數(shù)體內(nèi)部可以用return隨時(shí)返回函數(shù)結(jié)果
函數(shù)執(zhí)行完畢也沒(méi)有return語(yǔ)句時(shí),自動(dòng)return None
函數(shù)可以同時(shí)返回多個(gè)值,但其實(shí)就是一個(gè)tuple

  1. 函數(shù)的參數(shù)
  • 位置參數(shù)(最簡(jiǎn)單最基礎(chǔ)的參數(shù))
def test(x): 
   pass
  • 默認(rèn)參數(shù)
def test(x,n=2): 
   pass

note:默認(rèn)參數(shù)必須指向不可變對(duì)象!

  • 可變參數(shù)*args(傳入的參數(shù)個(gè)數(shù)是可變的,可以是0個(gè))
    可變參數(shù)在函數(shù)調(diào)用是自動(dòng)組裝為一個(gè)tuple
def test(*numbers): 
   for x in numbers:
       pass

note:上述numbers接收到的是一個(gè)tuple,如果已經(jīng)有了一個(gè)list或者tuple,可以這么做

>>> nums = [1,2,3]
>>> test(*nums)
  • 關(guān)鍵字參數(shù)**kw(傳入0或多個(gè)含參數(shù)名的參數(shù))
    關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝成為一個(gè)dict
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

note:如果已經(jīng)有一個(gè)dict,可以這么做

>>>extra = {'city': 'Beijing', 'job': 'Engineer'}
>>>person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
  • 命名關(guān)鍵字參數(shù)
def person(name, age, *, city, job):
    print(name, age, city, job)

命名關(guān)鍵字參數(shù)需要一個(gè)特殊分隔符*,后面的參數(shù)被視為命名關(guān)鍵字參數(shù),如果沒(méi)有*,Python就無(wú)法判斷是位置參數(shù)還是命名關(guān)鍵字參數(shù)了,但如果有了一個(gè)可變參數(shù),則不需要*

def person(name, age, *args, city, job):
    print(name, age, args, city, job)

調(diào)用關(guān)鍵字參數(shù)時(shí)必須傳入?yún)?shù)名,否則報(bào)錯(cuò)
關(guān)鍵字參數(shù)可以有默認(rèn)值

def person(name, age, *, city='Beijing', job):
    print(name, age, city, job)
  • 參數(shù)組合
    上述5種參數(shù)可以組合使用,參數(shù)定義順序必須為
    必須參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、命名關(guān)鍵字參數(shù)、關(guān)鍵字參數(shù)
def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
  1. 遞歸函數(shù)
    如果一個(gè)函數(shù)在函數(shù)內(nèi)部調(diào)用自己,這個(gè)函數(shù)就是遞歸函數(shù)
  • 使用遞歸函數(shù)要注意防止棧(stack)溢出
  • 解決棧溢出的方法是通過(guò)尾遞歸優(yōu)化,尾遞歸和循環(huán)的效果是一樣的
    BUT,Python標(biāo)準(zhǔn)的解釋器沒(méi)有針對(duì)尾遞歸做優(yōu)化,任何遞歸函數(shù)都存在棧溢出的問(wèn)題
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容