前言
隨著互聯(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ǔ)句包括if
、elif
和else
锦聊。它們用于根據(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ǔ)句包括for
和while
苟跪。它們用于重復(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ǔ)句巍糯,如break
、continue
和pass
客扎。
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ù)x
和y
燎孟,并返回它們的和禽作。我們將函數(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ù)x
和y
离唬。它將調(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è)屬性(name
和age
)和一個(gè)方法(say_hello
)。我們使用__init__
方法來(lái)初始化對(duì)象的屬性三妈,使用self關(guān)鍵字來(lái)引用對(duì)象本身畜埋。我們還定義了一個(gè)say_hello
方法,它打印出對(duì)象的屬性畴蒲。
我們創(chuàng)建了一個(gè)名為person1
的Person
對(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_name
和set_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ā)編程