對于python這塊有任何不懂的問題可以隨時來問我,我對于學習方法,系統學習規劃,還有學習效率這些知道一些,希望可以幫助大家少走彎路。當然也會送給大家一份系統性的python資料,文末附有資料鏈接
以下本文全是干貨
1 Python簡介
1.1 Python的特點
Python是Guido Van Rossum在1989年開發的一種腳本解釋語言,是ABC語言的一種繼承。由于作者是Monty Python喜劇團的一名愛好者,故將其命名為Python(蟒蛇)
Python作為當下一種熱門語言,具有以下特點:
語法清晰,代碼友好,易讀。
應用廣泛,具有大量的第三方庫(尤其是機器學習、人工智能相關庫)支持。
Python可移植性強,易于操作各種存儲數據的文本文件和數據庫。
Python是一種面向對象語言,支持開源思想。
根據Tiobe編程語言最新排行榜(部分),其中Python排名第三,并且隨著大數據、數據分析、深度學習、人工智能的迅速發展,Python收到的關注程度越來越高。
1.2 安裝及第三方庫導入過程
利用Python編程之前,首先需要安裝Python軟件:包括搭建Python環境、學會安裝Python第三方庫等。
搭建好Python環境之后是這個樣子的(同時可以打印輸出進行進一步的測試)。
當編寫大段代碼或自定義函數時,在command命令行中編寫是不太現實的,因此可以進一步選擇合適的編譯器進行編譯,我在這里用的是JetBrainsPyCharm2018.1.2 x64,下面提供一個百度云盤地址。
百度云盤地址:https://pan.baidu.com/s/1zunmfSfHVDF9VP1qVDQ8Gg
提取碼:4558
2 基本語法
2.1 縮進與注釋
1 縮進
不同于其他語言,Python 是通過縮進來標明代碼的層次關系的。其中,1個縮進等于4個空格,它是 Python 語言中標明程序框架的唯一手段。前面提到的的 PyCharm 提供了快捷鍵 Tab 用于快速縮進,Shift + Tab用于返回縮進的上一部操作。
2 注釋
注釋是用于說明代碼信息的,注釋代碼不執行。Python 注釋主要包括兩種:
行注釋:采用“#”開頭進行單行注釋,如:“# 這里是單行注釋”。
塊注釋:即多行注釋,常用“ ''' ”或“ """ ”開頭和結尾。''' 這里是多行注釋 …… 這里是多行注釋 '''
這里需要注意的是:
① python 中“ ”與‘ ’在表示字符串時是沒有區別的。 在輸出時,輸出內容有“ ”(雙引號)則在單引號內使用雙引號,即‘ “要輸出內容” ’。輸出內容有‘ ’(單引號)則在雙引號內使用單引號,即“ ‘要輸出內容‘ “。
②''' ''' (三引號)用法 1、用作多行注釋;2、用作表示一個字符串; ★python中并沒有提供專門的多行注釋的符號,當一串字符被三引號引用時,但它不作為字符串被操作時,這個三引號內引用的內容就被視為注釋。
2.2 常量與變量
1 常量
常量是指程序中值不發生改變的元素,一旦初始化后就不能對其進行修改的固定值,它是內存中用來保存固定值的單元。
事實上,Python并未提供如C/C++/Java一樣的const修飾符,換言之,python中沒有常量,python程序一般通過約定俗成的變量名全大寫的形式表示這是一個常量。然而這種方式并沒有真正實現常量,其對應的值仍然可以被改變。后來,python提供了新的方法實現常量:即通過自定義類實現常量。這要求符合命名全部為大寫和值一旦被綁定便不可再修改這兩個條件。
下面給出一個例子(.py文件),該文件定義了一個方法__setattr(),和一個異常ConstError, ConstError類繼承類TypeError。通過調用類自帶的字典__dict, 判斷定義的常量是否包含在字典中。如果字典中包含此變量,將拋出異常,否則,給新創建的常量賦值。最后兩行代碼的作用是把const類注冊到sys.modules這個全局字典中。
class _const:
class ConstError(TypeError): pass
def __setattr__(self, name, value):
if name in self.__dict__:
raise self.ConstError("Can't rebind const (%s)" % name)
self.__dict__[name] = value
import sys
sys.modules[__name__] = _const()
如果上面對應的模塊名為const,使用的時候只要 import const,便可以直接定義常量了。
import const
const.PI=3.14
print(const.PI)
我們運行test.py,就可打印出常量的值,如果再次修改const.PI=4.13,則會拋出const.constError異常。
python常量:內存中用于保存固定值的單元、在程序中、常量的值不能發生改變的。
python常量命名規范:通常是以大寫字母開頭進行區分-Chy常量 chy變量。
python常量的賦值:數字 字符串 布爾值 空值。
python常量舉例:Aa=123、Ab='chy'、Ac=True和False、Ad=' '。
2 變量
python變量:占用內存中一塊空間、用來存放變量的值(或地址)、存放的值是可以發生改變的。
python變量命名規范:變量名是由大小寫字符、數字和下劃線()組合而成的;第一個字符必須是字母或下劃線開始()不可用數字開頭,不要用中文開頭;Python中的變量是區分大小寫的;在賦值時單引號、雙引號的效果是一樣的。
注意:Python中已經被使用的一些關鍵詞不能用于聲明變量,如下圖所示。
2.3 輸入與輸出
1 輸入
Python的輸入函數主要是:input()
str1 = input('input:')
print(str1)
結果如下:
再來看一個例子:
number = input('input:')
print(number)
結果如下:
2 輸出
Python的輸入函數主要是:print()
print(3)
結果如下:
再來看一個例子:
print('Hello World!')
結果如下:
同時,Python 還支持格式化輸出數據,這是調用format()函數來實現。
# 輸出6位數值的浮點數,小數點后精確到2位
print(format(12.3456, '6.2f'))
結果如下:
2.4 賦值與表達式
1 賦值
Python中賦值語句是使用等號(=)直接給變量賦值,如a=10,如果需要同時給多個變量進行賦值,則表達式如下。
a, b, c = 10, 20, (10+20)/2
print(a, b, c)
# 先運算右側3個表達式,然后同時將表達式結果賦給左側變量
結果如下 :
2 表達式
表達式是程序中產生或計算新數據值的一行代碼,通常由變量、常量或操作符號產生,賦值表達式如 a = 10。
3 數據類型
3.1 數字類型
Python中常見的數字類型包括整數類型、浮點數類型、復數類型。
整數類型:對應數學中的整數,其返回值類型為int型,如10, 25等。
浮點數類型:帶有小數點的數字,其返回類型為float型,如3.14, 2.1e2等。
復數類型:Python復數分為兩部分,例如a+bj,其中a是實部,b是虛部,其返回類型為complex。其中,復數可通過.real獲得實部數據,通過.imag獲得虛部數據。
z = -12.3 + 8j
print('復數:', z, '類型:', type(z))
print('實部:', z.real)
print('虛部:', z.imag)
結果如下:
注:Python中的數字類型是可以相互轉換的。
浮點數轉整數:int()
整數轉小數:float()
浮點數轉復數:complex()
3.2 字符串類型
在Python中,字符串類型是指需要用單引號或雙引號括起來的一個字符或字符串。
字符串表示一個字符的序列,其最左端表示字符串的起始位置,下標為0,然后依次遞增。
# 字符串格式化輸出需要引入百分號(%)實現
print('My name is %s' % ('ZZR'))
結果如下:
再來看字符串類型的一些其他用法。
str1 = 'abcdefg'
str2 = 'Hello World!'
str3 = '1+2+3'
str4 = ' I love Python '
str5 = ['Thank', 'you']
# 字符串求長度
print(len(str1))
# 字符串切片
print(str1[3:6])
# 字符串反向切片
print(str1[-1:-4:-1])
# 字符串查找子字符串,若未找到返回-1
print(str1.find('def'))
print(str1.find('opq'))
# 字符串分割成序列,亦可設置分隔符
print(str2.split())
print(str3.split('+'))
# strip()函數用于去除開頭結尾空格,lstrip()函數去除左側空格,rstrip()函數去除右側空格
print(str4.strip())
print(str4.lstrip())
print(str4.rstrip())
# join()函數用于拼接字符串
sep = " " # 采用空格拼接
print(sep.join(str5))
結果如下:
3.3 列表類型
在Python中,列表是一個非常重要的數據類型,它是中括號[ ]中用逗號分隔的元素集合。
list = [1, 2, 'a', 'Python']
print(list)
print(list[3])
print(type(list))
結果如下:
列表中也可以用加號(+)拼接,用乘號(*)重復顯示,也可以進行切片等操作。
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7]
print(list1 + list2)
print(list2 * 3)
print(list1[1:3])
結果如下:
下表列舉了一些列表中的常用方法,假設有列表list1 = [4, 2, 1, 5, 3]。
3.4 元組類型
元組是與列表類似的一種數據類型,它采用括號定義一個或多個元素的集合,其返回類型為tuple。
tuple1 = (1, 2, 'Python')
print(tuple1)
print(type(tuple1))
print(tuple1[2])
結果如下:
注:當元組定義后就不能進行更改,也不能刪除,這不同于列表,由于其有不變性,因為它的代碼更加安全。
3.5 字典類型
在Python中,字典是針對非序列集合提供的,由鍵值對<Key> <Value>組成,其類型是dict。
鍵是字典的索引,一個鍵對應一個值,通過鍵值可查找字典中的信息,這個過程叫做映射。
dict = {"1":"Python", "2":"Java", "3":"C++"}
print(dict)
print(dict["2"])
結果如下:
字典與列表主要存在以下幾點不同:
列表中的元素是順序排列的,字典中的數據時無序排列的。
映射方式不同,列表通過地址映射到值,字典通過鍵值對映射到值。
列表只能通過數字下表或索引進行訪問,字典可以用各種對象類型作為鍵進行訪問。
4 條件語句
4.1 單分支
if <condition>:
<statement>
<statement>
判斷為真就執行語句,如果為假就跳過語句,執行下一條語句。
i =1
if i == 1:
print(True)
結果如下:
4.2 二分支
if <condition>:
<statement>
<statement>
else:
<statement>
<statement>
如果條件語句為真,執行if語句塊,如果為假,執行else語句塊。
i = 2
if i == 1:
print(True)
else:
print(False)
結果如下:
4.3 多分支
if多分支由 if-elif-else 組成,其中 elif 相當于 else if。
if <condition1>:
<case1 statements>
elif <condition2>:
<case2 statements>
elif<condition3>:
<case3 statements>
……
else:
<defult statements>
演示如下:
course = 88
if course >= 90:
print('A')
elif course >= 80:
print('B')
elif course >= 70:
print('C')
elif course >= 60:
print('D')
else:
print('No Pass!')
結果如下:
5 循環語句
5.1 While循環
while <condition>:
<statement>
else:
<statement>
如果條件表達式為真,則重復執行循環體,直到條件判斷為假,循環體終止;如果第一次判斷條件就為假,則直接跳出訓話執行else中的語句(注意else語句可以省略)。
① 第一個案例
i = 1
s = 0
while i <= 100:
s = s + i
i = i + 1
else:
print('over')
print('sum=', s)
結果如下:
② 第二個案例
# 本例中代碼是調用webbrowser庫中的open_new_tab函數打開百度網頁5次
# 本段代碼可用于循環增加刷閱讀量等
import webbrowser as web
import time
import os
i = 0
while i<5:
web.open_new_tab('http://www.baidu.com')
i = i + 1
time.sleep(0.8)
else:
# /F 表示強行終止程序;/IM 表示圖像
os.system('taskkill /F /IM iexplore.exe')
print('close IE')
結果如下:
5.2 for循環
for <var> in <sequence>:
<statement>
<statement>
自定義循環變量var遍歷sequence序列中的每一個值,每個值都執行一次循環的語句塊。sequence表示序列,常見類型有list(列表)、tuple(元組)、strings(字符串)、files(文件)。
# 輸出星號三角形
for i in range(10):
print('*' * i)
結果如下:
5.3 break和continue語句
break和continue語句是兩個常用的跳出循環的語句。
1 break語句
break語句跳出整個循環。
# 當求和變量s大于100時,進入if判斷語句,執行break語句跳出循環,最后輸出和
s = 0
num = 0
while num < 20:
num += 1
s += num
if s> 100:
break
print('The sum is', s)
結果如下:
2 continue語句
continue跳出本次循環,下一次繼續判斷執行。
# 當為偶數時continue跳出當前循環,所以for循環中只輸出偶數
for num in range(10):
if num % 2 == 0:
print('even number', num)
continue
print('odd number', num)
結果如下:
6 函數
當我們要完成特定功能的語句塊時,就需要調用函數來完成相應的功能。
6.1 自定義函數
為了簡化編程,提高代碼的復用性,可以自定義函數。
def funtion_name([para1, para2,……, paraN]):
statement1
statement2
…
[return value1, value2, ……, valueN]
函數調用時,新參被賦予真實的參數,然后執行函數體,并在函數結束調用時返回結果。return語句表示退出函數并返回到函數被調用的地方,返回值傳遞給調用程序。
def fun(a, b):
print(a, b)
c = a + b
print('sum:', c)
fun(3, 4)
結果如下:
再來看下一個例子:
def fun(a, b, c=10):
print(a, b)
sum = a + b + c
print('sum:', sum)
fun(3, 4)
fun(3, 4, 5)
結果如下:
6.2 常見內部庫函數
Python系統內部提供了一些庫函數供大家使用,常用的有:str字符串庫函數、math數學庫函數、os操作系統庫函數、socket網絡套接字庫函數。
6.3第三方庫函數
Python作為一門開源語言,他支持各種第三方提供的開源庫供用戶使用。
常用格式:module_name.method(parametes)表示第三方庫函數名.方法(參數)使用第三方庫之前需要安裝,如果沒有安裝就會報錯。
7 文件操作
文件是指存儲在外部介質上數據的集合,文本文件的編碼方式包括ASCII碼格式、Unicode碼、UTF-8碼和GBK碼等。
文件操作流程為打開文件——>讀/寫文件——>關閉文件。
7.1 打開文件
打開文件是通過調用 open() 函數實現的,函數原型如下:
<variable> = open(<name>, <mode>)
其中,<name>表示打開文件名稱;<mode>表示文件打開模式,參數有r(只讀)、w(只寫)、a(最佳末尾)、rb(只讀二進制文件)、wb(只寫二進制文件)、ab(附加到二進制文件末尾)、w+(追加寫文件),返回結果為一個文件對象。
infile = open('test.txt', 'r')
7.2 讀/寫文件
讀文件常用方法:
read()的返回值為包含整個文件內容的一個字符串。
readline()的返回值為文件內容的下一行內容的字符串。
reallines()的返回值是整個文件內容的列表,列表中的每一項都為一行字符串。
寫文件常用方法:
write()用于把含有文本數據或二進制數據集的字符串寫入文件中。
writelines()針對列表操作,接收一個字符串列表參數,并寫入文件。
7.3 關閉文件
文件讀/寫結束后,一定要記住使用close()方法關閉文件。為了安全起見,常用try-except-finally異常捕獲語句,并在finally子句中關閉文件。
try:
# 文件操作
except:
# 異常處理
finally:
file.close()
7.4 循環遍歷文件
在數據爬取或數據分析中,常常會用到文件遍歷(常常采用for循環遍歷文件內容)。
#!/usr/bin/env python
fd = open('F:/test1.txt', 'r', encoding='UTF-8')
for line in fd:
print(line)
fd.close()
結果如下:
8 面向對象
不同于面向過程編程,面向對象編程需要使用“類”和“對象”來實現,將函數進行封裝,是更接近真實生活的一種編程方式。
面向對象的3個基本特征:
封裝:把客觀事物封裝成抽象的類,類中的數據和方法讓類或對象進行操作;
繼承:子類繼承父類后,可以使用父類的所有功能,而無需重新編寫原有的類,并且可以對功能進行擴展;
多態:類中定義的屬性或行為被特殊類繼承后,可以具有不同的數據類型或表現不同的行為。各個類能表現不同的語義,其實現的方法有兩種,分別為覆蓋和重載。
在Python中類就是一個模板,模板里可以包含多個函數,函數可實現一些功能,對象則是根據模板創建的實例,通過實例對象可以執行類中的函數。
class Rect:
def __init__(self, length, width):
self.length = length
self.width = width
def detail(self):
print(self.length, self.width)
def showArea(self):
area = self.length * self.width
return area
def showCir(self):
cir = (self.length + self.width) * 2
return cir
rect = Rect(4, 5)
rect.detail()
area = rect.showArea()
cir = rect.showCir()
print('面積:', area)
print('周長:', cir)
結果如下:
未完,待續......
https://shimo.im/docs/QvG8JqxGKvcrXQhH/ 《python小白基礎學習資料》,可復制鏈接后用石墨文檔 App 或小程序打開