[英]Global vs local instances in Python
我是一個沒有太多CS背景的自學成才的程序員。 我在這里閱讀了很多有關Python中的全局變量主題的討論,但是我仍然不清楚何時使用全局是“良好的編程習慣”。
假設我編寫了一個Python腳本,該腳本對文件夾中的每個樣本執行了幾次長時間的計算。 我創建了一個簡單的類,其中包含每個計算的結果,因此一旦腳本完成,我就可以打印摘要文件。
class SampleInfo():
def __init__(self):
self.dict = {}
def add_sample(self, sample):
self.dict[sample] = {}
def add_value(self, sample, value)
self.dict[sample] = value
我看到兩種編寫主腳本的方式:
A)使用全局語句:
import os
def LongComputation(sample):
# do some stuff that results in a value
Info.add_value(sample, value)
def main():
global Info
Info = SampleInfo()
for sample in os.listdir("."):
LongComputation(sample)
main()
B)如果沒有全局語句,則將實例傳遞給函數:
import os
def LongComputation(sample, info_instance=None):
# do some stuff that results in a value
info_instance.add_value(sample, value)
def main():
Info = SampleInfo()
for sample in os.listdir("."):
LongComputation(sample, info_instance=Info)
main()
特別是當我有幾種類型的Info類和許多LongComputation函數時,選項B)變得非常混亂。 另一方面,不建議使用全局語句。
我應該在A)上使用B)嗎? 為什么?
我不明白為什么需要在這里使用全局變量,您可以在將值添加到Info
對象之前先進行計算並返回它。 當一個簡單的字典工作得很好時,該類也是多余的。
import os
def LongComputation(sample):
# do some stuff that results in a value
return value
def main():
Info = {}
for sample in os.listdir("."):
Info[sample] = LongComputation(sample)
main()
何時使用全局變量:
也許,當您的腳本是一種快速,簡單的技巧時;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.