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