Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解
元組
元組是不可變序列
多任務(wù)環(huán)境下,同時(shí)操作對(duì)象時(shí)不需要枷鎖;
元組中存儲(chǔ)的時(shí)對(duì)象的引用:
1)如果元組中對(duì)象本身是不可變對(duì)象,則不能再引用其他對(duì)象;
2)如果元組中的對(duì)象是可變對(duì)象,則可變對(duì)象的引用不允許改變,但數(shù)據(jù)可以改變。

集合
集合是可變類(lèi)型的序列
集合沒(méi)有value字典,存儲(chǔ)內(nèi)容的顯示不是按照順序
集合的元素不能重復(fù)





字符串
字符串是不可變序列
1、字符串的駐留機(jī)制
僅保存一份相同且不可變字符串,不同的值被存放再字符串駐留池中,python的駐留機(jī)制對(duì)相同的字符串只保留一份拷貝,后續(xù)創(chuàng)建相同字符串時(shí),不會(huì)開(kāi)辟新空間,而是把該字符串的地址賦給新創(chuàng)建的變量。
駐留機(jī)制的幾種情況(交互模式):
a)字符串長(zhǎng)度為0或1時(shí),產(chǎn)生駐留
b)符合標(biāo)識(shí)符(含有字母、數(shù)字、下劃線(xiàn))的字符串,產(chǎn)生駐留
c)字符串只在編譯時(shí)進(jìn)行駐留,而非運(yùn)行時(shí)
d)[-5,256]之間的整數(shù)數(shù)字,產(chǎn)生駐留
sys中的intern方法強(qiáng)制2個(gè)字符串指向同一個(gè)對(duì)象
pycharm對(duì)字符串進(jìn)行了優(yōu)化處理
駐留機(jī)制的優(yōu)點(diǎn):
a)優(yōu)點(diǎn):當(dāng)需要值相同的字符串時(shí),可以直接從字符串池里拿來(lái)使用,避免頻繁的創(chuàng)建和銷(xiāo)毀,提升效率和節(jié)約內(nèi)存,因此拼接字符串和修改字符串時(shí)會(huì)比較影響性能的。
b)在需要進(jìn)行字符串拼接時(shí)建議使用str類(lèi)型的join方法,而非+,因?yàn)閖oin()方式時(shí)先計(jì)算出所有字符中的長(zhǎng)度,然后再拷貝
2、常用操作








函數(shù)
1、函數(shù)的優(yōu)點(diǎn):
(1)復(fù)用代碼
(2)隱藏實(shí)現(xiàn)細(xì)節(jié)
(3)提高可維護(hù)性
(4)提高可讀性便于調(diào)試
2、函數(shù)的創(chuàng)建:def 函數(shù)名([輸入?yún)?shù)])
函數(shù)體
[return xxx]
3、函數(shù)的參數(shù)傳遞:
(1)函數(shù)調(diào)用時(shí)的參數(shù)傳遞:
位置實(shí)參:根據(jù)形參對(duì)應(yīng)的位置進(jìn)行實(shí)參傳遞,位置對(duì)應(yīng)
例如def fuc1(a,b),調(diào)用時(shí)fuc1(10,20)
關(guān)鍵字實(shí)參:根據(jù)形參名稱(chēng)進(jìn)行實(shí)參傳遞,
例如def fuc1(a,b),調(diào)用時(shí)fuc1(b=10,a=20)
(2)如果是不可變對(duì)象,在函數(shù)體內(nèi)的修改不會(huì)影響實(shí)參的值
如果是可變對(duì)象,在函數(shù)體內(nèi)的修改會(huì)影響實(shí)參的值
4、函數(shù)的返回值:
(1)函數(shù)返回多個(gè)值時(shí),結(jié)果為元組
(2)函數(shù)返回一個(gè)值時(shí),結(jié)果為原值
(3)函數(shù)沒(méi)有返回值時(shí),省略return
5、函數(shù)的參數(shù)定義:
(1)函數(shù)定義默認(rèn)值參數(shù):
函數(shù)定義時(shí),給形參設(shè)置默認(rèn)值,只有與默認(rèn)值不符的時(shí)候才需要傳遞實(shí)參。
只傳一個(gè)參數(shù),未被定義的參數(shù)未默認(rèn)值。
默認(rèn)值參數(shù)注意一定要放在其他需要傳遞實(shí)參的形參最后。
(2)個(gè)數(shù)可變的位置參數(shù):使用*定義,結(jié)果為一個(gè)元組,例如def fun1(*args)
個(gè)數(shù)可變的關(guān)鍵字形參:使用**定義,結(jié)果為一個(gè)字典,例如def fun1(**args)
如果要讓函數(shù)接受不同類(lèi)型的實(shí)參,必須在函數(shù)定義中將接納任意數(shù)量實(shí)參的形參放在最后。 Python先匹配位置實(shí)參和關(guān)鍵字實(shí)參,再將余下的實(shí)參都收集到最后一個(gè)形參中。

