【Python基礎(chǔ)】python必會(huì)的10個(gè)知識(shí)點(diǎn)
來源 | Towards Data Science
來源 | Towards Data Science
作者 | Soner Yildirim
編譯 | VK

Python在數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)中占據(jù)主導(dǎo)地位。我認(rèn)為,占據(jù)主導(dǎo)地位的兩大原因是相對(duì)容易學(xué)習(xí)和數(shù)據(jù)科學(xué)庫(kù)的豐富選擇。
Python是一種通用語言,因此它不僅僅用于數(shù)據(jù)科學(xué),Web開發(fā)、移動(dòng)應(yīng)用程序和游戲開發(fā)也是Python的一些用例。
如果你僅將Python用于與數(shù)據(jù)科學(xué)相關(guān)的任務(wù),那么你不必是Python專家。不過,我認(rèn)為你必須掌握一些核心概念和功能。
我們?cè)诒疚闹薪榻B的內(nèi)容不是特定于庫(kù)的。它們可以被認(rèn)為是數(shù)據(jù)科學(xué)的基礎(chǔ)Python。即使你只使用Pandas、Matplotlib和sciket learn,也需要全面了解Python基礎(chǔ)知識(shí)。這些庫(kù)假設(shè)你熟悉Python的基礎(chǔ)知識(shí)。
我將用幾個(gè)例子簡(jiǎn)要地解釋每個(gè)主題,并為大多數(shù)主題提供一個(gè)詳細(xì)文章的鏈接。
1.函數(shù)
函數(shù)是Python中的構(gòu)建塊。它們接受零個(gè)或多個(gè)參數(shù)并返回一個(gè)值。我們使用def關(guān)鍵字創(chuàng)建一個(gè)函數(shù)。
這是一個(gè)簡(jiǎn)單的函數(shù),它將兩個(gè)數(shù)相乘。
def multiply(a, b):
return a * b
multiply(5, 4)
20下面是另一個(gè)根據(jù)單詞長(zhǎng)度進(jìn)行相關(guān)計(jì)算的示例。
def is_long(word):
if len(word) > 8:
return f"{word} is a long word."
is_long("artificial")
'artificial is a long word.'函數(shù)應(yīng)該完成一項(xiàng)任務(wù)。創(chuàng)建一個(gè)執(zhí)行一系列任務(wù)的函數(shù)違背了使用函數(shù)的目的。
我們還應(yīng)該為函數(shù)指定描述性名稱,這樣我們就可以在不看到代碼的情況下了解函數(shù)的功能。
2.位置參數(shù)和關(guān)鍵字參數(shù)
當(dāng)我們定義一個(gè)函數(shù)時(shí),我們指定它的參數(shù)。調(diào)用函數(shù)時(shí),必須為其提供所需參數(shù)的值。
考慮在上一步中創(chuàng)建的乘法函數(shù)。它有兩個(gè)參數(shù),所以我們?cè)谡{(diào)用函數(shù)時(shí)為這些參數(shù)提供值。
位置參數(shù)僅由名稱聲明。
關(guān)鍵字參數(shù)由名稱和默認(rèn)值聲明。
調(diào)用函數(shù)時(shí),必須給出位置參數(shù)的值。否則,我們將得到一個(gè)錯(cuò)誤。如果我們不為關(guān)鍵字參數(shù)指定值,它將采用默認(rèn)值。
讓我們用關(guān)鍵字參數(shù)重新定義multiply函數(shù),這樣我們就可以看到區(qū)別了。
def multiply(a=1, b=1):
return a * b
print(multiply(5, 4))
20
print(multiply())
13.args和*kwargs
函數(shù)是Python中的構(gòu)建塊。它們接受零個(gè)或多個(gè)參數(shù)并返回一個(gè)值。Python在參數(shù)如何傳遞給函數(shù)方面非常靈活。args和*kwargs使處理參數(shù)更容易、更清晰。
*args允許函數(shù)接受任意數(shù)量的位置參數(shù)。
下面是一個(gè)簡(jiǎn)單的例子:
def addition(*args):
result = 0
for i in args:
result += i
return result
print(addition(1,4))
5
print(addition(1,7,3))
11**kwargs允許函數(shù)接受任意數(shù)量的關(guān)鍵字參數(shù)。
默認(rèn)情況下,**kwargs是一個(gè)空字典。每個(gè)未定義的關(guān)鍵字參數(shù)都作為鍵值對(duì)存儲(chǔ)在**kwargs字典中。
下面是一個(gè)簡(jiǎn)單的例子:
def arg_printer(a, b, option=True, **kwargs):
print(a, b)
print(option)
print(kwargs)
arg_printer(3, 4, param1=5, param2=6)
3 4
True
{'param1': 5, 'param2': 6}https://towardsdatascience.com/10-examples-to-master-args-and-kwargs-in-python-6f1e8cc30749
4.類
面向?qū)ο缶幊蹋∣OP)范式是圍繞著擁有屬于特定類型的對(duì)象的思想構(gòu)建的。從某種意義上說,類型是解釋我們的對(duì)象。
Python中的所有東西都是一種類型的對(duì)象,比如整數(shù)、列表、字典、函數(shù)等等。我們使用類定義一種對(duì)象類型。
類具有以下信息:
數(shù)據(jù)屬性:創(chuàng)建類的實(shí)例需要什么
方法(即過程屬性):我們?nèi)绾闻c類的實(shí)例交互。
https://towardsdatascience.com/a-comprehensive-guide-for-classes-in-python-e6bb72a25a5e
5.列表
List是Python中的內(nèi)置數(shù)據(jù)結(jié)構(gòu)。它表示為方括號(hào)中的數(shù)據(jù)點(diǎn)集合。列表可用于存儲(chǔ)任何數(shù)據(jù)類型或不同數(shù)據(jù)類型的混合。
列表是可變的,這也是為什么它們?nèi)绱顺S玫脑蛑?。因此,我們可以刪除和添加項(xiàng)。也可以更新列表中的項(xiàng)目。
下面是一些關(guān)于如何創(chuàng)建和修改列表的示例。
words = ['data','science'] # 創(chuàng)建一個(gè)列表
print(words[0]) # 訪問項(xiàng)目
'data'
words.append('machine') # 添加項(xiàng)目
print(len(words)) # 列表長(zhǎng)度
3
print(words)
['data', 'science', 'machine']https://towardsdatascience.com/11-must-know-operations-to-master-python-lists-f03c71b6bbb6
6.列表生成式
列表生成式用更簡(jiǎn)單、更吸引人的語法表示for和if循環(huán)。列表生成式相對(duì)比for循環(huán)快。

