1.1 Python基礎知識
1.1.1 Python 對象類型
Python中一切都是對象,Python內置對象有:
-
布爾型:True、False;
-
空型:None;
-
數字:12、3+4j(複數,j表示);
-
字符串:'sfc'、" I'm Ethan ";
-
列表: ['a', 1 , ['cd', 235]];
-
元組:(2, -5, 8);
-
字典:{1: 'dd', 'key2': 253, '123': value3};
-
集合:{'a', 'b', 'c'}、set('abc');
-
文件:f = open('data.txt', 'r');
-
編程單元類型:函數(def)、類(class);
1.1.2 Python變量
-
Python中允許多個變量指向同一個值
例如:x =3 y=x 則 id(x) 和 id(y) 指向同一個內存地址,但注意當其中一個變量修改內容後,則其內存地址會變化,指向的是新變量值得內存地址,而不會影響另一個變量的內容和內存地址
-
不能使用內置關鍵字作爲變量名,導入keyword模塊,使用print(keyword.kwlist)可打印出所有的Python關鍵字,如
import keyword
print(keyword.kwlist)
-
通過print(dir(__builtins__))可查看所有內置模塊、類型和函數,如
print(dir(__builtins__))
1.1.3 數字
主要談談Python中的複數表示,
-
例:a = 3+4j,注意用j/J表示虛部
-
a.real ,查看實部
-
a.imag,查看虛部
-
a.conjugate(),返回共軛複數
1.1.4 字符串
-
字符串連接(或合併),例如:a = 'abc' + '123'
-
把其他類型對象格式化成字符串,注意‘%’
##### 實例1
a = 3.6674
print('%7.3f' %a) #輸出:' 3.667'
##### 實例2
print("%d:%c" %(65,65)) #輸出:65:A
-
字符串界定符前面加r或R,表示原始字符串,即特殊字符不會被轉義,但最後一個字符不能是\字符;這種主要用於表示正則表達式、文件路徑、url;
1.1.5 運算符和表達式
-
x/y 除法(真除法),x//y 求整商;
-
x**y 冪運算,
-
x in y ,x not in y 成員測試運算符
-
x is y,x is not y 對象實體同一性測試(地址)
-
@ 矩陣乘法
-
*運算符用於列表、字符串、元組表示對內容進行重複並返回重複後的新對象,如
### 實例1
print('a'*5) #輸出:aaaaa
print([1, 2, 3]*3) #輸出:[1, 2, 3, 1, 2, 3, 1, 2, 3]
print((1, 2, 3)*3) #輸出:(1, 2, 3, 1, 2, 3, 1, 2, 3)
### 實例2
a = [1, 2, 3]
print(id(a), '---', id(a*3))
#輸出:1574886193352 --- 1574886192840 ,說明重複後的列表和原列表存在於不同內存地址,互不影響
-
+運算符用於列表、元組、字符串
print([1, 'a', ['12', 32]] + ['adf', 'dsf']) #輸出:[1, 'a', ['12', 32], 'adf', 'dsf']
print((1, 'a', ('12', 32)) + ('adf', 'dsf')) #輸出:(1, 'a', ('12', 32), 'adf', 'dsf')
print('df' + '12') #輸出:df12
-
‘,’逗號不是運算符,只是分隔符
print('a' in 'b', 'a') #輸出:False a
print('a' in ('b', 'a')) #輸出:True
1.1.6 模塊導入和使用
-
import 模塊名 [ as 別名],以“模塊名.對象名”的方式訪問,如
import math
print(math.sin(0.5))
### 帶別名
import math as math_mod
print(math_mod.sin(0.5))
-
form 模塊名 import 對象名 [ as 別名],以“對象名”的方式訪問,如
from math import sin
print(sin(0.5))
### 帶別名
from math import sin as func
print(func(0.5))
### 導入模塊所有對象
from math import * #不推薦,一旦多個模塊中有同名的對象,這種方式會導致混亂
-
導入模塊時,Python首先在當前目錄中查找需要導入的模塊文件,如找不到,則從sys模塊的path變量指定的目錄中查找,如仍未找到,則提示模塊不存在
import sys
print(type(sys.path)) #輸出:<class 'list'> 說明path變量是存放路徑的列表對象
sys.path.append('d:\\modelPath') #可以通過append()方法向path變量中添加自定義文件夾以擴展搜索路徑
print(sys.path)
1.1.7 Python代碼編寫規範
-
註釋
-
單行用 #
-
多行用 '''...''' 或者 """...""",注意多行註釋中不能與任何代碼同行,即該多行應全爲註釋
-
1.1.8 Python文件名
-
py:Python源文件,由Python解釋器負責解釋執行;
-
pyc(重點):Python字節碼文件,對於Python模塊,第一次被導入時將被編譯成字節碼形式,並在以後再次導入時優先使用pyc文件,以提高模塊的加載和運行速度,對於非模塊文件,執行執行時並不生成.pyc文件,但可以使用py_compile模塊的compile()函數進行編譯以提高加載和運行速度;
1.1.9 Python腳本的__name__屬性
-
每個Python腳本在運行時都有一個__name__屬性,如果腳本作爲模塊被導入,則其__name__屬性的值被自動設置爲模塊名;如果腳本獨立運行,則其__name__屬性值別自動設置爲“__main__”,如
### 腳本獨立運行,在test.py腳本中,只有print(__name__)
print(__name__) #輸出:__main__(自動設置爲“__main__”)
### test.py作爲模塊被其他文件導入
#test.py中:
print(__name__)
#test1.py中:
import test #輸出:test(模塊名)
-
利用__name__屬性可用來控制Python程序的運行方式,具體來說,如果編寫一個包含大量函數的模塊,而不希望該模塊用於直接運行,只允許作爲模塊導入運行,則可做如下處理,
### test.py代碼如下,
if __name__ == '__main__':
print('please use me as a module!')
else:
print('success!')
#運行test.py,則輸出的是第一條信息,
### test1.py代碼如下,
import test
#運行test1.py,則輸出的是第二條信息
1.1.10 編寫自己的包
包可以看作是包含大量Python程序模塊的文件夾。在包的每個目錄中都必須包含一個__init__.py的文件;__init__.py文件的主要用途是設置__all__變量以及執行初始化包所需的代碼,其中__all__變量中定義的對象可以在使用“from ... import * ”時全部被正確導入