3 函式 遞迴 模組

2022-08-21 06:27:13 字數 2658 閱讀 7376

將網域名稱和ip分為三段,網域名稱前、本網域名稱、網域名稱後,寫到新配置檔案中,

當檢測新配置檔案沒錯誤時,備份配置檔案,將新配置檔案重新命名為配置檔名,重啟伺服器

import shutil

def fetch(domain):

find_domain = "backend %s" % domain

is_find_domain = false

server_list =

with open('haproxy.conf','r') as r:

for line in r:#前面排除錯誤的,最後是正確的

curr = line.strip()

#print curr

if curr == find_domain:

#print true

is_find_domain = true

elif is_find_domain and curr.startswith("backend"):

break

elif is_find_domain and curr:

return server_list

def add(domain,server):

server_list = fetch(domain)

print server_list

if not server_list:#如果列表為空,則新增至最後

write_domain = "\nbackend %s\n" % domain

write_server = "\t%s\n" % server

with open('haproxy.conf','a') as a:

a.write(write_domain)

a.write(write_server)

pass

elif server not in server_list:

find_domain = "backend %s" % domain

is_find_domain = false

with open('haproxy.conf','r') as r,open('haproxy.conf-new','w') as w:

for line in r:

curr = line.strip()

# print curr

if curr == find_domain:#如果找到,則將該網域名稱及其所屬ip寫入新配置檔案

# print true

is_find_domain = true

w.write("%s\n" % find_domain)

for server_temp in server_list:

w.write("\t%s\n" % server_temp)

elif is_find_domain and curr.startswith("backend"):

is_find_domain = false

w.write(line)

elif curr not in server_list and curr:

w.write(line)

pass

#分三段,網域名稱前、本網域名稱、網域名稱後

#備份配置檔案

#新增過後,若檢查新配置語法正確,則將新配置檔案中的內容寫到配置檔案中

shutil.copy('haproxy.conf-new',"haproxy.conf")

def addnum(a,b):

return a + b

print map(addnum,[1,2,3],[4,5,6])

def reduce1(a,b):

return a + b

print reduce(reduce1,[1,2,3],10)

def filter1(a):

if a:

return true

print filter(filter1,[4,5,0,,'',6])

#斐波那契數列 0 1 1 2 3 5 求和大於1000時的位數

def feiboone(num):

if num <= 1:

return num

else:

return feiboone(num - 1) + feiboone(num - 2)

def feibo_pos(all,sum=0,pos=-1):

while sum < all:

pos += 1

sum += feiboone(pos)

#print pos

return pos

all = 100000

print feibo_pos(all)

相關功能的**集合

.py檔案、資料夾__init__.py

ossys

json、pickle

subprocess執行系統命令、checkoutoutput、popen

paramikoe

3 函式和模組

coding utf 8 author liuyb 模組 import sysimport reimport array import queue import copy dir 檢視函式所有的功能 def fuc dir return dir sys coding utf 8 函式模組學習 定義函...

Prthon3 遞迴函式

定義 1 在乙個函式裡再呼叫這個函式本身 2 有明確的結束條件 遞迴函式的最大深度 1 理論上,官方文件說明是1000 2 實際測試是998 檢測方法 def foo n print n n 1 foo n foo 1 3 最大深度可以修改,修改命令 不建議修改 import sys sys.set...

Python3 遞迴函式

1.必須有乙個明確的結束條件 2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 3.遞迴效率不高,遞迴層次過多會導致棧溢位 在計算機中,函式呼叫是通過棧 stack 這種資料結構實現的,每當進入乙個函式呼叫,棧就會加一層棧幀,每當函式返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以,...