python函数五要素_Python---基本掌握要素(《Python编程从入门到实践》)
這里主要是常見的元素,主要是為了方便查找。所以舉的例子都是一些最簡單的形式,重在舉一反三。希望對大家有用。
-------------------------------基礎(chǔ)篇--------------------------------------------------------
1.列表
1)創(chuàng)建列表。列表里面可以存放任何元素,元素之間沒有關(guān)系。用[ ]號表示列表。
bycyles=['trek','connondale']
print(bycycles)
2)訪問列表元素。通過指定索引即可查找相應(yīng)的元素。下表從0開始。
print(bycycles[0])
小技巧:訪問最后一個元素使用-1索引,即 bycycles[-1],其他類推,-2 為倒數(shù)第二個元素。
3)修改列表元素。指定索引即可修改響應(yīng)元素。
bycycles[0]='mobile'
4)添加列表元素。在末尾添加用append函數(shù);在指定位置插入元素,使用insert函數(shù),通過指定索引
bycycles.append('bike')
bycycles.insert(0,'car')#即第一個元素變?yōu)閏ar
5)刪除元素。使用del函數(shù),指定刪除元素的索引。如果你想在刪除后,知道刪除元素的值,則使用pop函數(shù),如果不加參數(shù),則是刪除列表中的最后一個元素,也可指定索引值刪除指定位置的元素,并返回元素的信息。如果你不確定刪除元素的索引,只知道刪除元素的值,則使用remove函數(shù)
注意:remove只會刪除第一個出現(xiàn)該值的元素,如果想刪除所有的值,則用循環(huán)語句。
bycycles.del(0)
var last = bycycles.pop()#刪除最后一輛車的名稱,并返回刪除元素的值
var first = bycycles.pop(0)
bycycles.remove('bike')
6)對列表永久性排序,即不能返回排序前的順序。使用sort函數(shù)。如果按照字母從小到大,則可以不傳參數(shù),如果想要從大到小,則傳入?yún)?shù)reverse=True;如果不想永久性,而想要臨時(shí)性,則可以使用sorted函數(shù),用法和sort一樣,但是原始列表的順序未變。
bycycles.sort()
bycycles.sort(reverse=True)
bycycles.sorted()
bycycles.sorted(reverse=True)
7)反轉(zhuǎn)列表元素。使用reverse函數(shù)即可。該函數(shù)也是永久性,但是只要reverse一下,又可以恢復(fù)原樣呀!
bycycles.reverse()
8)元素長度。使用len函數(shù)
len(bycycles)
2. 列表操作
1)for循環(huán)。
for bycycle in bycycles:
print(bycycle)#注意縮進(jìn),python 遵守縮進(jìn)原則。當(dāng)你輸入此句,回車時(shí)系統(tǒng)會自動給你帶上縮進(jìn)效果。相當(dāng)于花括號效果。{}
2)range函數(shù)。注意range的第二個參數(shù)不包含在生成的數(shù)。按順序生成一系列數(shù)字。
range(1,5)#生成1-4的四個數(shù)字,沒有5.
range(5)#默認(rèn)從0開始,生成0-4的五個數(shù)字。
3)使用list函數(shù),可將range 生成的數(shù)字變成數(shù)字列表。
numbers = list(range(1,5))#list使range類對象轉(zhuǎn)變?yōu)閘ist形式
range(2,11,2)#第三個參數(shù)為步長。
4)統(tǒng)計(jì)函數(shù)。max、min、sum函數(shù)
max(numbers)
min(numbers)
sum(numbers)
比較簡單的表示形式,確實(shí)是創(chuàng)造了一個列表,1到10的平方的列表。說不定你要讀這種代碼。
squares = [ for value**2 in range(2,11,2)]# 兩個*代表乘方運(yùn)算。
5)切片操作。與matlab 相似,利用 : 來代表數(shù)值范圍。
squares[:4]#該: 后面的和range函數(shù)的第二個參數(shù)具有相同的含義,該語句索引值為0-
#3。
squares[-3:]#指倒數(shù)三個數(shù)值。
6)切片復(fù)制。變量具有c語言的特點(diǎn),利用切片可以生成一個新的空間,如果使用賦值語句,則會公用一個存儲空間,達(dá)不到復(fù)制的效果。
squares_part = squares[:3]#創(chuàng)建一個新的空間,名稱為squares_part
squares_part2 = squares#不創(chuàng)建空間,與squares公用一個空間,只是該空間有第二個名字。
3 元組
元組相對于列表就變得約束,基本認(rèn)為元組內(nèi)的數(shù)值一般保持不變,當(dāng)通過索引值修改元組的某個元素,則會出現(xiàn)報(bào)錯,但是可以重新對元組名指定新值,即也就是換了另一個元組。元組主要是為了對于不能更改的內(nèi)容,防止誤操作。其基本內(nèi)容與list相同,只是list創(chuàng)建時(shí)使用[ ]賦值,而元組創(chuàng)建時(shí)使用()。而訪問的時(shí)候都使用[ 索引值 ]進(jìn)行訪問。此處不再重復(fù)。
小標(biāo)準(zhǔn):縮進(jìn)符號=4個空格
4 if語句與for 語句相似,需要帶有:,需要帶有縮進(jìn),elif 與 c語言中的else if 用法相同,記得帶:喲
if car == 'bike':
print('I like to ride a bike')
else :
print("I don't like other ways")
1)常見的操作符號。and 、or, 與其他語言相同,是“與”、“或”操作。檢查元素是否在某列表中使用in,其實(shí)在for中已經(jīng)使用。如果檢查某元素不在該列表使用not in。可以使用
if bycycles: 當(dāng)列表bycycles有一個元素,則為True,如果為空表,則為False。
5 字典
字典是鍵值對形式,key:value,創(chuàng)建字典使用{},字典不同列表和元組,它可以使用key值進(jìn)行讀取相應(yīng)的值。
alien_0 = {'color':'green','points':5}
alien_0['color']
1)添加字典元素。直接指定key和value
alien_0['x_position']=0
2 )刪除字典元素。使用del函數(shù)
del alien_0['x_position']
3)遍歷各種形式的的鍵、值 。函數(shù)返回的列表類型哦!
for key,value in alien_0.items():#第一個是鍵,第二個是值
print("\nKey:" + key)#print自帶回車效果喲
print("Value:" + value)
for key in alien_0.keys():#遍歷字典中的鍵。
print("\nKey:" + key)#print自帶回車效果喲
for value in alien_0.values():#遍歷字典中的鍵。
print("\nValue:" + value)#print自帶回車效果喲
4)如果想讓values返回的列表不出現(xiàn)重復(fù)數(shù)據(jù),則需要使用集合set函數(shù)。
for value in set(alien_0.values()):#遍歷字典中的鍵。
print("\nValue:" + value)#print自帶回車效果喲
5)字典和列表可以嵌套,當(dāng)字典的值為多個,即一對多,則可以使用列表類型。
6 用戶輸入和while循環(huán)
input 在Python2.7有問題,可以使用raw_input( ),而input函數(shù)只接受合法的表達(dá)式,可以將字符串加上引號,使用input。如果單獨(dú)輸入一個字符串,會當(dāng)作變量名使用。
message = input("What do you like?\n")
print(message)
輸入:"You"
輸出:'You'
使用int函數(shù)可以將一個數(shù)值字符串轉(zhuǎn)變?yōu)閿?shù)值,在Python2.7中輸入一個數(shù)值的話,會默認(rèn)為數(shù)值形式,不需要用int轉(zhuǎn)換,可能Python需要用該函數(shù)。在Python2.7中的raw_input與Python 中的input函數(shù)等價(jià),即都返回一個字符串。
2).while循環(huán)
i=5
while i<=5:
i+=1
print(i)
break 語句和 continue語句和c語言中的用法相同
7 函數(shù)
給出一個最簡單的函數(shù)形式
def greet():
"""greet function"""#該段描述主要生成函數(shù)文檔使用,作為函數(shù)功能的描述
print("Hello")
greet()#調(diào)用方式
def greet(username):#此處username稱為形參。
"""greet function"""#該段描述主要生成函數(shù)文檔使用,作為函數(shù)功能的描述
print("Hello "+username)
greet('byd')#輸出Hello byd,調(diào)用時(shí)此處的'byd'稱為實(shí)參。
1)傳遞實(shí)參
總共有兩種傳參方式:位置實(shí)參和關(guān)鍵字實(shí)參。
位置實(shí)參就是按照傳入的順序進(jìn)行賦值。例如上述的greet('byd')
關(guān)鍵字實(shí)參必須指明形參名稱和實(shí)參例如上式 greet(username='byd')只要指明關(guān)鍵字,輸入的順序可以不用考慮,但是位置參數(shù)則嚴(yán)格按照順序賦值。
2)記住順序,參數(shù)放置一般為 位置參數(shù)靠前放,默認(rèn)參數(shù)第二放,最后放任意數(shù)量的或者字典參數(shù)
def make_pizza(*pizzas):#接收任意數(shù)量的實(shí)參,用pizzas空元組接收。
"""打印pizza種類"""
print(pizzas)
make_pizza('pepperoni','green peppers')
def make_pizza(**pizzas):#接收任意數(shù)量的關(guān)鍵字實(shí)參,用pizzas空字典接收。
"""打印pizza種類"""
print(pizzas)
make_pizza(taste='best',meat='more')
此處不詳細(xì)講解return,和c語言用法相同。
3)簡單的將函數(shù)封裝為模塊,然后在另一個文件import 調(diào)用。
第一步創(chuàng)建一個py 模塊文件,如下:
pizza.py
def make_pizza(*pizzas):#接收任意數(shù)量的實(shí)參,用pizzas空元組接收。
"""打印pizza種類"""
print(pizzas)
創(chuàng)建另一個文件: import_pizza.py
import pizza#pizza.py與import_pizza.py文件放在同一個目錄下,此種引入,調(diào)用函數(shù)時(shí)需指明pizza
pizza.make_pizza('pepperoni','green peppers')
from pizza import make_pizza#pizza.py與import_pizza.py文件放在同一個目錄下,此種引入,調(diào)用函數(shù)時(shí)不能帶著pizza
make_pizza('pepperoni','green peppers')
4)使用as給函數(shù)和模塊起別名--當(dāng)出現(xiàn)重名或者名字太長的函數(shù)需要調(diào)用時(shí),方便起見,可以將其中一個函數(shù)利用as 起一個別名,進(jìn)行調(diào)用
import pizza as p# 此時(shí)只能使用p來調(diào)用make_pizza 這是模塊起別名
p.make_pizza('pepperoni','green peppers')
from pizza import make_pizza as mp# 此時(shí)只能使用p來調(diào)用make_pizza 這是函數(shù)起別名
mp('pepperoni','green peppers')
from pizza import * # 此處* 指pizza中所有的函數(shù)
其實(shí)大部分時(shí)間,程序員都會將有些數(shù)據(jù)結(jié)構(gòu)編寫為一些類,以方便理解與調(diào)用。
-------------------------------對象篇--------------------------------------------------------
1.創(chuàng)建dog類
class Dog():#括號里沒有object 說明是Python3 版本,如果有則為Python2.7
"""狗類"""
def __init__(self,name,age):
"""初始化屬性name和age"""
self.name = name
self.age = age
self.color = 'black'#當(dāng)指定默認(rèn)值時(shí),形參中可以不指明該屬性。
def sit(self):#在類里面的方法形參self不能缺少,而且必須放在首位。self與java中的this有異曲同工之妙。self不需要在調(diào)用的時(shí)候指明。此處調(diào)用使用sit()即可
"""蹲下"""
print(self.name+" is sitting")
my_dog = Dog('peppy',10)#創(chuàng)建實(shí)例對象
my_dog.sit()#調(diào)用類中方法
my_dog.name#調(diào)用屬性
2.繼承---當(dāng)我們需要在其他類的基礎(chǔ)上稍作改變,則可以利用繼承的思想,減少編寫的代碼量。
1)一個類繼承另一個類時(shí),將獲得該類所有的屬性和方法,被繼承的類為父類,新類為子類。子類需要先給父類創(chuàng)建后再給自己初始化。下面是Python3的寫法,Python2.7有點(diǎn)麻煩,嘿嘿,還是Python3簡單。
class Dog(): #首字母大寫指類
"""狗類"""
def __init__(self,name,age):# init 是特殊的方法,當(dāng)創(chuàng)建一個對象時(shí),默認(rèn)首先調(diào)用此函數(shù),與java中的構(gòu)造函數(shù)相似。self不需要在調(diào)用的時(shí)候指明。此處調(diào)用使用Dog('peppy',10)即可
"""初始化屬性name和age"""
self.name = name
self.age = age
def sit(self):#在類里面的方法形參self不能缺少,而且必須放在首位。self與java中的this有異曲同工之妙。self不需要在調(diào)用的時(shí)候指明。此處調(diào)用使用sit()即可
"""蹲下"""
print(self.name+" is sitting")
class Peppy(Dog):
"""小萌狗"""
def __init__(self,name,age):
super().__init__(name,age)#使用super()來調(diào)用父類
self.grade = 10
def meng(self):#萌數(shù)等級
print('萌數(shù)等級:'+str(self.grade))
my_peppy = Peppy('byd',5)
my_peppy.sit()#繼承父類所有的函數(shù)
3.重寫父類的方法--一定要和父類的方法重名,這要Python知道你要用自己的方法,而舍棄父類的方法
dog.py
class Dog(): #首字母大寫指類
"""狗類"""
def __init__(self,name,age):# init 是特殊的方法,當(dāng)創(chuàng)建一個對象時(shí),默認(rèn)首先調(diào)用此函數(shù),與java中的構(gòu)造函數(shù)相似。self不需要在調(diào)用的時(shí)候指明。此處調(diào)用使用Dog('peppy',10)即可
"""初始化屬性name和age"""
self.name = name
self.age = age
def sit(self):#在類里面的方法形參self不能缺少,而且必須放在首位。self與java中的this有異曲同工之妙。self不需要在調(diào)用的時(shí)候指明。此處調(diào)用使用sit()即可
"""蹲下"""
print(self.name+" is sitting")
class Peppy(Dog):
"""小萌狗"""
def __init__(self,name,age):
super().__init__(name,age)#使用super()來調(diào)用父類
self.grade = 10
def meng(self):#萌數(shù)等級
print('萌數(shù)等級:'+str(self.grade))
def sit(self):
print('I never sit! I am eating!')
my_peppy = Peppy('byd',5)
print(my_peppy.age)
print(my_peppy.name)
my_peppy.meng()
my_peppy.sit()#重寫父類的函數(shù)sit
4.類中的init函數(shù)中的屬性也可以是對象實(shí)例。通過 self.peppy = Peppy( )即可創(chuàng)建
5.導(dǎo)入類
導(dǎo)入類與導(dǎo)入函數(shù)相似,直接寫明導(dǎo)入的類名
from dog import Dog,Peppy
6.類編碼風(fēng)格
1)類名--每個單詞的首字母大寫,單詞間不需要連接符。比如:MyLove
2) 在類的第二行最好寫"""類的描述語言 """
3)在類中,用一個空行隔開類中的方法,用兩個空行隔開同一個模塊中的兩個類。
4)import語句先導(dǎo)入標(biāo)準(zhǔn)庫,空一行,在import 自己編寫的模塊。
下面兩個是以前整理的一點(diǎn)內(nèi)容,和上面有重合也有補(bǔ)充。嘿嘿Python 對象篇--參考《從Python開始學(xué)編程》?blog.csdn.netPython 資源篇----參考《從Python開始學(xué)編程》?blog.csdn.net
-------------------------------文件篇--------------------------------------------------------
1.讀文件時(shí)一般喜歡用with...as...函數(shù),該函數(shù)會在不需要文件的時(shí)候自動關(guān)閉文件,相對于手動的open和close,更輕便,避開繁瑣的檢查。主要注意一點(diǎn)是,print自帶換行功能,所以注意編寫代碼時(shí)是否需要對讀取的字符串進(jìn)行刪除空白符的需求。
1)讀取整個文件。read函數(shù)
pi_digit.txt
3.1415926535
8979323846
2643383279
file_reader.py
with open('pi_digit.txt') as file_object: #將open的返回值起別名為file_object
contents = file_object.read() #read函數(shù)返回值為一個字符串,即將文件所有內(nèi)容存儲為字符串形式
print(contents) #該方式在顯示時(shí)會有一個空行,是因?yàn)閞ead讀到文件最后會返回一個空字符串。 處理方法可以改為print(contents.rstrip())該rstrip 就是把右邊的空白符刪掉。
2)逐行讀取
with open('pi_digit.txt') as file_object: #將open的返回值起別名為file_object
for line in file_object:
print(line) #此處會出現(xiàn)多余的空行,因?yàn)槲募械膿Q行也會顯示,所有可以使用print(line.rstrip())
3)創(chuàng)建一個包含文件各行內(nèi)容的列表 readline函數(shù)是讀取文件每行內(nèi)容并存入一個列表中,返回值是一個列表。
with open('pi_digit.txt') as file_object: #將open的返回值起別名為file_object
lines = file_object.readlines()
for line in lines:
print(lines.rstrip())
2. 寫文件用'w',附加文件用 'a', 默認(rèn)為只讀文件'r',可寫可讀'r+'
with open('pi_digit.txt','w') as file_object: #將open的返回值起別名為file_object
file_object.write("I love programming\n")
3.使用r時(shí),如果文件不存在會報(bào)異常,使用w文件不存在會創(chuàng)建該文件再寫入,每次寫入該文件都是先清空再寫入,如果不想清空,可以使用'a'追加的方式進(jìn)行寫入。
4.異常處理
使用try...except...else結(jié)構(gòu) 對比JAVA try...catch結(jié)構(gòu),這里的else是和try有關(guān)聯(lián)的,當(dāng)try正常運(yùn)行沒有異常時(shí),會執(zhí)行else,然后執(zhí)行else后面的代碼塊。如果出錯,則進(jìn)入except塊處理,else不會運(yùn)行。如果沒有except 處理的話,程序會直接中斷,并顯示traceback 報(bào)錯信息,如果處理except,程序照樣運(yùn)行,不會中斷。
try:
answer1 = 5 / 2 #由于程序下一行異常,所以不能執(zhí)行else,所以只能顯示You can't divide by 0!
answer = 5 / 0
except ZeroDivisionError:
print("You can't divide by 0!")
else:
print(answer1)
5. 有一個關(guān)鍵字叫pass。在代碼中表示什么也不做,可以作為一種占位符。
6. json的dump保存和load讀取
import json
alien_0 = {'color': 'green', 'points': 5}
with open('uu.json', 'w') as file_object:
json.dump(alien_0, file_object)
with open('uu.json') as file_object:
content = json.load(file_object)
print(content)
-------------------------------測試用例篇-------------------------------------------------
和JAVA中的JUnit功能相似,在python中使用unittest模塊,下面簡單介紹用法。記住一個用法,是寫入測試的案例和期望的返回值。
1.測試函數(shù)
name_function.py 準(zhǔn)備測試的模塊
import unittest #導(dǎo)入unittest模塊
class NamesTestCase(unittest.TestCase):#創(chuàng)建一個類,但要繼承unittest.TestCase類
"""測試name_function.py"""
def test_first_laset_name(self): #創(chuàng)建測試方法 名字要以“ test:”_開頭
"""是否正確處理名字"""
formmated_name = get_formatted_name('jan','jop')
self.assertEqual(formmated_name,'Jan Jop') #該函數(shù)是檢查兩個參數(shù)是否相等
unittest.main() #執(zhí)行該測試類中的test_開頭的方法
2.測試類
除了上述見到的assertEqual斷言方法,還有下列:
assertNotEqual(a,b)
assertTrue(x)
assertFalse(x)
assertIn(item,list)
assertNotIn(item,list)
測試類時(shí),如果想創(chuàng)建一次類的實(shí)例在測試類中加入SetUp方法 ,Python會先運(yùn)行SetUp方法,然后運(yùn)行其他test_開頭的方法,SetUp函數(shù)相當(dāng)于平常的init方法
形式為:
def SetUp(self):
self.peppy = Peppy('byd',5)#后面函數(shù)中就可以直接用self.peppy.方法名來調(diào)用Peppy中的方法。
學(xué)習(xí)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)必不可少的就是數(shù)據(jù)可視化,一方面可以很好的展示研究結(jié)果,另一方面可以找到改進(jìn)的靈感。下面就主要談?wù)剶?shù)據(jù)可視化。
-------------------------------數(shù)據(jù)可視化篇-------------------------------------------------
1 matlabplotlib
1)漂亮的折線圖 首先可以參照網(wǎng)上的方法加載matplotlib 模塊。
import matplotlib.pyplot as plt #導(dǎo)入pyplot模塊
squars = [1, 4, 9, 16, 25, 36, 49, 91]#plot 默認(rèn)x坐標(biāo)的第一個數(shù)字為0,如果不符合要求,則需自己設(shè)置x的數(shù)據(jù)
input_values = [1, 2, 3, 4, 5, 6, 7, 8]
plt.plot(input_values, squars,linewidth=5)#顯示折線圖,線寬為5
#設(shè)置圖表標(biāo)題,并給坐標(biāo)軸加上標(biāo)簽
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
#設(shè)置刻度標(biāo)記的大小
plt.tick_params(axis='both', labelsize=14)
plt.show()#顯示繪制的圖片折線圖
2)散點(diǎn)圖scatter
import matplotlib.pyplot as plt #導(dǎo)入pyplot模塊
x_values = list(range(1, 1100))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=40, edgecolors='none', c=(0, 0, 0.8) )#顯示散點(diǎn)圖,點(diǎn)大小為100, c='red' c 還可以為rgb 三個分量值,值越接近0越深,越接近1,越淺
#設(shè)置圖表標(biāo)題,并給坐標(biāo)軸加上標(biāo)簽
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
plt.axis([0, 1100, 0, 1100000])
#設(shè)置刻度標(biāo)記的大小
plt.tick_params(axis='both', which='major', labelsize=14)#此處major 指的主刻度線
plt.show()#顯示繪制的圖片
還可以用漸變顏色效果
import matplotlib.pyplot as plt #導(dǎo)入pyplot模塊
x_values = list(range(1, 1100))
y_values = [x**2 for x in x_values]
plt.scatter(x_values, y_values, s=40, edgecolors='none', c=y_values, cmap=plt.cm.Blues)
#設(shè)置圖表標(biāo)題,并給坐標(biāo)軸加上標(biāo)簽
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
plt.axis([0, 1100, 0, 1100000])
#設(shè)置刻度標(biāo)記的大小
plt.tick_params(axis='both', which='major', labelsize=14)#此處major 指的主刻度線
plt.show()#顯示繪制的圖片
3)保存圖片
plt.savefig('square.png',bbox_inches='tight')#tight 指將圖表多余的空白區(qū)域刪掉。
總結(jié)
以上是生活随笔為你收集整理的python函数五要素_Python---基本掌握要素(《Python编程从入门到实践》)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于51单片机红外非接触测温仪阈值报警设
- 下一篇: websocket python爬虫_p