跟我一起從零開始學(xué)python(一)編程語(yǔ)法必修

前言

隨著互聯(lián)網(wǎng)的高速發(fā)展,python市場(chǎng)越來(lái)越大搁进,也越來(lái)越受歡迎浪感,主要源于它:易學(xué)易用,通用性廣饼问,時(shí)代需要影兽,源代碼的開放以及人工智能浪潮,接來(lái)下我們就從這幾個(gè)方向談?wù)劄楹蝡ython越來(lái)越受歡迎莱革,以及入門學(xué)習(xí)python編程語(yǔ)法


Python之所以越來(lái)越受歡迎峻堰,市場(chǎng)也越來(lái)越大讹开,主要體現(xiàn)在以下幾個(gè)方面

  • 易學(xué)易用:Python語(yǔ)言設(shè)計(jì)簡(jiǎn)潔,易于閱讀和學(xué)習(xí)捐名,學(xué)習(xí)曲線較平緩旦万。同時(shí)具有豐富的核心函數(shù)庫(kù)和第三方庫(kù),可快速構(gòu)建復(fù)雜應(yīng)用镶蹋。

  • 通用性:Python是一種通用性編程語(yǔ)言成艘,可應(yīng)用于多個(gè)領(lǐng)域,如Web開發(fā)梅忌、數(shù)據(jù)科學(xué)狰腌、人工智能、機(jī)器學(xué)習(xí)牧氮、圖像處理等琼腔。特別是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域的發(fā)展,使Python成為一種非常流行的編程語(yǔ)言。

  • 開放源代碼:Python是開放源代碼的利虫,具有廣泛的社區(qū)支持笔喉,可以免費(fèi)獲取,可以免費(fèi)地編寫和分發(fā)應(yīng)用程序甥材。

  • 大數(shù)據(jù)時(shí)代需要:Python具有強(qiáng)大的數(shù)據(jù)處理和分析能力,成為數(shù)據(jù)驅(qū)動(dòng)的業(yè)務(wù)和決策的輸入工具之一性含。此外洲赵,Python還具有分布式計(jì)算、大規(guī)模數(shù)據(jù)處理和可擴(kuò)展性等方面的特性商蕴,因此在大數(shù)據(jù)時(shí)代得到了廣泛應(yīng)用叠萍。

  • 人工智能浪潮:在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)等方面,Python成為了一種基本語(yǔ)言绪商。在人工智能領(lǐng)域苛谷,Python的擴(kuò)展庫(kù)TensorFlow,Jupyter Notebook等格郁,讓科學(xué)家們更方便的進(jìn)行算法的實(shí)驗(yàn)和模擬腹殿。

因此,Python已經(jīng)成為企業(yè)例书、政府和大學(xué)中非常重要的編程語(yǔ)言锣尉,并且Python在全球范圍內(nèi)已經(jīng)得到了廣泛的認(rèn)可和應(yīng)用,未來(lái)的發(fā)展前景也非常廣闊决采。

那么悟耘,如何才能入門python呢,今天帶來(lái)的介紹就是入門python第一步:編程語(yǔ)法必修

本系列文根據(jù)以下學(xué)習(xí)路線展開講述织狐,由于內(nèi)容較多暂幼,知識(shí)點(diǎn)看不全請(qǐng)打開詳細(xì)版自行查看:從零開始學(xué)python到高級(jí)進(jìn)階路線圖

一丶python3基礎(chǔ)入門

Python是一種高級(jí)編程語(yǔ)言筏勒,易于學(xué)習(xí)和使用。Python3是Python語(yǔ)言的最新版本旺嬉,它具有許多新的特性和改進(jìn)管行。本教程將介紹Python3的基礎(chǔ)知識(shí),包括變量邪媳、數(shù)據(jù)類型捐顷、運(yùn)算符、條件語(yǔ)句雨效、循環(huán)語(yǔ)句迅涮、函數(shù)、模塊等徽龟。通過(guò)學(xué)習(xí)本教程叮姑,您將能夠掌握Python3的基本語(yǔ)法和編程技巧,為進(jìn)一步學(xué)習(xí)Python編程打下堅(jiān)實(shí)的基礎(chǔ)据悔。

1.數(shù)據(jù)類型

Python3中常見的數(shù)據(jù)類型有:

  • 整型(int):表示整數(shù)传透,如1、2极颓、3等朱盐。
  • 浮點(diǎn)型(float):表示帶小數(shù)點(diǎn)的數(shù),如1.0菠隆、2.5兵琳、3.14等。
  • 布爾型(bool):表示True或False兩個(gè)值骇径。
  • 字符串型(str):表示一串字符闰围,如"hello"、"world"等既峡。
  • 列表型(list):表示一組有序的元素,如[1, 2, 3]碧查、["hello", "world"]等运敢。
  • 元組型(tuple):表示一組有序的元素,但是不可修改忠售,如(1, 2, 3)传惠、("hello", "world")等。
  • 字典型(dict):表示一組鍵值對(duì)稻扬,如{"name": "Tom", "age": 18}等卦方。

2.變量與關(guān)鍵字

