文章目錄
- Python
- 基本概念
- 1. Python是**解釋型**語言還是**編譯型**語言
- 2. Python是**面向對象**語言還是面向過程語言
- 3. Python基本數據類型
- 4.append和 extend區別
- 5.del、pop和remove區別
- 6. sort和sorted區別
- 介紹一下Python 中的字符串編碼
- is 和 == 的區別
- *arg 和**kwarg作用
- 淺拷貝(Shallow Copy)&深拷貝(Deep Copy)
- lambda
Python
持續更新中~
基本概念
1. Python是解釋型語言還是編譯型語言
是解釋型。解釋型是邊編譯邊執行。編譯型語言是把源程序全部編譯成二進制的可運行程序后再運行,如C/C++ 。
注:java程序不是直接編譯成機器語言,而是編譯成字節碼,然后用解釋方式執行字節碼。
2. Python是面向對象語言還是面向過程語言
是面向對象。面向對象編程(OOP)的特點包括:
- 封裝:將數據和操作這些數據的方法組合在一起。
- 繼承:允許新創建的類(子類)繼承現有類(父類)的屬性和方法。
- 多態:允許不同類的對象對同一消息做出響應,但具體的行為會根據對象的實際類型而有所不同。
面向過程編程的特點包括:
- 將程序分解為一系列的過程或函數,每個過程或函數執行特定的任務。
- 強調過程和函數的調用,而不是對象和類。
3. Python基本數據類型
- Numbers(數字):3.7以后存儲字節數會根據數字大小變化(28+48(num/230))
- List(列表):有序集合。多維列表本質就是列表里面疊列表
- Tuple(元組):有序集合。元組是只讀的列表
- Dictionary(字典):無序集合,由鍵值對(key-value)組成。
- 集合(set):是一組 key 的集合,每個元素都是唯一,不重復且無序的。
- a=(4),a的類型為整數
4.append和 extend區別
-
append()方法用于將一個對象添加到列表的末尾。當使用append()方法添加一個列表到另一個列表時,實際上是將整個列表作為一個單獨的元素添加到原列表中。
-
extend()方法用于將一個可迭代對象(如列表、元組、字符串等)的所有元素添加到列表的末尾。使用extend()方法添加一個列表到另一個列表時,實際上是將這個列表中的所有元素逐個添加到原列表中。
my_list = [1, 2, 3]
my_list.extend([4, 5]) # 結果: [1, 2, 3, 4, 5]
my_list.append([5, 6]) # 結果: [1, 2, 3, 4, [5, 6]]
5.del、pop和remove區別
del
:根據下標進行刪除pop
:根據下標進行刪除并返回刪除值,默認刪除最后一個元素remove
:根據元素的值進行刪除
my_list = [1, 2, 3, 4, 5]
del my_list[2] # my_list: [1, 2, 4, 5]
a=my_list.pop(0) # my_list: [2, 4, 5], a: 0
my_list.remove(4) # my_list: [2, 5]
6. sort和sorted區別
- sorted()是一個內置函數,不會修改原始的序列,而是返回一個新的排序后的列表。不會修改原始的序列,而是返回一個新的排序后的列表。
- sort()是列表(list)的一個方法,它直接修改原列表,按照指定的順序對列表中的元素進行排序。
my_list = [3, 1, 4, 1, 5]
my_list.sort()
print(my_list) # 輸出: [1, 1, 3, 4, 5]
sorted_list = sorted(my_list, reverse=True) # 設置reverse為True進行降序排序
print(my_list) # 輸出: [1, 1, 3, 4, 5]
print(sorted_list) # 輸出: [5, 4, 3, 1, 1]
reverse和reversed同理
my_list = [1, 2, 3, 4, 5]
reversed_iterator = reversed(my_list)
print(list(reversed_iterator)) # 輸出: [5, 4, 3, 2, 1]
print(my_list) # 原始列表未被修改: [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list) # 輸出: [5, 4, 3, 2, 1]
介紹一下Python 中的字符串編碼
-
ASCII (American Standard Code for Information Interchange):
- 最早的字符編碼標準,使用7位二進制數表示128個字符,包括英文大小寫字母、數字和一些特殊符號。
- 由于只支持英文字符,因此不適合表示其他語言。
-
Unicode:
- 為了解決ASCII編碼的局限性,Unicode提供了一種可以表示世界上幾乎所有文字的字符集。
-
UTF-8 (8-bit Unicode Transformation Format):
-
是Unicode的一種實現方式,可以根據字符的不同使用不同長度(1-4)的字節來表示一個字符。
-
UTF-8最大的特點是它對ASCII編碼是兼容的,即ASCII字符在UTF-8中用一個字節表示,與ASCII編碼相同。
-
str.encode()
: 將字符串編碼為指定格式的字節串。bytes.decode()
: 將字節串解碼為字符串。
is 和 == 的區別
==
是比較操作符,只是判斷對象的值(value)是否一致,而 is
則判斷的是對象之間的身份(內存地址)是否一致。
對象的身份,可以通過
id()
方法來查看。
*arg 和**kwarg作用
-
*args
代表可變數量的位置參數(arguments),它允許你將不定數量的位置參數傳遞給函數。這些參數被組織為一個元組(tuple),在函數內部可以通過索引來訪問。 -
**kwargs
代表可變數量的關鍵字參數(keyword arguments),它允許你將不定數量的關鍵字參數傳遞給函數。這些參數被組織為一個字典(dictionary),在函數內部可以通過鍵來訪問。
def my_function(*args, **kwargs):for arg in args:print(arg)for key, value in kwargs.items():print(f"{key}: {value}")my_function(1, 2, name="Alice", age=25)
# 輸出: 1, 2, name: Alice, age: 25
淺拷貝(Shallow Copy)&深拷貝(Deep Copy)
- 淺拷貝復制的是原始對象中包含的引用,而不是對象本身。
- 深拷貝遞歸地復制了原始對象中的所有對象。這意味著深拷貝會創建原始對象的完整副本,包括所有嵌套的對象,修改原始對象不會影響深拷貝。
import copy
original_list = [[1, 2, 3], [4, 5, 6]]shallow_copied_list = copy.copy(original_list)
# 淺拷貝
original_list[0][0] = 'X'
print(shallow_copied_list) # 輸出: [['X', 2, 3], [4, 5, 6]]
# 深拷貝
deep_copied_list = copy.deepcopy(original_list)
original_list[0][0] = 'X'
print(deep_copied_list) # 輸出: [[1, 2, 3], [4, 5, 6]]
lambda
lambda是一個用于創建匿名函數的關鍵字。匿名函數是一種沒有名稱的函數,它們通常用于需要函數對象的地方,但又不想去定義一個完整的函數。
people = [("Alice", 30), ("Bob", 25), ("Charlie", 35)]
sorted_people = sorted(people, key=lambda person: person[1])
print(sorted_people) # 輸出: [('Bob', 25), ('Alice', 30), ('Charlie', 35)]def num():return [lambda x:i*x for i in range(4)]
[m(1) for m in num()] # 輸出: [3, 3, 3, 3]