Python学习之快速入门
1. 前言
最近玩服務(wù)器,需要服務(wù)器和本地的一個(gè)端口進(jìn)行互交,查了一些資料,發(fā)現(xiàn)用 Python實(shí)現(xiàn)很簡(jiǎn)單,剛好我也想學(xué)學(xué)一些Python語(yǔ)法。我之前編程語(yǔ)言已經(jīng)學(xué)習(xí)了C/C++,Java語(yǔ)言,所以就有這樣一篇由其他語(yǔ)言快速入門Python的博客,本博客主要介紹Python的語(yǔ)法。本博客不太適合小白,適合有一定的編程基礎(chǔ)的童鞋.
學(xué)習(xí)資料主要來自兩處:
菜鳥教程
B站Python教程全套
本文原創(chuàng),創(chuàng)作不易,轉(zhuǎn)載請(qǐng)注明!!!
本文鏈接
個(gè)人博客:https://ronglin.fun/?p=207
PDF鏈接:見博客網(wǎng)站
CSDN: https://blog.csdn.net/RongLin02/article/details/115770356
2. 搭建環(huán)境
2.1. 下載Python
官方網(wǎng)站:https://www.python.org/
我這里直接下載3.9版本的:Windows版Python3.9
篇幅原因,安裝過程不附加圖片,這里簡(jiǎn)單提一下,Add Python 3.9 to PATH選項(xiàng)可以勾一下,把Python添加到系統(tǒng)環(huán)境變量里,可以省很多麻煩.然后為了圖省事,可以直接選擇Install Now,剩下的全部由它自己配置,也可以選擇Customize installation自己配置過程。
查看是否安裝成功,就直接輸入python
會(huì)彈出來一個(gè)版本號(hào),我的是3.9.4,然后進(jìn)入編輯python模式,可以輸入Ctrl+Z或者exit()退出。
如果沒有,可以查看一下是否沒把Python添加入PATH變量中。
2.2. 開發(fā)工具
我這里用PyCharm,這里有一篇比較詳細(xì)的教程:PyCharm 安裝教程(Windows)
當(dāng)然下載完直接下一步就行了,下載有專業(yè)版和社區(qū)版,專業(yè)版付費(fèi)有30天試用,社區(qū)版免費(fèi),我用的社區(qū)版。
然后一步一步ok就行了,其中有一個(gè)64bit(64位系統(tǒng))和添加環(huán)境變量勾上就行了。
然后開始新建一個(gè)項(xiàng)目,需要注意的是第一個(gè)Location的路徑就是project的根路徑。
3. Python基本語(yǔ)法
學(xué)語(yǔ)法是一件比較枯燥的事,但是完事開頭難,熟能生巧!
看下邊的說明之前,先看Python語(yǔ)法的簡(jiǎn)介:Python3 基礎(chǔ)語(yǔ)法
3.1. 輸入與輸出
先來輸出print()函數(shù)
先來兩個(gè)文檔:
print() 函數(shù)
print 函數(shù)用法總結(jié)
簡(jiǎn)單的說明,Python打印命令為print,一條指令的結(jié)尾不需要分號(hào),所以一條簡(jiǎn)單的輸出語(yǔ)句
就輸出了一條Hello World且?guī)в袚Q行,再來看文檔中的用法
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)objects – 復(fù)數(shù),表示可以一次輸出多個(gè)對(duì)象。輸出多個(gè)對(duì)象時(shí),需要用 , 分隔。
sep – 用來間隔多個(gè)對(duì)象,默認(rèn)值是一個(gè)空格。
end – 用來設(shè)定以什么結(jié)尾。默認(rèn)值是換行符 \n,我們可以換成其他字符串。
file – 要寫入的文件對(duì)象。
flush – 輸出是否被緩存通常決定于 file,但如果 flush 關(guān)鍵字參數(shù)為 True,流會(huì)被強(qiáng)制刷新。
eg:
print('Ronglin','is','handsome',sep='&', end='\t') print('print','test')效果:
Ronglin&is&handsome print test文件輸出也很簡(jiǎn)單,格式如下:
# 'a' open for writing, appending to the end of the file if it exists # '+' open for updating (reading and writing) fp = open('./test.txt','a+') print('ronglin','is','handsome',file=fp) fp.close();用一個(gè)“文件指針”指向一個(gè)文件,然后作為參數(shù)傳入到print中即可,有關(guān)文件的操作,API中有很詳細(xì)的說明
然后是輸入函數(shù)input()
輸入函數(shù)很簡(jiǎn)單,用法就是 a = input('輸入一個(gè)信息')括號(hào)里的字符串就是提示信息,input函數(shù)將用戶的輸入作為一個(gè)字符串返回,所以要想輸出整數(shù),一般可以用強(qiáng)制類型轉(zhuǎn)化例如a =int(input('輸入一個(gè)整數(shù)')).
3.2. 數(shù)據(jù)類型
Python 是強(qiáng)類型的動(dòng)態(tài)腳本語(yǔ)言,對(duì)于我是C語(yǔ)言入門來說,轉(zhuǎn)入Python就好理解多了。
詳細(xì)說明:Python3 變量類型
Python 不同于C,不需要類型聲明。可以直接拿來用。而且每一個(gè)變量名有點(diǎn)類似于指針,變量名是一個(gè)引用,實(shí)際的數(shù)據(jù)在堆內(nèi)存中,變量名就存儲(chǔ)一個(gè)id號(hào),而每一個(gè)數(shù)據(jù)塊有3部分,id,type,value,分別是id號(hào),數(shù)據(jù)類型和值。
Python有幾個(gè)常用的數(shù)據(jù)類型:Numbers(數(shù)字)String(字符串)List(列表)Tuple(元組)Dictionary(字典)Set(集合)
3.2.1. Numbers
整型,就是一個(gè)整數(shù)
print('十進(jìn)制',123) print('二進(jìn)制',0b1110) print('八進(jìn)制',0o123) print('十六進(jìn)制',0x123)輸出
十進(jìn)制 123 二進(jìn)制 14 八進(jìn)制 83 十六進(jìn)制 291浮點(diǎn)型,就是小數(shù),對(duì)應(yīng)C里的float和double,浮點(diǎn)數(shù)的精度問題和C一樣
可以導(dǎo)入一個(gè)包來處理浮點(diǎn)型
布爾類型
和C++一樣,有true和false兩值,而且也可以作為數(shù)值加減,這和Java是不一樣的。
而且有一個(gè)內(nèi)置函數(shù)bool(),可判斷對(duì)象的布爾值。
以下對(duì)象的布爾值為False:
False,數(shù)值0,None,空字符串,空列表,空元組,空字典,空集合。
數(shù)據(jù)類型可以通過強(qiáng)制類型轉(zhuǎn)化函數(shù)相互轉(zhuǎn)化
3.2.2. String
String的定義有3種,有單引號(hào),雙引號(hào),三引號(hào),C/C++和Java都是雙引號(hào),python都可,不過三引號(hào)可以多行存儲(chǔ),單雙引號(hào)只能單行,所以三引號(hào)也可用作多行注釋。
s = "a1a2···an" # n>=0從左到右索引默認(rèn)0開始的,最大范圍是字符串長(zhǎng)度少1,從右到左索引默認(rèn)-1開始的,最大范圍是字符串開頭。和C不同,數(shù)組下標(biāo)可以賦值雙值,例如
s = '0123456789' print(s[2:6])輸出2345。
加號(hào)(+)是字符串連接運(yùn)算符,星號(hào)( * )是重復(fù)操作。
不同于Java和C++,Python中,可以用 * 號(hào),比如,str = str * 2 和 str = str+str是一樣的。
3.2.3. 列表
對(duì)比C/C++,Java中的數(shù)組。列表用 [ ] 標(biāo)識(shí)。
一個(gè)列表中的元素的數(shù)據(jù)類型可以不同。
列表中值的切割也可以用到變量 [頭下標(biāo):尾下標(biāo)] ,就可以截取相應(yīng)的列表,從左到右索引默認(rèn) 0 開始,從右到左索引默認(rèn) -1 開始,下標(biāo)可以為空表示取到頭或尾。
列表的創(chuàng)建有2種方式,一個(gè)是[],一個(gè)是內(nèi)置函數(shù)list()。
運(yùn)行結(jié)果:
['666', 12, 'python'] ['777', 100, 'Python']同時(shí),列表元素是有序的,索引映射唯一的數(shù)據(jù),可以動(dòng)態(tài)分配和回收內(nèi)存。
有一些常見的方法:
索引:比如list_01.index(‘666’),就會(huì)返回’666’在列表的索引,如果不存在返回一個(gè)ValueError,如果有多個(gè),返回第一個(gè)。
然后就是最常用的list_01[1],直接獲取索引為1的值,同時(shí)因?yàn)閜ython是支持負(fù)數(shù)索引的,從右到左,索引從-1到-n。
切片:獲取列表中多個(gè)元素,語(yǔ)法如下:
切片的結(jié)果是原列表的拷貝,范圍是[start,stop),step默認(rèn)為1,同時(shí)也都支持負(fù)索引。
in/not in:可以判斷一個(gè)元素是否在list中,比如’666’ in list_01。而且in還可用于遍歷,語(yǔ)法格式:for 臨時(shí)變量 in 列表名,這個(gè)臨時(shí)變量就會(huì)把列表中的變量依次取出來。
列表生成式,語(yǔ)法格式[i*i for i in range(1,10)]生成就是 1,4,9…81這樣的列表
3.2.4. 元組
元組是另一個(gè)數(shù)據(jù)類型,類似于 List(列表)。
元組用 () 標(biāo)識(shí)。內(nèi)部元素用逗號(hào)隔開。但是元組不能二次賦值,相當(dāng)于只讀列表。
創(chuàng)建方式兩種
輸出結(jié)果
('666', 256, 'hehe') ('777', 123, 'hello')注意事項(xiàng),單個(gè)元素的元組創(chuàng)建方式(123,)一定要加逗號(hào)。元組是一個(gè)不可變對(duì)象
3.2.5. 字典
字典很像C++和Java中的map,是一個(gè)映射關(guān)系的鍵值對(duì),一個(gè)key對(duì)應(yīng)一個(gè)value。字典無序序列,可變序列。
創(chuàng)建方式兩種
輸出結(jié)果:
{'周一': 1, '周三': 3} {'周一': 1}常用方法:
字典元素的獲取:1.dic[‘周一’],2.dic.get(‘周一’),兩個(gè)有些區(qū)別,用[]如果key不存在,則報(bào)錯(cuò),get則返回None;
key的判斷:in / not in 這個(gè)和list的用法一樣的 key in dict 返回true或者false;
視圖操作:
keys(),獲取字典中的所有key,返回值類型為dict_keys可以作為list()函數(shù)的參數(shù)生成一個(gè)list;
values(),獲取字典中的所有value,返回值dict_values;
items(),返回所有鍵值對(duì),數(shù)據(jù)類型為元組。
遍歷方式,for i in dict i的值是dict中的keys的遍歷。
字典生成式,格式如下
a=[1,2,3] b=[4,5,6] dic = {a:b for a,b in zip(a,b)}輸出結(jié)果
{1: 4, 2: 5, 3: 6}
3.2.6. 集合
集合就是C++和Java中的set,是一個(gè)可變序列,相當(dāng)于Python中的字典中的key,是一個(gè)可變序列
創(chuàng)建方式
輸出結(jié)果:
{1, 2, 3, 4} {2, 3, 5}很多方法和前邊一樣
就簡(jiǎn)單的說一下,集合生成式
s = {i*i for i in range(1,10)}
和列表的差不多,中括號(hào)改成大括號(hào),就行了,需要注意集合是無序的。
3.3. 基本語(yǔ)句
先注意一個(gè)問題,Python語(yǔ)句不像C Java,語(yǔ)句與語(yǔ)句之間可以用大括號(hào)連接,Python語(yǔ)句甚至沒有分號(hào),所以Python中的上下級(jí)關(guān)系有嚴(yán)格的格式對(duì)齊!
3.3.1. 運(yùn)算符
很多運(yùn)算符號(hào)和C類似,但是有的地方也有不同。這里是Python3.9的規(guī)則
參考資料:Python3 運(yùn)算符
算術(shù)運(yùn)算符 : ‘+’ ‘-’ * / % ’ ** ‘//’
加 減 乘 和C的一樣,/區(qū)別很大,返回值是一個(gè)浮點(diǎn)數(shù),例如 11/2結(jié)果就是5.5,而//和C中的/是一樣的,整除符號(hào); 兩個(gè)乘號(hào)的是是冪運(yùn)算,%取模。
比較運(yùn)算符: ‘==’ ‘!=’ ‘>’ ‘<’ ‘>=’ ‘<=’
和C語(yǔ)言一樣,注意這里都是value的判斷,如果想比較id,用is/not is
賦值運(yùn)算符:’=’ ‘+=’ ‘-=’ ‘=’ ‘/=’ ‘//=’ ‘%=’ ’ *=’
和C一樣,就是算術(shù)運(yùn)算符號(hào) 加=
位運(yùn)算符 : & | ^ ~ ‘<<’ ‘>>’
和C一樣
邏輯運(yùn)算符: ‘a(chǎn)nd’ ‘or’ ‘not’
and相當(dāng)于c的’&&’ or是’||’ not就是’!’
優(yōu)先級(jí),資料來自菜鳥教程,Python3.0+
3.3.2. 分支結(jié)構(gòu)
參考內(nèi)容:Python3 條件控制
語(yǔ)法結(jié)構(gòu)
和C在形式上類似,但是需要注意的是,python沒有大括號(hào),所以對(duì)齊格式作為執(zhí)行體的標(biāo)準(zhǔn).
由于 python 并不支持 switch 語(yǔ)句,所以多個(gè)條件判斷,只能用 elif 來實(shí)現(xiàn),如果判斷需要多個(gè)條件需同時(shí)判斷時(shí),可以使用 or (或),表示兩個(gè)條件有一個(gè)成立時(shí)判斷條件成功;使用 and (與)時(shí),表示只有兩個(gè)條件同時(shí)成立的情況下,判斷條件才成功。
條件表達(dá)式:X if 條件表達(dá)式 else y 這個(gè)像C中的三目運(yùn)算符,符合條件就返回x,不符合就返回y
pass語(yǔ)句,pass語(yǔ)句什么都不做,就是一個(gè)占位符號(hào),為了方便先搭建語(yǔ)法結(jié)構(gòu)
3.3.3. 循環(huán)結(jié)構(gòu)
參考內(nèi)容:Python3 循環(huán)結(jié)構(gòu)
先介紹一個(gè)函數(shù):range()
用于生成一個(gè)整數(shù)序列,range(start,stop,step) start和step可以省略.默認(rèn)step=1,start=0;生成的序列是一個(gè)[start,stop)整數(shù)序列
第一個(gè)循環(huán)結(jié)構(gòu)while
while 條件表達(dá)式:循環(huán)體和C在形式上類似.但是while其實(shí)還可以帶上一個(gè)else,在 python 中,while … else 在循環(huán)條件為 false 時(shí)執(zhí)行 else 語(yǔ)句塊.
第二個(gè)循環(huán)結(jié)構(gòu)for_in
for和C的區(qū)別很大,格式為
item就是臨時(shí)變量,一般來說for可以這樣用
for i in range(start,stop,step)如果用C寫for(int i=start;i<stop;i+=step)和上句中是等效的
for_in也可以用else,條件為false的時(shí)候就執(zhí)行else中的語(yǔ)句
循環(huán)控制 break continue
效果和C一樣,只能跳出來當(dāng)前循環(huán)
3.3.4. 函數(shù)
參考內(nèi)容:Python3 函數(shù)
函數(shù),創(chuàng)建格式:
函數(shù)的用法和 C語(yǔ)言類似,但是也有不同,比如一個(gè)函數(shù)calcu(x,y),如果調(diào)用它的時(shí)候,這樣傳參數(shù),calcu(y=10,x=5),那就會(huì)把10賦給y,x付給5,它會(huì)先找名稱對(duì)應(yīng)的變量名,優(yōu)先賦值。這是關(guān)鍵字參數(shù)。
如果傳參數(shù),傳入的是不可變對(duì)象,傳入的參數(shù)不會(huì)改變,如果是可變參數(shù),在函數(shù)中修改,會(huì)修改實(shí)參數(shù)。
return是可以返回多個(gè)參數(shù)的,多個(gè)返回值會(huì)作為一個(gè)元組,整體返回
同時(shí)如果當(dāng)不確定要傳入幾個(gè)參數(shù)的時(shí)候,可以設(shè)置 def func(*arg)使用星號(hào)定義個(gè)數(shù)可變的位置形參,結(jié)果是一個(gè)元組,如果使用 def func(**arg) 定義個(gè)數(shù)可變的關(guān)鍵字形參,結(jié)果就是一個(gè)字典,案例代碼:
def func01(*arg):print(arg, type(arg))returndef func02(**arg):print(arg, type(arg))returnfunc01(10, 30, 50) func02(a=60, b=70, c=80)輸出結(jié)果:
(10, 30, 50) <class 'tuple'> {'a': 60, 'b': 70, 'c': 80} <class 'dict'>小技巧
1.當(dāng)一個(gè)函數(shù)定義為calc(x,y,z)時(shí),這時(shí)有一個(gè)list1=[10,20,30],想把list1中的三個(gè)元素,按順序賦值為xyz,這時(shí)調(diào)用的時(shí)候可以用calcu(*list1).
同樣,如果是字典用關(guān)鍵字參數(shù),calc(x,y,z),有一個(gè)字典,dic={'a':100,'b':200,'c':300},調(diào)用的時(shí)候就可以用calc(**dic)
2.在函數(shù)定義的時(shí)候,可以給形式參數(shù)設(shè)置初始值,比如calc(x,y=10),這樣如果調(diào)用的時(shí)候只傳入了一個(gè)參數(shù),那x為參入?yún)?shù),y為默認(rèn)參數(shù),如果傳入了2個(gè)參數(shù),那么xy分別賦值為傳入的實(shí)參
3.當(dāng)想要設(shè)置,前兩個(gè)參數(shù)為位置參數(shù),后兩個(gè)參數(shù)為關(guān)鍵字參數(shù)的話,可以加一個(gè)#號(hào),例如:calc(a,b,*,x,y)這樣的話,調(diào)用的時(shí)候只能calc(10,20,x=30,y=40)這樣調(diào)用,*后邊的參數(shù)必須要用關(guān)鍵字參數(shù)傳參.
總結(jié)案例,一個(gè)較為復(fù)雜的參數(shù)表:calc(a, b=20, *arg, **arg2)
變量的作用范圍:
局部變量,在函數(shù)內(nèi)定義并且使用的變量,只在函數(shù)體內(nèi)部有效,如果局部變量使用 global 聲明,這個(gè)變量就變成全局變量
全局變量,函數(shù)體外定義的變量,函數(shù)體內(nèi)外都可以調(diào)用
3.4. 異常
異常這個(gè)概念在Java中很常見,在Java中就是try catch語(yǔ)句,而在Python中也有相關(guān)的語(yǔ)句.
相關(guān)參考資料:Python3 錯(cuò)誤和異常
3.4.1. try–except結(jié)構(gòu)
格式如下:
try:語(yǔ)句1語(yǔ)句2 except 異常類型:處理異常語(yǔ)句1處理異常語(yǔ)句2用法和Java的差不多,finally的可加可不加,測(cè)試案例:
try:n1 = int(input('輸入整數(shù)1\n'))n2 = int(input('輸入整數(shù)2\n'))print(n1/n2) except ZeroDivisionError:print('除數(shù)為0了')print('程序結(jié)束')輸出結(jié)果:
輸入整數(shù)1 10 輸入整數(shù)2 0 除數(shù)為0了 程序結(jié)束當(dāng)然,也可以except多個(gè)異常.而且還可以用traceback模塊輸出,使用方法一般是
import traceback try:n1 = int(input('輸入整數(shù)1\n'))n2 = int(input('輸入整數(shù)2\n'))print(n1/n2) except ZeroDivisionError:traceback.print_exc();print('程序結(jié)束')和Java類似.
3.4.2. try–except的其他結(jié)構(gòu)
1.try–except–else
結(jié)構(gòu)和try except類似,不過在最后可以加一個(gè)else,表示如果沒有異常就執(zhí)行else中的代碼
2.try–except–else–finally
finally中的代碼,不論是否產(chǎn)生異常,都會(huì)執(zhí)行一遍
總結(jié)
至此,一些基礎(chǔ)語(yǔ)法就看完了,時(shí)間倉(cāng)促,水平有限,望賜教,下一篇有關(guān)Python的博客是Python之面向?qū)ο蟮膶W(xué)習(xí),同樣是對(duì)比C++ Java,快速熟悉python語(yǔ)法.
=w=
總結(jié)
以上是生活随笔為你收集整理的Python学习之快速入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何系统地自学python100天_如何
- 下一篇: python怎么筛选excel数据_【I