在Python3中,變量是用來(lái)存儲(chǔ)數(shù)據(jù)的泰佳,可以通過(guò)賦值語(yǔ)句來(lái)創(chuàng)建變量盼砍。關(guān)鍵字是Python3中已經(jīng)定義好的一些特殊單詞尘吗,不能用作變量名。

Python3中常見的關(guān)鍵字有

  • and浇坐、or睬捶、not:邏輯運(yùn)算符。
  • if近刘、else擒贸、elif:條件語(yǔ)句。
  • for觉渴、while:循環(huán)語(yǔ)句介劫。
  • break、continue案淋、pass:循環(huán)控制語(yǔ)句座韵。
  • def、return:函數(shù)定義和返回值哎迄。
  • class回右、object:面向?qū)ο缶幊獭?/li>

3.語(yǔ)句

Python3中常見的語(yǔ)句有:

  • 賦值語(yǔ)句:用來(lái)創(chuàng)建變量并賦值,如a = 1漱挚。
  • 條件語(yǔ)句:用來(lái)根據(jù)條件執(zhí)行不同的代碼塊翔烁,如if、else旨涝、elif蹬屹。
  • 循環(huán)語(yǔ)句:用來(lái)重復(fù)執(zhí)行一段代碼塊,如for白华、while慨默。
  • 函數(shù)定義語(yǔ)句:用來(lái)定義函數(shù),如def弧腥。
  • 導(dǎo)入模塊語(yǔ)句:用來(lái)導(dǎo)入其他模塊中的函數(shù)或變量厦取,如import。

4.表達(dá)式

Python3中的表達(dá)式是由變量管搪、常量和運(yùn)算符組成的式子虾攻,可以用來(lái)計(jì)算結(jié)果。常見的運(yùn)算符有:

  • 算術(shù)運(yùn)算符:+更鲁、-霎箍、、/澡为、%漂坏、*、//。
  • 比較運(yùn)算符:==顶别、!=谷徙、>、<筋夏、>=蒂胞、<=。
  • 邏輯運(yùn)算符:and条篷、or骗随、not。

5.運(yùn)算符
Python3中的運(yùn)算符有很多種赴叹,包括算術(shù)運(yùn)算符鸿染、比較運(yùn)算符、邏輯運(yùn)算符乞巧、位運(yùn)算符等涨椒。Python3中的運(yùn)算符和操作對(duì)象包括

  • 算術(shù)運(yùn)算符:用于執(zhí)行基本的數(shù)學(xué)運(yùn)算,如加绽媒、減蚕冬、乘、除是辕、取模囤热、冪等。例如:+获三、-旁蔼、、/疙教、%棺聊、*。

  • 比較運(yùn)算符:用于比較兩個(gè)值的大小關(guān)系贞谓,返回True或False限佩。例如:==、!=裸弦、>祟同、<、>=烁兰、<=。

  • 賦值運(yùn)算符:用于給變量賦值徊都。例如:=沪斟、+=、-=、=主之、/=择吊、%=、*=槽奕。

  • 邏輯運(yùn)算符:用于組合多個(gè)條件几睛,返回True或False痴颊。例如:and儿普、or钓简、not纹烹。

  • 位運(yùn)算符:用于對(duì)二進(jìn)制數(shù)進(jìn)行操作突想。例如:&煤篙、|萌壳、^场梆、~盔几、<<晴弃、>>。

  • 成員運(yùn)算符:用于判斷一個(gè)值是否在序列中逊拍。例如:in上鞠、not in。

  • 身份運(yùn)算符:用于比較兩個(gè)對(duì)象的內(nèi)存地址是否相同芯丧。例如:is芍阎、is not。

  • 運(yùn)算符優(yōu)先級(jí):用于確定運(yùn)算符的執(zhí)行順序注整。

操作對(duì)象包括

  • 數(shù)字:整數(shù)能曾、浮點(diǎn)數(shù)、復(fù)數(shù)等肿轨。

  • 字符串:由一系列字符組成的序列寿冕。

  • 列表:由一系列元素組成的序列,可以包含不同類型的元素椒袍。

  • 元組:與列表類似驼唱,但是元素不可修改。

  • 字典:由一系列鍵值對(duì)組成的無(wú)序集合驹暑。

  • 集合:由一系列元素組成的無(wú)序集合玫恳,元素不可重復(fù)。

6.字符串

Python3中的字符串是由一串字符組成的优俘,可以用單引號(hào)或雙引號(hào)來(lái)表示京办。字符串可以進(jìn)行拼接、切片帆焕、替換等操作惭婿。

7.注釋

Python3中的注釋用#來(lái)表示,可以在代碼中添加注釋來(lái)解釋代碼的作用。注釋可以單獨(dú)一行财饥,也可以在代碼行后面添加换吧。注釋不會(huì)被解釋器執(zhí)行。

二丶列表與元組

在Python中钥星,列表和元組都是用來(lái)存儲(chǔ)一組有序數(shù)據(jù)的容器沾瓦,它們的區(qū)別在于列表是可變的,而元組是不可變的谦炒。

列表

列表是Python中最常用的數(shù)據(jù)類型之一贯莺,它可以存儲(chǔ)任意類型的數(shù)據(jù),包括數(shù)字编饺、字符串乖篷、布爾值、列表透且、元組撕蔼、字典等。列表用方括號(hào) [] 來(lái)表示秽誊,其中的元素用逗號(hào)分隔開鲸沮。

