Python中json.load()與json.loads()方法有什么區(qū)別詳解
1.從代碼層面說,程序為什么會崩潰?
1)讀取未賦值的變量
沒有給變量初始化和賦值,導致該變量的值為臟值。
2)函數棧溢出
函數棧溢出一般是兩種情況引起的:
1.定義了一個體積太大的局部變量或者參數,參數和局部變量一般都是存儲在棧中的,但是棧所占的內存空間很小,在32位下只占有8M的空間,因此如果沒有使用malloc和new來在堆上創(chuàng)建內存空間的話,棧溢出就會很容易發(fā)生。
2.函數的嵌套調用的層次太深了,就像無窮遞歸和無窮的循環(huán)調用一樣。
3)數組訪問越界
4)指針的目標對象不可用
指針所指向的對象要正常使用,它就必須是一個合法的、有效的,可以訪問的對象,像當指針為空指針或野指針時,你再使用它,程序就會立馬崩潰。
而出現空指針或者野指針,一般都是下面幾種操作導致的:
1.指針未賦值
2.free/delete釋放了該對象
3.不恰當的指針強制類型轉換
5)參數錯誤
一般為了保證參數合法,都會設置斷言來保證只有參數合法的情況下,程序才可以正常運行。因此此類錯誤一般都是觸發(fā)了斷言導致的。
6)ClassNotFoundException異常
是因為在指定的存放class文件夾下未找到相關的class文件導致。
1.有可能是編譯問題,有可能是運行時的硬件環(huán)境導致的。相同的代碼,在本地運行沒問題,在服務器上就找不到類。后來改了下掃描的路徑就可以了。
2.全類名沒寫對,或者沒導入這個類。
3.純粹的代碼或者依賴管理問題。
補充:
首先,Java的錯誤在程序角度分為exception和error。
error:是代碼錯誤,編譯不通過,運行不起來。比如變量命名不規(guī)范,public類名和文件名不一致等。
exception:分為runtime exception和非runtime exception。
runtime exception:運行時異常,是程序內部的異常,如數組下標越界,空指針,類轉換異常等。
非runtime exception:非運行時異常,一般是外界導致的異常,如IO e,class not found e等。
7)未捕獲的異常
8)內存泄漏
9)服務器宕機了
可以凡爾賽一點回答,肯定就是代碼寫得不符合規(guī)范或者機器撐不住了。
機器很少硬件故障。而系統是程序,所以機器有問題,大概率是程序問題,導致各種異常。
以上僅僅是應付面試而已,遇到真實情況,正確做法是:
應該截圖報錯的具體提示,解決具體問題。因為報錯的問題可能是千奇百怪的,知道bug是什么,什么原因導致的,最終要回歸到解決問題上的。
2.while死循環(huán)和for死循環(huán)的區(qū)別?
while死循環(huán):
while+條件。在條件不改變且條件一直為真時,是死循環(huán)。
num=1 sum=0 while num<=100: if num%2!=0: sum=sum+num print(sum)
for死循環(huán):
for循環(huán)主要是用來做可迭代數據的迭代操作的,可以通過生成器的方式直接實現死循環(huán)。
def generator(): index=0 while True: yield index index +=1 for x in generator(): print("這是一個死循環(huán):",x)
3.集合的特點是什么?
集合里所有的元素都是唯一的,它具有唯一性。集合直接幫我們把重復的數據清理掉。是無序的,速度快。
參考文章:集合
4.Python中json.load()和json.loads()方法有什么區(qū)別?
json.load()
方法是從json文件讀取json,而json.loads()
方法是直接讀取json,兩者都是將字符串json轉換為字典。
json.dumps()
和json.loads()
是json格式處理函數(可以這么理解,json是字符串)。
json.dumps()
函數是將一個Python數據類型列表進行json格式的編碼(可以這么理解,json.dumps()
函數是將字典轉化為字符串)。
json.loads():
import json a={'value':'000','type':'rgb'} b=json.loads(json.dumps(a)) print(a)
json.load():
import json c=json.load(open('/Users/llq/PycharmProjects/pythonProject/study/lili/package.json')) print(c)
package.json
5.用Python找出列表中出現次數最多的數據?
a=[1,2,33,4,4,4,'a','a','a','a'] print(max(set(a),key=a.count))
總結
到此這篇關于Python中json.load()與json.loads()方法有什么區(qū)別的文章就介紹到這了,更多相關Python json.load()與json.loads()方法區(qū)別內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python3使用libpcap庫進行抓包及數據處理的操作方法
這篇文章主要介紹了python3使用libpcap庫進行抓包及數據處理,需要的朋友可以參考下2022-10-10python 捕獲 shell/bash 腳本的輸出結果實例
下面小編就為大家?guī)硪黄猵ython 捕獲 shell/bash 腳本的輸出結果實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01聊聊python里如何用Borg pattern實現的單例模式
這篇文章主要介紹了聊聊python里如何用Borg pattern實現的單例模式,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06將本地Python項目打包成docker鏡像上傳到服務器并在docker中運行
Docker是一個開源項目,為開發(fā)人員和系統管理員提供了一個開放平臺,可以將應用程序構建、打包為一個輕量級容器,并在任何地方運行,這篇文章主要給大家介紹了關于將本地Python項目打包成docker鏡像上傳到服務器并在docker中運行的相關資料,需要的朋友可以參考下2023-12-12Ubuntu下Python+Flask分分鐘搭建自己的服務器教程
今天小編就為大家分享一篇Ubuntu下Python+Flask分分鐘搭建自己的服務器教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11