Python解釋器內置了許多函數(shù),這意味著我們無需定義,始終可以它們。接下來和大家一起討論一個常用的內建函數(shù)-input()和isinstance()。
站在用戶的角度思考問題,與客戶深入溝通,找到阿勒泰網站設計與阿勒泰網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網站建設、網站設計、企業(yè)官網、英文網站、手機端網站、網站推廣、申請域名、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋阿勒泰地區(qū)。
input()
input()函數(shù)讀取用戶輸入,并轉換成字符串:
a?=?input()??#?將input()返回的值賦值給a
Python
a????????????#?查看a的值(為字符串'Python')
'Python'
input()函數(shù)可以提供一個參數(shù),用來提示用戶:
b?=?input('請輸入你最喜歡的水果:??')???#?給用戶必要的提示
請輸入你最喜歡的水果:??香蕉
b
'香蕉'
需要注意的是,input()函數(shù)返回的值總是字符串,當用戶輸入的是數(shù)字也是這樣,所以當使用它時一定要注意:
num?=?input('請輸入一個數(shù)字:?')
請輸入一個數(shù)字:?10
num?+?9????????????????????????????#?試圖把num和數(shù)字相加
Traceback?(most?recent?call?last):
File?"",?line?1,?in
TypeError:?must?be?str,?not?int
num
'10'
type(num)???????????????????????????#?查看num的數(shù)字類型
class?'str'
isinstance()
isinstance()函數(shù)用于檢查對象是否為指定類(或者說數(shù)據(jù)類型)的實例。isintance()的第一個參數(shù)為一個對象,第二個參數(shù)為要檢查的數(shù)據(jù)類型。
舉個例子,比如有有一個變量,你想檢查它是否為數(shù)字類型,可以使用isinstance()函數(shù):
score?=?90
result?=?isinstance(score,?int)
if?result:
...?????print('score為int數(shù)據(jù)類型')
...?else:
...?????print('score不為int數(shù)據(jù)類型')
...
score為int數(shù)據(jù)類型
除了能檢查是否為int類型外,isintance()還能檢查其他數(shù)據(jù)類型(當然了),下面是一個綜合示例:
pi?=?3.14
name?=?'Wang'
complex_num?=?1?+?2j
isinstance(pi,?float)??????????????#?3.14為浮點數(shù)類型
True
isinstance(name,?str)??????????????#?'Wang'為字符串類型
True
isinstance(complex_num,?complex)???#??1?+?2j為復數(shù)
True
isinstance()還可以驗證某個對象是否為自定義的類型:
class?Developer:?????????????????????????????#?定義一個叫做Developer的類
...
...?????def?__init__(self,?name):????????????????#?__init__方法中,需要輸入名字
...?????????self.name?=?name
...?????def?display(self):???????????????????????#?定義了display()方法
...?????????print("Developer:",?self.name,?"-")
...
class?PythonDeveloper(Developer):????????????#?PythonDeveloper類,繼承了Developer類
...
...?????def?__init__(self,?name,?language):
...?????????self.name?=?name
...?????????self.language?=?language
...
...?????def?display(self):????????????????????????#?覆蓋了父類的display方法
...?????????print("Python?Developer:",?self.name,?"language:",?self.language,?"-")
...
dev?=?Developer('Zhang')?????????????????????#?創(chuàng)建一個Developer對象
dev.display()????????????????????????????????#?調用display()方法,以查看該對象
Developer:?Zhang?-
isinstance(dev,?Developer)???????????????????#?判斷dev是否為Developer類,答案是肯定的
True
isinstance(dev,?PythonDeveloper)?????????????#?判斷dev是否為PythonDeveloper類,當然不是
False
python_dev?=?PythonDeveloper('Liu',?'Python')??#?創(chuàng)建一個PythonDeveloper對象,注意PythonDeveloper是Developer的子類
python_dev.display()??????????????????????????#?調用display方法
Python?Developer:?Liu?language:?Python?-
isinstance(python_dev,?Developer)?????????????#?判斷python_dev是否為Developer類,答案是肯定的
True
isinstance(python_dev,?PythonDeveloper)??????#?判斷python是否為PythonDeveloper類,答案也是肯定的
True
關于Python的基礎問題可以看下這個網頁的視頻教程,網頁鏈接,希望我的回答能幫到你。
實際項目中經常遇到讀取二進制問題,Python下讀取二進制文件一般用Python的文件打開讀寫相關函數(shù)和struct.
1。獲取文件名filename,可用對話框,也可以直接手寫
2。打開文件,這里中是打開,像看書一樣,只是打開書,還沒有看里面的內容,可以看,也可以不看
binFile=open(filename,'rb')
3。那就看看吧,binFile現(xiàn)在就是書的名字了。這里我們讀入4個字,如果read()將讀入整個文件
context=binFile.read(4)
4。讀入之后問題來了,context包含四個字(4Bytes),但這四個字是加密的(二進制)。這時要找翻譯struct.unpack
realContext=struct.unpack(format,context)
5。format的就是加密規(guī)則了,由1,2,4,8個字節(jié)組成其他類型,或者其他類型的數(shù)組。
a,b,c,d=struct.unpack('4c',context)
讀入四個字符
對應格式參考
6。打開文件后用完一定要關閉,和看書一個樣,看完后要合上,不合上后果自己去想
binFile.close()
7。查找內容,文件內容可以一個一個字的按順序讀出,但如果已經知道內容在什么位置,可以用查找方式讀出。
binFile.seek(100)
context=binFile.read(4)
讀出100位置后面的4個字,(101,102,103,104)
8。Python還提供也一些高級讀寫功能,如整行讀取等
文件對象(open() 函數(shù)的返回值)提供了read()函數(shù)可以按字節(jié)或字符讀取文件內容,到底是讀取字節(jié)還是字符,取決于使用 open() 函數(shù)打開文件時,是否使用了 b 模式,如果使用了 b 模式,則每次讀取一個字節(jié);反之,則每次讀取一個字符。
read() 函數(shù)的基本語法格式如下:
file.read([size])
其中,file 表示打開的文件對象;size 作為一個可選參數(shù),用于指定要讀取的字符個數(shù),如果省略,則默認一次性讀取所有內容。
【例 1】采用循環(huán)讀取整個文件的內容。
# a.txt 文件內容為:C語言中文網
f = open("a.txt", 'r', True)
while True:
# 每次讀取一個字符
ch = f.read(1)
# 如果沒有讀到數(shù)據(jù),跳出循環(huán)
if not ch:
break
# 輸出ch
print(ch, end='')
f.close()
運行結果為:
C語言中文網
上面程序采用循環(huán)依次讀取每一個字符(因為程序沒有使用 b 模式),每讀取到一個字符,程序就輸出該字符。
正如從上面程序所看到的,當程序讀寫完文件之后,推薦立即調用 close() 方法來關閉文件,這樣可以避免資源泄露(后續(xù)章節(jié)會詳細介紹 close() 函數(shù))。
注意,在調用 read() 函數(shù)讀取文件內容時,成功讀取的前提是在 open() 函數(shù)中使用 r 或 r+ 的模式打開文件,否則(比如將上面程序中 open()的打開模式改為 w),程序會拋出io.UnsupportedOperation異常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 4, in
ch = f.read(1)
io.UnsupportedOperation: not readable
【例 2】調用 read() 方法時不傳入?yún)?shù),該方法默認會讀取全部文件內容。例如:
f = open("a.txt", 'r', True)
# 直接讀取全部文件
print(f.read())
f.close()
運行結果為:
C語言中文網
read()函數(shù)拋出UnicodeDecodeError異常的解決方法
當使用 open() 函數(shù)打開文本文件時,默認會使用當前操作系統(tǒng)的字符集,比如 Windows 平臺,open() 函數(shù)默認使用 GBK 字符集。因此,上面程序讀取的 a.txt 也必須使用 GBK 字符集保存;否則,程序就會出現(xiàn)UnicodeDecodeError錯誤。
如果要讀取的文件所使用的字符集和當前操作系統(tǒng)的字符集不匹配,則有兩種解決方式:
使用二進制模式讀取,然后用 bytes 的 decode() 方法恢復成字符串。
利用 codecs 模塊的 open() 函數(shù)來打開文件,該函數(shù)在打開文件時允許指定字符集。
例如,下面程序使用二進制模式來讀取文本文件:
# 指定使用二進制方式讀取文件內容,a.txt 以 utf-8 編碼存儲
f = open("a.txt", 'rb', True)
# 直接讀取全部文件,并調用bytes的decode將字節(jié)內容恢復成字符串
print(f.read().decode('utf-8'))
f.close()
上面程序在調用 open() 函數(shù)時,傳入了 rb 模式,這表明采用二進制模式讀取文件,此時文件對象的 read() 方法返回的是 bytes 對象,程序可調用 bytes 對象的 decode() 方法將它恢復成字符串。由于此時讀取的 a.txt 文件是以 UTF-8 的格式保存的,因此程序需要使用 decode() 方法恢復字符串時顯式指定使用 UTF-8 字符集。
下面程序使用 codes 模塊的 open() 函數(shù)來打開文件,此時可以顯式指定字符集:
import codecs
# 指定使用utf-8 字符集讀取文件內容
f = codecs.open("a.txt", 'r', 'utf-8', buffering=True)
while True:
# 每次讀取一個字符
ch = f.read(1)
# 如果沒有讀取到數(shù)據(jù),則跳出循環(huán)
if not ch : break
# 輸出ch
print (ch, end='')
f.close()
上面程序在調用 open() 函數(shù)時顯式指定使用 UTF-8 字符集,這樣程序在讀取文件內容時就完全沒有問題了。
文章題目:python中的讀入函數(shù) python 把值傳入函數(shù)
路徑分享:http://muchs.cn/article32/hjdisc.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網站建設、網站內鏈、微信小程序、ChatGPT、軟件開發(fā)、移動網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)