創(chuàng)建列表

可以通過(guò)以下方式創(chuàng)建一個(gè)列表:

# 創(chuàng)建一個(gè)空列表
my_list = []

# 創(chuàng)建一個(gè)包含元素的列表
my_list = [1, 2, 3, 'hello', True, [4, 5, 6]]

訪問(wèn)列表元素

可以通過(guò)下標(biāo)來(lái)訪問(wèn)列表中的元素,下標(biāo)從0開始锅论,可以是負(fù)數(shù)讼溺,表示從后往前數(shù)。

my_list = [1, 2, 3, 'hello', True, [4, 5, 6]]

print(my_list[0])  # 輸出 1
print(my_list[3])  # 輸出 'hello'
print(my_list[-1])  # 輸出 [4, 5, 6]
print(my_list[-1][0])  # 輸出 4

修改列表元素

列表是可變的最易,可以通過(guò)下標(biāo)來(lái)修改列表中的元素怒坯。

my_list = [1, 2, 3, 'hello', True, [4, 5, 6]]

my_list[0] = 100
my_list[-1][0] = 400

print(my_list)  # 輸出 [100, 2, 3, 'hello', True, [400, 5, 6]]

列表操作

列表支持一些常用的操作,如添加元素藻懒、刪除元素剔猿、切片等。

  • 添加元素
    可以使用 append() 方法向列表末尾添加一個(gè)元素嬉荆,使用 insert() 方法在指定位置插入一個(gè)元素归敬。
my_list = [1, 2, 3]

my_list.append(4)
print(my_list)  # 輸出 [1, 2, 3, 4]

my_list.insert(1, 5)
print(my_list)  # 輸出 [1, 5, 2, 3, 4]
  • 刪除元素
    可以使用 remove() 方法刪除指定元素,使用 pop() 方法刪除指定位置的元素鄙早。
my_list = [1, 2, 3, 4]

my_list.remove(3)
print(my_list)  # 輸出 [1, 2, 4]

my_list.pop(1)
print(my_list)  # 輸出 [1, 4]
  • 切片
    可以使用切片來(lái)獲取列表的子集汪茧,語(yǔ)法為 [start:end:step],其中 start 表示起始位置(默認(rèn)為0)限番,end 表示結(jié)束位置(默認(rèn)為列表長(zhǎng)度)舱污,step 表示步長(zhǎng)(默認(rèn)為1)。
my_list = [1, 2, 3, 4, 5]

print(my_list[1:3])  # 輸出 [2, 3]
print(my_list[:3])  # 輸出 [1, 2, 3]
print(my_list[::2])  # 輸出 [1, 3, 5]

元組

元組和列表類似弥虐,也是用來(lái)存儲(chǔ)一組有序數(shù)據(jù)的容器扩灯,但是元組是不可變的别威,一旦創(chuàng)建就不能修改。元組用圓括號(hào) () 來(lái)表示驴剔,其中的元素用逗號(hào)分隔開。

創(chuàng)建元組

可以通過(guò)以下方式創(chuàng)建一個(gè)元組:

# 創(chuàng)建一個(gè)空元組
my_tuple = ()

# 創(chuàng)建一個(gè)包含元素的元組
my_tuple = (1, 2, 3, 'hello', True, [4, 5, 6])

訪問(wèn)元組元素
可以通過(guò)下標(biāo)來(lái)訪問(wèn)元組中的元素粥庄,下標(biāo)從0開始丧失,可以是負(fù)數(shù),表示從后往前數(shù)惜互。

my_tuple = (1, 2, 3, 'hello', True, [4, 5, 6])

print(my_tuple[0])  # 輸出 1
print(my_tuple[3])  # 輸出 'hello'
print(my_tuple[-1])  # 輸出 [4, 5, 6]
print(my_tuple[-1][0])  # 輸出 4

元組操作
元組是不可變的布讹,不能修改元素,但是可以進(jìn)行一些常用的操作训堆,如切片描验、拼接等。

  • 切片
    可以使用切片來(lái)獲取元組的子集坑鱼,語(yǔ)法和列表相同膘流。
my_tuple = (1, 2, 3, 4, 5)

print(my_tuple[1:3])  # 輸出 (2, 3)
print(my_tuple[:3])  # 輸出 (1, 2, 3)
print(my_tuple[::2])  # 輸出 (1, 3, 5)

拼接

可以使用 + 運(yùn)算符來(lái)拼接兩個(gè)元組。

my_tuple1 = (1, 2, 3)
my_tuple2 = ('hello', 'world')

my_tuple3 = my_tuple1 + my_tuple2
print(my_tuple3)  # 輸出 (1, 2, 3, 'hello', 'world')

列表和元組的選擇

列表和元組都是用來(lái)存儲(chǔ)一組有序數(shù)據(jù)的容器鲁沥,它們的區(qū)別在于列表是可變的呼股,而元組是不可變的。因此画恰,如果需要對(duì)數(shù)據(jù)進(jìn)行增刪改操作彭谁,應(yīng)該使用列表;如果數(shù)據(jù)不需要修改允扇,應(yīng)該使用元組缠局,因?yàn)樵M比列表更加輕量級(jí),占用的內(nèi)存更少考润。

