Przed rozładowaniem krytyki najpierw pozwól mi powiedzieć gratulacje z okazji uruchomienia Twojego pierwszego programu w Pythonie. Przemieszczanie się z jednego języka na drugi może być uciążliwe, ciągle grzebiąc w kwestiach składniowych i polując przez nieznane biblioteki.
Najbardziej wymienianą wytyczną stylu jest PEP-8, ale to tylko poradnik, a przynajmniej jej część jest ignorowana ... nie, mam na myśli uznawana za nie stosującą się do jakiejś konkretnej sytuacji z całym szacunkiem dla autorów wytycznych i współtwórcy :-).
Nie mogę porównać tego z PHP, ale w porównaniu z innymi aplikacjami Python jest całkiem jasne, że postępujesz zgodnie z konwencjami stylu z innych języków. Nie zawsze zgadzałem się z wieloma rzeczami, które inni deweloperzy powiedzieli ci, abyś zrobił to, ale z czasem zrozumiałem, dlaczego używanie konwencji pomaga w informowaniu o tym, co robi aplikacja, i pomoże innym programistom ci pomóc.
Podnoszenie wyjątków, a nie ciągi.
raise 'Server or group ' + sectionname + ' not found in ' + configfile
staje
raise RuntimeError('Server or group ' + sectionname + ' not found in ' + configfile)
Nie spację przed „:” w końcu za „czy” lub „za”, a nie umieszczać wielu instrukcji w tej samej linii, a bądź konsekwentny w kwestii umieszczania spacji wokół operatorów. Używać nazw zmiennych dla obiektów i trzymać
i
i
j
dla zmiennych indeks pętli (jak nasze mistrzowskie FORTRAN przodków):
for i in grouplist : servers+=getServers(i)
staje:
for section in grouplist:
servers += getServers(section)
Kontenery mogą być testowane pod kątem zawartości bez uzyskania ich długość:
while len(threadlist) > 0 :
zostaje
while threadlist:
i
if command.strip() == "" :
staje
if command.strip():
Dzielenie krotka nie jest zazwyczaj umieścić w nawiasie po stronie lewej oświadczenia, a logika komenda jest nieco zawiłe . Jeśli nie ma argumentów, to "" .join (...) Będzie pusty łańcuch:
(options,args) = parser.parse_args()
if options.verbose : print "floep 0.1"
command = " ".join(args)
if command.strip() == "" : parser.error('no command given')
staje
options, args = parser.parse_args()
if options.verbose:
print "floep 0.1"
if not args:
parser.error('no command given')
command = " ".join(args)
Python dla pętli niezwykły „else” klauzuli, która jest wykonywana wtedy, gdy pętla przechodzi przez wszystkie elementy bez a 'break':
for server in threadlist :
foundOne = False
if not server.isAlive() :
...snip...
foundOne = True
if not foundOne :
time.sleep(0.010)
staje
for server in threadlist:
if not server.isAlive():
...snip...
break
else:
time.sleep(0.010)
Getting listę linii, a następnie łącząc je razem jest trochę za długa zdyszany:
result = proc.readlines()
strresult = ''
for line in result : strresult+=line
self.result = strresult
staje
self.result = proc.read()
Korzystanie Biblioteka jest dobry, sprawdź podproces moduł, jest trochę bardziej aktualny.
Twoje typy danych są w porządku.
a dostaniesz mnóstwo innych anwsers :-)
Twoje komentarze są bardzo pomocne! Dziękuję bardzo .. – Evert