6、變量的作用區(qū)域
局部變量:在函數(shù)內(nèi)定義并使用,局部變量使用global聲明,可變?yōu)槿肿兞?br /> 全局變量:在函數(shù)外定義的變量,函數(shù)內(nèi)外都可以使用。
7、遞歸函數(shù):函數(shù)體內(nèi)套用該函數(shù)本身
(1)遞歸的組成部分:遞歸調(diào)用與遞歸終止條件
(2)遞歸的調(diào)用過(guò)程:每遞歸調(diào)用一次函數(shù),都會(huì)在棧內(nèi)分配一個(gè)棧幀。
每執(zhí)行完一次函數(shù),都會(huì)釋放相應(yīng)的空間。
(3)遞歸的優(yōu)缺點(diǎn):缺點(diǎn)占內(nèi)存多,效率低下;優(yōu)點(diǎn)思路和代碼簡(jiǎn)單。
例如求階層:
def fuc1(n):
if n==1:
return 1
else:
return n*fuc1(n)
print(fuc1(10))
例如斐波那契數(shù)列:
def fib(n):
if n==1:
return 1
elif n==2:
return 2
elif :
return fib(n-1)+fib(n-2)
8、將函數(shù)存儲(chǔ)在模塊中
將函數(shù)存儲(chǔ)在被稱(chēng)為模塊的獨(dú)立文件中,再將模塊導(dǎo)入到主程序中
(1)導(dǎo)入整個(gè)模塊:模塊是擴(kuò)展名為.py的文件,包含要導(dǎo)入到程序中的代碼。
import 模塊名
模塊名.函數(shù)名()
(2)導(dǎo)入特定函數(shù):from module_name import function_0, function_1, function_2
(3)使用 as 給函數(shù)指定別名:from 模塊 import 原函數(shù)名 as 新函數(shù)名
(4)使用 as 給模塊指定別名:import 原模塊名 as 新模塊名
(5)導(dǎo)入模塊中的所有函數(shù):from 模塊 import *
9、函數(shù)編寫(xiě)指南:
(1)名稱(chēng):具有描述性,只使用小寫(xiě)字母和下劃線(xiàn)
(2)注釋?zhuān)焊诤瘮?shù)定義后
(3)形參:指定默認(rèn)值時(shí)等號(hào)兩邊不要有空格
(4)關(guān)鍵字實(shí)參:等號(hào)兩邊不要有空格
(5)長(zhǎng)度:每行代碼最好不超過(guò)79個(gè)字符;如果形參太多,可在函數(shù)定義中輸入左括號(hào)后按回車(chē)鍵,并在下一行按兩次Tab鍵,從而將形參列表和只縮進(jìn)一層的函數(shù)體區(qū)分開(kāi)來(lái)。
(6)分隔:每個(gè)函數(shù)之間用兩行空行分開(kāi)
(7)import:一般所有import都放在文件開(kāi)頭
Bug
1、Bug常見(jiàn)類(lèi)型
A、錯(cuò)誤點(diǎn)不熟悉導(dǎo)致
(1)輸入的內(nèi)容默認(rèn)為字符型,用字符型進(jìn)行數(shù)字計(jì)算、比較等。解決方案:轉(zhuǎn)化為數(shù)字類(lèi)型
(2)while循環(huán)未實(shí)現(xiàn)定義變量,變量未改變
(3)中英文符號(hào)混用
(4)一個(gè)等號(hào)時(shí)賦值,兩個(gè)等號(hào)時(shí)等于
(5)縮進(jìn)錯(cuò)誤
(6)忘了冒號(hào):如if語(yǔ)句,循環(huán)語(yǔ)句,else子句等
(7)字符串拼接的時(shí)候,把字符串和數(shù)字拼在一起
B、知識(shí)不熟練導(dǎo)致
(1)索引越界
(2)append()方法不熟練,append每次只能添加一個(gè)元素,只對(duì)列表。
C、思路不清導(dǎo)致的問(wèn)題
解決方案:(1)print打印輸出;(2)使用注釋暫時(shí)注釋掉部分代碼
D、被動(dòng)掉坑:
程序代碼邏輯沒(méi)有錯(cuò),只是因?yàn)橛脩?hù)錯(cuò)誤操作或者一些例外情況而導(dǎo)致的程序崩潰。
例如:
a=int(input('請(qǐng)輸入一個(gè)整數(shù)'))
b=int(input('請(qǐng)輸入另一個(gè)整數(shù)'))
result=a/b
print('結(jié)果為',result)
#若a輸入為q則報(bào)錯(cuò)
#若b輸入為0也報(bào)錯(cuò)
解決方法:python提供異常處理機(jī)制,可以在異常出現(xiàn)時(shí)即時(shí)捕獲,然后內(nèi)部消化,讓程序繼續(xù)運(yùn)行。例如:
1、try except結(jié)構(gòu)
try:#下為可能出現(xiàn)問(wèn)題的代碼
a=int(input('請(qǐng)輸入一個(gè)整數(shù)'))
b=int(input('請(qǐng)輸入另一個(gè)整數(shù)'))
result=a/b
print('結(jié)果為',result)
except ZeroDivisionError
print('對(duì)不起,除數(shù)不允許為0')
print('程序結(jié)束')
2、多個(gè)excep結(jié)構(gòu):捕捉異常的順序按照先字類(lèi)后父類(lèi)的順序,為了避免遺漏可能出現(xiàn)的異常,可以在最后增加BaseException。例如:
try:
a=int(input('請(qǐng)輸入一個(gè)整數(shù)'))
b=int(input('請(qǐng)輸入另一個(gè)整數(shù)'))
result=a/b
except ZeroDivisionError:
print('對(duì)不起,除數(shù)不允許為0')
except ValueError:
print('不能將字符串轉(zhuǎn)換為數(shù)字')
except BaseException as e:
print(e)
3、try except else結(jié)構(gòu)(不知道會(huì)出什么錯(cuò)誤的情況)
try:
a=int(input('請(qǐng)輸入一個(gè)整數(shù)'))
b=int(input('請(qǐng)輸入另一個(gè)整數(shù)'))
result=a/b
except BaseException as e:
print('出錯(cuò)了')
print(e)
else:
print('結(jié)果為',result)
4、try except else finally結(jié)構(gòu)(finally塊無(wú)論是否發(fā)生異常都會(huì)被執(zhí)行,能用來(lái)釋放try塊中申請(qǐng)的資源)