三丶字符串

Python中的字符串是一種不可變的序列類型狭园,可以使用單引號(hào)、雙引號(hào)或三引號(hào)來(lái)表示额划。以下是一些常見的字符串操作:

1.字符串拼接
可以使用加號(hào)(+)來(lái)拼接兩個(gè)字符串妙啃,也可以使用乘號(hào)(*)來(lái)重復(fù)一個(gè)字符串。

str1 = "Hello"
str2 = "World"
str3 = str1 + " " + str2  # 拼接字符串
print(str3)  # 輸出:Hello World

str4 = str1 * 3  # 重復(fù)字符串
print(str4)  # 輸出:HelloHelloHello

2.字符串索引和切片

可以使用索引來(lái)訪問(wèn)字符串中的單個(gè)字符俊戳,索引從0開始揖赴。也可以使用切片來(lái)訪問(wèn)字符串中的一部分,切片的語(yǔ)法為[start:end:step]抑胎,其中start表示起始位置(包含)燥滑,end表示結(jié)束位置(不包含),step表示步長(zhǎng)(默認(rèn)為1)阿逃。

str = "Hello World"
print(str[0])  # 輸出:H
print(str[-1])  # 輸出:d
print(str[0:5])  # 輸出:Hello
print(str[6:])  # 輸出:World
print(str[::2])  # 輸出:HloWrd

3.字符串常用方法

Python中的字符串還有許多常用方法铭拧,例如:

  • len():返回字符串的長(zhǎng)度赃蛛。
  • upper():將字符串中的所有字母轉(zhuǎn)換為大寫。
  • lower():將字符串中的所有字母轉(zhuǎn)換為小寫搀菩。
  • strip():去除字符串兩端的空格呕臂。
  • split():將字符串按照指定的分隔符分割成多個(gè)子字符串,并返回一個(gè)列表肪跋。
str = " Hello World "
print(len(str))  # 輸出:13
print(str.upper())  # 輸出: HELLO WORLD 
print(str.lower())  # 輸出: hello world 
print(str.strip())  # 輸出:Hello World
print(str.split())  # 輸出:['Hello', 'World']

總之歧蒋,字符串是Python中非常重要的數(shù)據(jù)類型之一,掌握字符串的基本操作和常用方法對(duì)于編寫Python程序非常有幫助州既。

四丶字典

在Python中谜洽,字典是一種無(wú)序的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)鍵值對(duì)吴叶。字典中的鍵必須是唯一的阐虚,而值可以是任何類型的對(duì)象。字典用花括號(hào){}表示蚌卤,每個(gè)鍵值對(duì)之間用逗號(hào)分隔实束。

創(chuàng)建字典的方法

1.直接使用花括號(hào){}創(chuàng)建空字典

my_dict = {}

2.使用鍵值對(duì)創(chuàng)建字典

my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}

3.使用dict()函數(shù)創(chuàng)建字典

my_dict = dict(name='Tom', age=18, gender='male')

訪問(wèn)字典中的值

可以使用鍵來(lái)訪問(wèn)字典中的值,如果鍵不存在逊彭,則會(huì)拋出KeyError異常磕洪。

my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
print(my_dict['name'])  # 輸出Tom

添加或修改字典中的鍵值對(duì):

可以使用賦值語(yǔ)句來(lái)添加或修改字典中的鍵值對(duì)。

my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
my_dict['name'] = 'Jerry'  # 修改name的值
my_dict['height'] = 180  # 添加新的鍵值對(duì)
print(my_dict)  # 輸出{'name': 'Jerry', 'age': 18, 'gender': 'male', 'height': 180}

刪除字典中的鍵值對(duì):

可以使用del語(yǔ)句來(lái)刪除字典中的鍵值對(duì)诫龙。

my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
del my_dict['age']  # 刪除age鍵值對(duì)
print(my_dict)  # 輸出{'name': 'Tom', 'gender': 'male'}

遍歷字典:

可以使用for循環(huán)遍歷字典中的鍵值對(duì)析显。

my_dict = {'name': 'Tom', 'age': 18, 'gender': 'male'}
for key, value in my_dict.items():
    print(key, value)

輸出:

name Tom
age 18
gender male

其他常用方法:

  • keys():返回字典中所有的鍵。
  • values():返回字典中所有的值签赃。
  • items():返回字典中所有的鍵值對(duì)谷异。

五丶條件丶循環(huán)和其他語(yǔ)句

條件語(yǔ)句

Python中的條件語(yǔ)句包括ifelifelse锦聊。它們用于根據(jù)條件執(zhí)行不同的代碼塊歹嘹。

if語(yǔ)句的語(yǔ)法如下:

if condition:
    # code block

如果條件為True,則執(zhí)行代碼塊孔庭。如果條件為False尺上,則跳過(guò)代碼塊。

elif語(yǔ)句用于在if語(yǔ)句中添加多個(gè)條件圆到。它的語(yǔ)法如下:

if condition1:
    # code block
elif condition2:
    # code block

如果條件1為True怎抛,則執(zhí)行第一個(gè)代碼塊。如果條件1為False且條件2為True芽淡,則執(zhí)行第二個(gè)代碼塊马绝。如果條件1和條件2都為False虐块,則跳過(guò)代碼塊源请。

