第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

存儲(持久化)單個(數(shù)字)變量值的最優(yōu)雅方式

存儲(持久化)單個(數(shù)字)變量值的最優(yōu)雅方式

侃侃無極 2022-12-14 20:43:20
我需要在腳本執(zhí)行之間存儲一個計數(shù)器的值,這樣我就可以每隔一百次觸發(fā)一個特定的子例程。我知道我可以將我的整數(shù)寫入一個文本文件并重新讀取它,我知道我可以 pickle 我的變量達到幾乎相同的效果(腳本當前使用后一種方法)。我所關(guān)心的是找到使代碼盡可能優(yōu)雅(簡單且易于理解)的方法,尤其是對于非技術(shù)受眾。模塊名稱在這pickle方面沒有幫助——一旦你理解了這個比喻,它就完全令人難忘,但如果你不知道它,則需要注釋(或口頭解釋)來解釋它是一個用于序列化 Python 對象的模塊到磁盤。雖然“很高興”,但我并不特別關(guān)心存儲操作的原子性,也不關(guān)心強烈保護存儲的值不丟失 [盡管我確實需要它在服務器重啟后保持不變]。我感興趣的是訪問和更新變量值的代碼的優(yōu)雅,而不是初始化存儲值的代碼的優(yōu)雅(因此,如果要將值存儲在文件中,我對代碼感興趣讀取和寫入已經(jīng)存在并保存值的文件,而不是在第一次執(zhí)行時創(chuàng)建文件)。存儲單個(數(shù)字)值以使其在腳本執(zhí)行之間持續(xù)存在的最優(yōu)雅(和/或最pythonic)的方法是什么?
查看完整描述

3 回答

?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

標準庫的shelve模塊正是為這個用例設(shè)計的:對象持久化。在這里你可以簡單地做:

with shelve.open('counter') as db:
    db['value'] = counter

它將自動創(chuàng)建該文件并將計數(shù)器的值存儲在其中。


查看完整回答
反對 回復 2022-12-14
?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

這是一種“寫入文本文件”的方法:


with open('counter', 'r') as f:

    value = int(f.read())

# Perform increments to the counter 'value' here

with open('counter', 'w') as f:

    f.write(str(value))

這里的優(yōu)雅損失是需要將變量從 a 轉(zhuǎn)換為 a str,但很明顯您正在寫入和讀取磁盤上的文件。


查看完整回答
反對 回復 2022-12-14
?
慕絲7291255

TA貢獻1859條經(jīng)驗 獲得超6個贊

我的問題中提到的 pickle 方法是:


import pickle

with open('counter', 'rb') as f:

    value = pickle.load(f)    

# Perform increments to the counter 'value' here

with open('counter', 'wb') as f:

    pickle.dump(value, f)

這里失去的優(yōu)雅是需要知道 pickle 模塊的作用。


查看完整回答
反對 回復 2022-12-14
  • 3 回答
  • 0 關(guān)注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號