try:
a=int(input('請(qǐng)輸入一個(gè)整數(shù)'))
b=int(input('請(qǐng)輸入另一個(gè)整數(shù)'))
result=a/b
except BaseException as e:
print('出錯(cuò)了')
print(e)
else:
print('結(jié)果為',result)
finally:
print('謝謝您的使用')
print('程序結(jié)束')
2、常見(jiàn)異常類(lèi)型

3、python異常處理機(jī)制
traceback模塊(打印異常信息)
import traceback try: print(1/0) except: traceback.print_exc()
pycharm開(kāi)發(fā)環(huán)境的調(diào)試
(1)斷電
程序運(yùn)行到此處,暫時(shí)掛起,停止執(zhí)行。此時(shí)可以詳細(xì)觀察程序的運(yùn)行情況,方便做出進(jìn)一步的判斷。
(2)進(jìn)入調(diào)試視圖
進(jìn)入調(diào)試視圖的三種方式:
1)單擊工具欄上的按鈕(小蟲(chóng)子)
2)右鍵單擊編輯區(qū):點(diǎn)擊:debug模塊名
3)快捷鍵:shift+F9
編程思想
(1)兩種編程思想

(2)類(lèi)和對(duì)象的創(chuàng)建
1)類(lèi):多個(gè)類(lèi)似事物組成的群體的統(tǒng)稱(chēng),能夠幫助我們快速理解和判斷事物的性質(zhì)。
2)對(duì)象:實(shí)例或?qū)ο?,可以是?lèi)的具體,python中一切皆對(duì)象。
3)創(chuàng)建:
#創(chuàng)建:
class Student: #Student為類(lèi)的名稱(chēng),可以由多個(gè)單詞組成,要求首字母大寫(xiě),其余小寫(xiě)
pass#沒(méi)想好的情況下
#類(lèi)的組成
#1、類(lèi)屬性
native_pace='吉林'#直接寫(xiě)在類(lèi)里的變量,稱(chēng)為類(lèi)屬性
#2、實(shí)例方法
def eat(self):
print('學(xué)生在吃飯...')#在類(lèi)之外定義稱(chēng)為函數(shù),類(lèi)之內(nèi)定義的稱(chēng)為方法
#3、靜態(tài)方法
staticmathod
def method():
print('靜態(tài)方法')
#4、類(lèi)方法
classmethod
def cm(cls):
print('類(lèi)方法')
到此這篇關(guān)于Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解的文章就介紹到這了,更多相關(guān)Python 元組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python調(diào)用MySQLdb插入中文亂碼的解決
這篇文章主要介紹了Python調(diào)用MySQLdb插入中文亂碼的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Python基于Django實(shí)現(xiàn)驗(yàn)證碼登錄功能
驗(yàn)證碼登錄是一種常見(jiàn)的身份驗(yàn)證方式,它可以有效防止惡意攻擊和機(jī)器人登錄,本文將介紹如何基于Python?Django實(shí)現(xiàn)驗(yàn)證碼登錄功能,需要的可以參考一下2023-05-05
Python Collections強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)工具使用實(shí)例探索
這篇文章主要介紹了Python Collections強(qiáng)大的數(shù)據(jù)結(jié)構(gòu)工具的使用實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
如何使用python?wasmtime調(diào)用rust生成的wasm庫(kù)
這篇文章主要介紹了如何使用python?wasmtime調(diào)用rust生成的wasm庫(kù),使用python wasmtime來(lái)訪(fǎng)問(wèn)rust庫(kù)的便捷方法,步驟極其簡(jiǎn)練,可以在生產(chǎn)環(huán)境中使用,需要的朋友可以參考下2023-01-01
Python實(shí)現(xiàn)的檢測(cè)web服務(wù)器健康狀況的小程序
這篇文章主要介紹了Python實(shí)現(xiàn)的檢測(cè)web服務(wù)器健康狀況的小程序,本文使用socket庫(kù)來(lái)實(shí)現(xiàn),需要的朋友可以參考下2014-09-09
使用python創(chuàng)建圖片格式轉(zhuǎn)換器的實(shí)現(xiàn)步驟
本教程將指導(dǎo)如何使用 Python 編寫(xiě)的圖片格式轉(zhuǎn)換工具 ImaCon_ter.py,該工具能夠?qū)D片從一種格式轉(zhuǎn)換為另一種格式,文章通過(guò)代碼示例講解的非常詳細(xì),感興趣的小伙伴跟著小編一起來(lái)看看吧2024-12-12
tensorflow實(shí)現(xiàn)殘差網(wǎng)絡(luò)方式(mnist數(shù)據(jù)集)
這篇文章主要介紹了tensorflow實(shí)現(xiàn)殘差網(wǎng)絡(luò)方式(mnist數(shù)據(jù)集),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05