else語(yǔ)句用于在if語(yǔ)句中添加一個(gè)默認(rèn)情況顾瞪。它的語(yǔ)法如下:

if condition1:
    # code block
elif condition2:
    # code block
else:
    # code block

如果條件1為True汪诉,則執(zhí)行第一個(gè)代碼塊。如果條件1為False且條件2為True椭赋,則執(zhí)行第二個(gè)代碼塊抚岗。如果條件1和條件2都為False,則執(zhí)行else代碼塊哪怔。

循環(huán)語(yǔ)句

Python中的循環(huán)語(yǔ)句包括forwhile苟跪。它們用于重復(fù)執(zhí)行代碼塊。

for循環(huán)用于遍歷序列(如列表蔓涧、元組、字符串等)笋额。它的語(yǔ)法如下:

for variable in sequence:
    # code block

在每次循環(huán)中元暴,變量將被設(shè)置為序列中的下一個(gè)值,并執(zhí)行代碼塊兄猩。當(dāng)序列中的所有值都被遍歷后茉盏,循環(huán)結(jié)束。

while循環(huán)用于在條件為True時(shí)重復(fù)執(zhí)行代碼塊枢冤。它的語(yǔ)法如下:

while condition:
    # code block

在每次循環(huán)中鸠姨,檢查條件是否為True。如果是淹真,則執(zhí)行代碼塊讶迁。如果不是,則跳出循環(huán)核蘸。

其他語(yǔ)句

Python中還有一些其他語(yǔ)句巍糯,如breakcontinuepass客扎。

break語(yǔ)句用于跳出循環(huán)祟峦。它的語(yǔ)法如下:

while condition:
    # code block
    if some_condition:
        break

在循環(huán)中,如果滿足某個(gè)條件徙鱼,則使用break語(yǔ)句跳出循環(huán)宅楞。

continue語(yǔ)句用于跳過(guò)當(dāng)前循環(huán)中的剩余代碼,并開始下一次循環(huán)袱吆。它的語(yǔ)法如下:

while condition:
    # code block
    if some_condition:
        continue
    # remaining code in loop

在循環(huán)中厌衙,如果滿足某個(gè)條件,則使用continue語(yǔ)句跳過(guò)當(dāng)前循環(huán)中的剩余代碼绞绒,并開始下一次循環(huán)迅箩。

pass語(yǔ)句用于在代碼塊中占位。它的語(yǔ)法如下:

if some_condition:
    pass
else:
    # code block

在代碼塊中处铛,如果需要占位饲趋,則使用pass語(yǔ)句拐揭。它不執(zhí)行任何操作,只是占據(jù)一個(gè)位置奕塑。

六丶函數(shù)

在Python中堂污,函數(shù)是一段可重用的代碼塊,用于執(zhí)行特定的任務(wù)龄砰。函數(shù)可以接受參數(shù)并返回值盟猖。函數(shù)的定義以關(guān)鍵字def開頭,后跟函數(shù)名和括號(hào)换棚,括號(hào)中可以包含參數(shù)列表式镐。函數(shù)體包含在冒號(hào)后面的縮進(jìn)塊中。

以下是一個(gè)簡(jiǎn)單的函數(shù)示例:

def greet(name):
    print("Hello, " + name + "!")

greet("Alice")

輸出:

Hello, Alice!

在這個(gè)例子中固蚤,greet函數(shù)接受一個(gè)參數(shù)name娘汞,并在控制臺(tái)上打印出一條問(wèn)候語(yǔ)。

函數(shù)可以返回一個(gè)值夕玩,使用關(guān)鍵字return你弦。以下是一個(gè)返回兩個(gè)數(shù)之和的函數(shù)示例:

def add_numbers(x, y):
    return x + y

result = add_numbers(3, 5)
print(result)

輸出:

8

在這個(gè)例子中,add_numbers函數(shù)接受兩個(gè)參數(shù)xy燎孟,并返回它們的和禽作。我們將函數(shù)的返回值存儲(chǔ)在變量result中,并在控制臺(tái)上打印出來(lái)揩页。

函數(shù)可以有默認(rèn)參數(shù)值旷偿,這些值在函數(shù)被調(diào)用時(shí)可以被覆蓋。以下是一個(gè)帶有默認(rèn)參數(shù)值的函數(shù)示例:

def greet(name, greeting="Hello"):
    print(greeting + ", " + name + "!")

greet("Alice")
greet("Bob", "Hi")

輸出:

Hello, Alice!
Hi, Bob!

在這個(gè)例子中爆侣,greet函數(shù)有一個(gè)默認(rèn)參數(shù)值greeting="Hello"狸捅。如果我們不提供greeting參數(shù),函數(shù)將使用默認(rèn)值累提。如果我們提供了greeting參數(shù)尘喝,它將覆蓋默認(rèn)值。

函數(shù)可以接受任意數(shù)量的參數(shù)斋陪,使用星號(hào)*朽褪。以下是一個(gè)接受任意數(shù)量參數(shù)的函數(shù)示例:

def print_numbers(*numbers):
    for number in numbers:
        print(number)

print_numbers(1, 2, 3)
print_numbers(4, 5, 6, 7)

輸出:

1
2
3
4
5
6
7

