python中的讀入函數(shù) python 把值傳入函數(shù)

Python中的input()、isinstance()函數(shù)如何使用

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下讀取二進制文件一般用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還提供也一些高級讀寫功能,如整行讀取等

python中isread函數(shù)么

文件對象(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)

網站托管運營