17 7 24周總結 Python教程筆記

2021-08-04 05:38:19 字數 3699 閱讀 1808

python是「龜叔」guido van rossum在2023年聖誕節期間,為了打發無聊的聖誕節而編寫的乙個程式語言。(論程式設計師是如何度過聖誕節)

c語言是可以用來編寫作業系統的貼近硬體的語言,所以,c語言適合開發那些追求執行速度、充分發揮硬體效能的程式。而python是用來編寫應用程式的高階程式語言。python為我們提供了非常完善的基礎**庫,覆蓋了網路、檔案、gui、資料庫、文字等大量內容,被形象地稱作「內建電池(batteries included)」。用python開發,許多功能不必從零編寫,直接使用現成的即可。

許多大型**就是用python開發的,例如youtube、instagram,還有國內的豆瓣。很多大公司,包括google、yahoo等,甚至nasa(美國航空航天局)都大量地使用python。龜叔給python的定位是「優雅」、「明確」、「簡單」,所以python程式看上去總是簡單易懂。

python缺點:

執行速度慢,和c程式相比非常慢,因為python是解釋型語言,你的**在執行時會一行一行地翻譯成cpu能理解的機器碼,這個翻譯過程非常耗時,所以很慢;而c程式是執行前直接編譯成cpu能執行的機器碼,所以非常快。

**不能加密。如果要發布你的python程式,實際上就是發布源**,而c語言不用發布源**,只需要把編譯後的機器碼(***.exe檔案)發布出去。要從機器碼反推出c**是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把原始碼發布出去。

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

第一行注釋是為了告訴linux/os x系統,這是乙個python可執行程式,windows系統會忽略這個注釋;

第二行注釋是為了告訴python直譯器,按照utf-8編碼讀取源**,否則,你在源**中寫的中文輸出可能會有亂碼。

申明了utf-8編碼並不意味著.py檔案就是utf-8編碼的,必須並且要確保文字編輯器正在使用utf-8 without bom編碼。

>>> classmates = ['michael', 'bob', 'tracy']

>>> classmates

['michael', 'bob', 'tracy']

>>> classmates

['michael', 'bob', 'tracy', 'adam']

>>> classmates.insert(1, 'jack')

>>> classmates

['michael', 'jack', 'bob', 'tracy', 'adam']

>>> classmates.pop()

'adam'

>>> classmates

['michael', 'jack', 'bob', 'tracy']

if 《條件判斷1>:

《執行1>

elif 《條件判斷2>:

《執行2>

elif 《條件判斷3>:

《執行3>

else:

《執行4>

input()讀取使用者的輸入

s = input('birth: ')

birth = int(s)

if birth < 2000:

print('00前')

else:

print('00後')

sum = 0

for x in range(101):

sum = sum + x

print(sum)

第二種迴圈是while迴圈,只要條件滿足,就不斷迴圈,條件不滿足時退出迴圈。

sum = 0

n = 99

while n > 0:

sum = sum + n

n = n - 2

print(sum)

>>> d = 

>>> d['michael']

95

通過dict提供的get方法,如果key不存在,可以返回none,或者自己指定的value。要刪除乙個key,用pop(key)方法,對應的value也會從dict中刪除。

和list比較,dict查詢和插入的速度極快,不會隨著key的增加而變慢,但需要占用大量的記憶體,記憶體浪費多。而list相反:查詢和插入的時間隨著元素的增加而增加,占用空間小,浪費記憶體很少。所以,dict是用空間來換取時間的一種方法。

set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以,在set中,沒有重複的key。

要建立乙個set,需要提供乙個list作為輸入集合,重複元素在set中自動被過濾。

>>> s = set([1, 1, 2, 2, 3, 3])

>>> s

通過add(key)方法可以新增元素到set中,可以重複新增,但不會有效果。通過remove(key)方法可以刪除元素。set可以看成數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集、並集等操作。

set和dict的唯一區別僅在於沒有儲存對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變物件。

def

my_abs

(x):

if x >= 0:

return x

else:

return -x

def

person

(name, age, **kw):

print('name:', name, 'age:', age, 'other:', kw)

>>> extra =

>>> person('jack', 24, **extra)

name: jack age: 24 other:

函式person除了必選引數name和age外,還接受關鍵字引數kw。在呼叫該函式時,可以只傳入必選引數。**extra表示把extra這個dict的所有key-value用關鍵字引數傳入到函式的**kw引數,kw將獲得乙個dict,注意kw獲得的dict是extra的乙份拷貝,對kw的改動不會影響到函式外的extra。

如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接收city和job作為關鍵字引數。

def

person

(name, age, *, city, job):

print(name, age, city, job)

和關鍵字引數**kw不同,命名關鍵字引數需要乙個特殊分隔符* ,*後面的引數被視為命名關鍵字引數。

引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

def

fact

(n):

if n==1:

return

1return n * fact(n - 1)

解決遞迴呼叫棧溢位的方法是通過尾遞迴優化,事實上尾遞迴和迴圈的效果是一樣的,所以,把迴圈看成是一種特殊的尾遞迴函式也是可以的。

尾遞迴是指,在函式返回的時候,呼叫自身本身,並且,return語句不能包含表示式。這樣,編譯器或者直譯器就可以把尾遞迴做優化,使遞迴本身無論呼叫多少次,都只占用乙個棧幀,不會出現棧溢位的情況。

自學python第九周總結

許多程式都是要求使用者輸入某種資訊,如讓使用者儲存遊戲首選項或提供要視覺化的資料。一種簡單的方法是使用模組json來儲存資料。模組json讓簡單的python資料結構轉儲到檔案中,並在程式再次執行時載入該檔案中的資料。話可以分享資料。1.使用json.dump 和json.load 使用json.d...

python第二週學習總結

type 返回物件或變數的資料型別 abs 返回乙個數字的絕對值 max 返回一組資料中的最大值 min 返回一組資料中的最小值 len 檢視資料長度 序列 指的就是一組資料 列表 元組 集合 字串 random模組 random.randint a,b 隨機產生乙個包含a和b之間的數字 rando...

python第二週學習總結

1.import只有三種使用方法,以turtle庫為例 import turtle from turtle import setup 或 from turtle import import turtle as t 其中t是別名,可以更換其他名稱 2.turtle座標系的原點預設在窗體正中間 3.tu...