在這個(gè)例子中,print_numbers函數(shù)接受任意數(shù)量的參數(shù)无虚,并使用for循環(huán)打印它們缔赠。

函數(shù)可以嵌套在其他函數(shù)中。以下是一個(gè)嵌套函數(shù)的示例:

def outer_function():
    print("Outer function")

    def inner_function():
        print("Inner function")

    inner_function()

outer_function()

輸出:

Outer function
Inner function

在這個(gè)例子中友题,outer_function包含一個(gè)嵌套函數(shù)inner_function嗤堰。當(dāng)outer_function被調(diào)用時(shí),它將打印一條消息并調(diào)用inner_function度宦。inner_function也將打印一條消息踢匣。

函數(shù)可以作為參數(shù)傳遞給其他函數(shù)告匠。以下是一個(gè)將函數(shù)作為參數(shù)的示例:

def add_numbers(x, y):
    return x + y

def apply_function(f, x, y):
    return f(x, y)

result = apply_function(add_numbers, 3, 5)
print(result)

輸出:

8

在這個(gè)例子中,apply_function函數(shù)接受一個(gè)函數(shù)f和兩個(gè)參數(shù)xy离唬。它將調(diào)用f(x, y)并返回結(jié)果后专。我們將add_numbers函數(shù)作為參數(shù)傳遞給apply_function,并將結(jié)果存儲(chǔ)在變量result中输莺。

七丶面向?qū)ο?/h3>

Python是一種面向?qū)ο蟮木幊陶Z(yǔ)言戚哎,它支持面向?qū)ο缶幊蹋∣OP)。面向?qū)ο缶幊淌且环N編程范式嫂用,它將數(shù)據(jù)和操作數(shù)據(jù)的方法組合在一起型凳,形成一個(gè)對(duì)象。在Python中嘱函,對(duì)象是由類定義的甘畅,類是一種用戶定義的數(shù)據(jù)類型,它包含數(shù)據(jù)和方法实夹。

Python中的面向?qū)ο缶幊逃幸韵聨讉€(gè)關(guān)鍵概念

  • 類(Class):類是一種用戶定義的數(shù)據(jù)類型,它定義了一組屬性和方法粒梦。類是創(chuàng)建對(duì)象的模板亮航。

  • 對(duì)象(Object):對(duì)象是類的實(shí)例,它包含了類定義的屬性和方法匀们。

  • 屬性(Attribute):屬性是對(duì)象的數(shù)據(jù)成員缴淋,它可以是變量或常量。

  • 方法(Method):方法是對(duì)象的操作成員泄朴,它可以是函數(shù)或過(guò)程重抖。

  • 繼承(Inheritance):繼承是一種機(jī)制,它允許一個(gè)類繼承另一個(gè)類的屬性和方法祖灰。

  • 多態(tài)(Polymorphism):多態(tài)是一種機(jī)制钟沛,它允許不同的對(duì)象對(duì)同一消息做出不同的響應(yīng)。

下面是一個(gè)簡(jiǎn)單的Python類的例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, my name is", self.name, "and I am", self.age, "years old.")

person1 = Person("Alice", 25)
person1.say_hello()

在這個(gè)例子中局扶,我們定義了一個(gè)名為Person的類恨统,它有兩個(gè)屬性(nameage)和一個(gè)方法(say_hello)。我們使用__init__方法來(lái)初始化對(duì)象的屬性三妈,使用self關(guān)鍵字來(lái)引用對(duì)象本身畜埋。我們還定義了一個(gè)say_hello方法,它打印出對(duì)象的屬性畴蒲。

我們創(chuàng)建了一個(gè)名為person1Person對(duì)象悠鞍,并調(diào)用了它的say_hello方法。輸出結(jié)果為:

Hello, my name is Alice and I am 25 years old.

這是一個(gè)簡(jiǎn)單的面向?qū)ο缶幊痰睦幽T铮故玖薖ython中類和對(duì)象的基本概念咖祭。在實(shí)際編程中掩宜,面向?qū)ο缶幊炭梢詭椭覀兏玫亟M織代碼,提高代碼的可重用性和可維護(hù)性心肪。

在Python中锭亏,繼承是面向?qū)ο缶幊痰囊粋€(gè)重要概念。繼承允許我們創(chuàng)建一個(gè)新的類硬鞍,該類繼承了另一個(gè)類的屬性和方法慧瘤。被繼承的類稱為父類或基類,繼承的類稱為子類或派生類固该。

繼承

在Python中锅减,繼承的語(yǔ)法如下

class ParentClass:
    # 父類的屬性和方法

class ChildClass(ParentClass):
    # 子類的屬性和方法

在這個(gè)例子中,ChildClass 繼承了 ParentClass 的所有屬性和方法伐坏。子類可以使用父類的方法和屬性怔匣,也可以添加自己的方法和屬性。

例如桦沉,我們可以定義一個(gè) Person 類作為父類每瞒,然后定義一個(gè) Student 類作為子類,繼承 Person 類的屬性和方法:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def say_hello(self):
        print("Hello, my name is", self.name)

class Student(Person):
    def __init__(self, name, age, grade):
        super().__init__(name, age)
        self.grade = grade

    def say_hello(self):
        super().say_hello()
        print("I am a student in grade", self.grade)