下面是一個(gè)簡(jiǎn)單的列表生成式,它根據(jù)給定的條件從另一個(gè)列表創(chuàng)建一個(gè)列表。
a = [4,6,7,3,2]
b = [x for x in a if x > 5]
b
[6, 7]下面的列表將函數(shù)應(yīng)用于另一個(gè)列表中的項(xiàng)。
words = ['data','science','machine','learning']
b = [len(word) for word in words]
b
[4, 7, 7, 8]https://towardsdatascience.com/11-examples-to-master-python-list-comprehensions-33c681b56212
7.字典
字典是一個(gè)無序的鍵值對(duì)集合。每個(gè)條目都有一個(gè)鍵和值。字典可以看作是一個(gè)有特殊索引的列表。
密鑰必須是唯一且不可變的。所以我們可以使用字符串、數(shù)字(int或float)或元組作為鍵。值可以是任何類型。
考慮一個(gè)需要存儲(chǔ)學(xué)生成績(jī)的案例。我們可以把它們存儲(chǔ)在字典或列表中。

創(chuàng)建字典的一種方法是在大括號(hào)中編寫鍵值對(duì)。
grades = {'John':'A', 'Emily':'A+', 'Betty':'B', 'Mike':'C', 'Ashley':'A'}我們可以使用字典中的值的鍵來訪問它。
grades['John']
'A'
grades.get('Betty')
'B'https://towardsdatascience.com/12-examples-to-master-python-dictionaries-5a8bcd688c6d
8.集合
集合是不同的可散列對(duì)象的無序集合。這是Python官方文檔中對(duì)集合的定義。讓我們打開它。
無序集合:它包含零個(gè)或多個(gè)元素。集合中的元素沒有順序。因此,它不支持索引或切片,就像我們對(duì)列表所做的那樣。
不同的可散列對(duì)象:一個(gè)集合包含唯一的元素。hashable表示不可變。盡管集合是可變的,但集合的元素必須是不變的。
我們可以通過將逗號(hào)分隔的對(duì)象放在大括號(hào)中來創(chuàng)建一個(gè)集合。
a = {1, 4, 'foo'}
print(type(a))
<class 'set'>集合不包含重復(fù)的元素,因此即使我們多次嘗試添加相同的元素,結(jié)果集合也將包含唯一的元素。
a = {1, 4, 'foo', 4, 'foo'}
print(a)
{1, 4, 'foo'}https://towardsdatascience.com/12-examples-to-master-python-sets-71802ea56de3
9.元組
元組是用逗號(hào)分隔并用括號(hào)括起來的值的集合。與列表不同,元組是不可變的。元組的不變性可以看作元組的識(shí)別特征。
元組由括號(hào)中的值和逗號(hào)分隔的值組成。
a = (3, 4)
print(type(a))
<class 'tuple'>我們也可以不使用括號(hào)來創(chuàng)建元組。用逗號(hào)分隔的值序列將創(chuàng)建一個(gè)元組。
a = 3, 4, 5, 6
print(type(a))
<class 'tuple'>元組最常見的用例之一是返回多個(gè)值的函數(shù)。
import numpy as np
def count_sum(arr):
count = len(arr)
sum = arr.sum()
return count, sum
arr = np.random.randint(10, size=8)
a = count_sum(arr)
print(a)
(8, 39)
print(type(a))
<class 'tuple'>https://towardsdatascience.com/10-examples-to-master-python-tuples-6c606ed42b96
10.Lambda表達(dá)式
Lambda表達(dá)式是函數(shù)的特殊形式。通常,lambda表達(dá)式不帶名稱。
考慮以下返回給定數(shù)字平方的函數(shù)。
def square(x):
return x**2等效lambda表達(dá)式為:
lambda x: x ** 2考慮一個(gè)需要做一次或幾次的操作。此外,我們有許多變化,這一行動(dòng)是略有不同,比原來的一個(gè)。在這種情況下,為每個(gè)操作定義一個(gè)單獨(dú)的函數(shù)并不理想。相反,lambda表達(dá)式提供了一種更有效的方法來完成任務(wù)。
https://towardsdatascience.com/the-power-of-lambda-expressions-in-python-c5a1dcea9837
結(jié)論
我們已經(jīng)介紹了Python的一些關(guān)鍵概念和主題。大多數(shù)與數(shù)據(jù)科學(xué)相關(guān)的任務(wù)都是通過第三方庫(kù)和框架完成的,如Pandas、Matplotlib、sciket-learn、TensorFlow等。
但是,我們應(yīng)該全面了解Python的基本操作和概念,以便有效地使用這些庫(kù)。
謝謝你的閱讀。
往期精彩回顧
本站qq群851320808,加入微信群請(qǐng)掃碼:
