Task04 :Variables and Functions

记忆里的淡眸發表於2024-12-02

變數

在Python中,變數是用來儲存資料的。它不需要像C語言中需要對變數的型別進行定義,Python會根據賦值自動確認變數的型別。

變數的命名規則 :

  • 必須以字母或下劃線開頭。
  • 只能包含數字、字母、下劃線。

變數只是一個名稱,用於與資料進行聯絡。
定義變數時,現在記憶體空間中申請一塊地址用於存放資料。如果把這個地址比作房間,資料是房間中的東西,而變數名是房間號。
呼叫變數時,先透過變數找到房間(地址),再取出其中的東西(資料)。
可以透過id()獲取資料的地址,透過type()獲取資料的型別。
要注意的是:當相同的值賦給不同變數時,地址不同。例如 :a = 520 b = 520這兩個值的地址是不同的。但如果是a = b =520a和b擁有相同的地址,相當於是將520這個資料同時指向了a和b。

垃圾回收機制

這個機制的存在是為了自動管理記憶體,釋放不在使用的物件所佔用的空間。相較於C語言中使用free()進行釋放空間更加簡便。

  • 引用計數 :每個物件都有一個引用計數,當引用計數為 0 時,物件被回收。
  • 標記 - 清除 :定期對物件進行標記,並清除那些不可達的物件。使用del,例如 :del a

一般在以下情況中會觸發立即回收機制 :

  • 當程式中分配的記憶體達到一定閾值時,會觸發垃圾回收。
  • 當執行某些特定操作時,如刪除物件退出程式等,也會觸發垃圾回收。

小整數池

這是Python中的一個特性,是基於垃圾回收機制產生的,有助於減少記憶體消耗和提高效能,要注意的是在Python3中是隻對範圍在 [-5, 256] 之間的整數生效。但是在Pycharm中,對這個特性進行了擴充,只要是相同的資料都會使用相同的地址
在 Python 中,為了避免頻繁地建立和銷燬小整數物件,提高記憶體利用效率,Python 內部維護了一個小整數池。
對於範圍在 [-5, 256] 之間的整數,當你在程式中多次使用這些整數時,實際上是在複用同一個物件。這是因為 Python 在啟動時就預先建立了這些小整數的物件,並將它們儲存在小整數池中。
當你使用超出這個範圍的整數時,每次都會建立新的物件。


函式

定義函式

Python中透過def進行函式的定義。

def 函式名(引數列表):
    # 函式體
    語句

例如 :定義一個函式用於求1~n數字的和。

def sum(n):
     total = 0
     for i in range(1, n + 1):
         total += i
     return total

呼叫函式

Python中包含許多函式,執行dir(__builtins__)可以檢視Python中所有的內建函式。
輸入輸出函式

  • print()輸出括號中內容

  • input()將鍵入的內容存入變數
    型別轉換函式

  • int()將值轉換成整數

  • str()將值轉換成浮點數

  • str()將值轉換成字串

  • list()tuple()dict()set()用來把其他型別的資料轉換成列表、元組、字典和集合;或者建立空列表、空元組、空字典和空集合。

  • eval()用來計算字串或位元組串的值;也可以用來實現型別轉換的功能,如把字串形式轉換成列表、元組、字典、集合等。例如 :

>>> eval('3+5')
8
>>> eval('[1,2,3,4,5]')
[1, 2, 3, 4, 5]
>>> list('[1,2,3,4,5]')
['[', '1', ',', '2', ',', '3', ',', '4', ',', '5', ']']
  • 內建函式type()isinstance()可以判斷資料型別。
  • sorted()對列表、元組、字典、集合或其他可迭代物件進行排序並返回新列表。例如 :
>>> x = ['aaaa', 'bc', 'd', 'b', 'ba']
>>> sorted(x, key=lambda item: (len(item), item))
#先按長度排序,長度一樣的正常排序
['b', 'd', 'ba', 'bc', 'aaaa']
  • range()語法格式為range([start,] end [, step] ),返回具有惰性求值特點的range物件,其中包含左閉右開區間[start,end)內以step為步長的整數。引數start預設為0,step預設為1。
>>> range(5) #start預設為0,step預設為1
range(0, 5)
>>> list(_)
[0, 1, 2, 3, 4]
>>> list(range(1, 10, 2)) #指定起始值和步長
[1, 3, 5, 7, 9]
>>> list(range(9, 0, -2)) #步長為負數時,start應比end大
[9, 7, 5, 3, 1]

Python的內建函式還有許多。


關於函式的引數,Python與C語言幾乎相同。


遞迴

也與C語言幾乎相同。即在返回值中繼續呼叫函式。

def sum(n) :
     if n == 1:
         return 1
     else :
         return n + sum(n - 1)

相關文章