在這個(gè)例子中纯露,Student 類繼承了 Person 類的 __init__方法和 say_hello方法剿骨。子類中的 __init__方法使用 super() 函數(shù)調(diào)用父類的 __init__ 方法,以便子類可以繼承父類的屬性埠褪。子類中的 say_hello 方法使用 super() 函數(shù)調(diào)用父類的 say_hello 方法浓利,并添加了自己的打印語(yǔ)句。

現(xiàn)在我們可以創(chuàng)建一個(gè) Student 對(duì)象并調(diào)用它的方法:

student = Student("Alice", 15, 9)
student.say_hello()

輸出結(jié)果為:

Hello, my name is Alice
I am a student in grade 9

這個(gè)例子展示了如何使用繼承來(lái)創(chuàng)建一個(gè)子類钞速,并繼承父類的屬性和方法贷掖。子類可以添加自己的方法和屬性,也可以重寫父類的方法渴语。

封裝

在Python中苹威,封裝是指將數(shù)據(jù)和方法包裝在一個(gè)類中,以保護(hù)數(shù)據(jù)不被外部直接訪問(wèn)和修改驾凶。這樣可以確保數(shù)據(jù)的安全性和一致性屠升,同時(shí)也可以隱藏實(shí)現(xiàn)細(xì)節(jié),使代碼更加簡(jiǎn)潔和易于維護(hù)狭郑。

Python中實(shí)現(xiàn)封裝的方式是通過(guò)使用訪問(wèn)控制符來(lái)限制對(duì)類的屬性和方法的訪問(wèn)腹暖。Python中有兩種訪問(wèn)控制符:公有和私有。

公有屬性和方法可以被類的外部訪問(wèn)翰萨,私有屬性和方法只能在類的內(nèi)部訪問(wèn)脏答。在Python中,私有屬性和方法的命名規(guī)則是在屬性或方法名前加上兩個(gè)下劃線“__”。

下面是一個(gè)簡(jiǎn)單的例子殖告,演示了如何在Python中實(shí)現(xiàn)封裝:

class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def get_name(self):
        return self.__name

    def get_age(self):
        return self.__age

    def set_name(self, name):
        self.__name = name

    def set_age(self, age):
        self.__age = age

p = Person("Tom", 20)
print(p.get_name())  # 輸出:Tom
print(p.get_age())   # 輸出:20

p.set_name("Jerry")
p.set_age(25)
print(p.get_name())  # 輸出:Jerry
print(p.get_age())   # 輸出:25

# 下面這行代碼會(huì)報(bào)錯(cuò)阿蝶,因?yàn)開_name是私有屬性,外部無(wú)法直接訪問(wèn)
# print(p.__name)

在上面的例子中黄绩,我們定義了一個(gè)Person類羡洁,包含了兩個(gè)私有屬性__name__age,以及四個(gè)公有方法get_name爽丹、get_age筑煮、set_nameset_age。通過(guò)這些方法粤蝎,我們可以獲取和修改對(duì)象的屬性值真仲,同時(shí)保證了屬性的安全性。

需要注意的是初澎,Python中的私有屬性和方法并不是真正的私有秸应,只是通過(guò)命名規(guī)則來(lái)實(shí)現(xiàn)的。如果知道了私有屬性和方法的名稱碑宴,仍然可以在類的外部訪問(wèn)和修改它們软啼。因此,封裝并不是完全保證數(shù)據(jù)的安全性延柠,而是提高了數(shù)據(jù)的安全性和可維護(hù)性祸挪。

類的專有方法

在Python中,類的專有方法是指以雙下劃線開頭和結(jié)尾的方法,也稱為魔術(shù)方法或特殊方法。這些方法在類的實(shí)例化最盅、屬性訪問(wèn)损搬、運(yùn)算符重載等方面起著重要作用。以下是一些常用的類的專有方法:

  • init(self, ...):構(gòu)造方法盅粪,用于初始化對(duì)象的屬性钓葫。

  • str(self):返回對(duì)象的字符串表示,可以通過(guò)print()函數(shù)輸出票顾。

  • repr(self):返回對(duì)象的字符串表示础浮,可以通過(guò)交互式命令行輸出。

  • getattr(self, name):當(dāng)訪問(wèn)不存在的屬性時(shí)調(diào)用奠骄。

  • setattr(self, name, value):當(dāng)設(shè)置屬性值時(shí)調(diào)用豆同。

  • delattr(self, name):當(dāng)刪除屬性時(shí)調(diào)用。

  • len(self):返回對(duì)象的長(zhǎng)度含鳞,可以通過(guò)len()函數(shù)調(diào)用影锈。

  • getitem(self, key):當(dāng)通過(guò)索引訪問(wèn)對(duì)象時(shí)調(diào)用。

  • setitem(self, key, value):當(dāng)通過(guò)索引設(shè)置對(duì)象的值時(shí)調(diào)用。

  • delitem(self, key):當(dāng)通過(guò)索引刪除對(duì)象時(shí)調(diào)用鸭廷。

  • eq(self, other):當(dāng)比較兩個(gè)對(duì)象是否相等時(shí)調(diào)用枣抱。

  • lt(self, other):當(dāng)比較兩個(gè)對(duì)象大小時(shí)調(diào)用。

八丶異常與文件處理

異常處理

在Python中辆床,異常處理是一種處理程序中出現(xiàn)錯(cuò)誤的方式佳晶。當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),Python會(huì)引發(fā)異常讼载。異常是一種Python對(duì)象轿秧,表示程序中的錯(cuò)誤或異常情況。Python提供了try-except語(yǔ)句來(lái)捕獲和處理異常维雇。

try-except語(yǔ)句的基本語(yǔ)法如下:

try:
    # 代碼塊
except ExceptionType:
    # 異常處理代碼塊

其中淤刃,try語(yǔ)句塊中包含可能引發(fā)異常的代碼,如果try語(yǔ)句塊中的代碼引發(fā)了異常吱型,則會(huì)跳轉(zhuǎn)到except語(yǔ)句塊中執(zhí)行異常處理代碼逸贾。

文件處理

Python中的文件處理包括文件的讀取、寫入和關(guān)閉等操作津滞。Python提供了open()函數(shù)來(lái)打開文件铝侵,可以指定文件名、打開模式和編碼方式等參數(shù)触徐。

打開文件的基本語(yǔ)法如下:

file = open(filename, mode, encoding)

其中咪鲜,filename是文件名,mode是打開模式撞鹉,encoding是編碼方式疟丙。打開模式包括:

  • 'r':只讀模式,打開文件后只能讀取文件內(nèi)容鸟雏,不能修改文件內(nèi)容享郊。
  • 'w':寫入模式,打開文件后可以寫入文件內(nèi)容孝鹊,如果文件不存在則創(chuàng)建文件炊琉,如果文件已存在則清空文件內(nèi)容。
  • 'a':追加模式又活,打開文件后可以在文件末尾追加內(nèi)容苔咪,如果文件不存在則創(chuàng)建文件。
  • 'x':獨(dú)占模式柳骄,打開文件后只能寫入文件內(nèi)容团赏,如果文件已存在則拋出FileExistsError異常。
  • 'b':二進(jìn)制模式耐薯,打開文件時(shí)以二進(jìn)制方式讀取或?qū)懭胛募?nèi)容舔清。
    文件打開后隘世,可以使用read()write()close()等方法來(lái)讀取鸠踪、寫入和關(guān)閉文件丙者。

讀取文件的基本語(yǔ)法如下:

content = file.read()

其中,file是文件對(duì)象营密,read()方法用于讀取文件內(nèi)容械媒。

寫入文件的基本語(yǔ)法如下:

file.write(content)

其中,file是文件對(duì)象评汰,write()方法用于寫入文件內(nèi)容纷捞。

關(guān)閉文件的基本語(yǔ)法如下:

file.close()

其中,file是文件對(duì)象被去,close()方法用于關(guān)閉文件主儡。

本系列文根據(jù)以下學(xué)習(xí)路線展開講述,由于內(nèi)容較多惨缆,知識(shí)點(diǎn)看不全請(qǐng)打開詳細(xì)版自行查看:從零開始學(xué)python到高級(jí)進(jìn)階路線圖

下章講:從零開始學(xué)python(二)python并發(fā)編程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糜值,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坯墨,更是在濱河造成了極大的恐慌寂汇,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捣染,死亡現(xiàn)場(chǎng)離奇詭異骄瓣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)耍攘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門榕栏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蕾各,你說(shuō)我怎么就攤上這事扒磁。” “怎么了示损?”我有些...
    開封第一講書人閱讀 169,346評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵渗磅,是天一觀的道長(zhǎng)嚷硫。 經(jīng)常有香客問(wèn)我检访,道長(zhǎng),這世上最難降的妖魔是什么仔掸? 我笑而不...
    開封第一講書人閱讀 60,097評(píng)論 1 300
  • 正文 為了忘掉前任脆贵,我火速辦了婚禮,結(jié)果婚禮上起暮,老公的妹妹穿的比我還像新娘卖氨。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,100評(píng)論 6 398
  • 文/花漫 我一把揭開白布筒捺。 她就那樣靜靜地躺著柏腻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪系吭。 梳的紋絲不亂的頭發(fā)上五嫂,一...
    開封第一講書人閱讀 52,696評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音肯尺,去河邊找鬼沃缘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛则吟,可吹牛的內(nèi)容都是我干的槐臀。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼氓仲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼水慨!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起敬扛,我...
    開封第一講書人閱讀 40,108評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤讥巡,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后舔哪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體欢顷,經(jīng)...
    沈念sama閱讀 46,646評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,709評(píng)論 3 342
  • 正文 我和宋清朗相戀三年捉蚤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抬驴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,861評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缆巧,死狀恐怖布持,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陕悬,我是刑警寧澤题暖,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站捉超,受9級(jí)特大地震影響胧卤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拼岳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,196評(píng)論 3 336
  • 文/蒙蒙 一枝誊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惜纸,春花似錦叶撒、人聲如沸绝骚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)压汪。三九已至,卻和暖如春古瓤,著一層夾襖步出監(jiān)牢的瞬間蛾魄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工湿滓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滴须,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,287評(píng)論 3 379
  • 正文 我出身青樓叽奥,卻偏偏與公主長(zhǎng)得像扔水,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朝氓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,860評(píng)論 2 361

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