python之路day4_python之路day4
1很多人的努力都是淺嘗輒止的
2.很多牛逼的人還在努力
3.半年會后牛逼的轉身
冒泡算法:for n in range(1,len(li)):
for m in range(len(li) -n) :
num1 = li[m]
num2 = li[m+1]
if num1 > num2:
temp = li[m]
li[m] = num2
li[m+1] = temp
print li
ha 配置思路#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
#查,加,刪
#定義讀的函數
import os,json
def fetch(backend):
#打開文件ha
with open('ha') as obj:
flag = False
fetch_list = []
#按行讀取文件,每次只讀取一行
for line in obj:
#建個空列表,為后續將backend 下的值存儲用
#如果這行內容等于 backend 參數值,就設置個flage值為True,認為找到了要找的代碼塊,然后跳出這個循環,讀取代碼塊的下一行內容
if line.strip() == "backend %s" % backend:
flag = True
continue
#如果這個flag = True 說明已找到代碼塊,然后將這行內容加入到空列表fetch_list
if flag and line.strip():
fetch_list.append(line.strip())
#如果這個flag = True 說明已找到代碼塊并且又遇到了backend開頭的代碼,則說明后面的內容已無關,不需要繼續循環
if line.strip().startswith("backend") and flag:
break
return fetch_list
def add_ha(dict_info):
#獲取要添加的 backend值
backend_title = dict_info.get("backend")
current_title = "backend %s" % backend_title
#要添加的backend 的server記錄
server_record_dict = dict_info.get("record")
current_record = "server %s %s weight %s maxconn %s" %(server_record_dict.get("server"),server_record_dict.get("server"),server_record_dict.get("weight"),server_record_dict.get("maxconn"))
#獲取當前這個backend記錄下的server列表
serverlist = fetch(backend_title)
#判斷這個新增backend 是否存在
if serverlist:
#增加server記錄
#打開舊文件,并打開新文件
with open('ha') as read_obj,open('ha_new',w) as write_obj:
#設置是否已經讀取的標識
flag = False
#設置是否寫入新記錄的標識
has_write_flage = False
#讀取文件,按行讀取
for line in read_obj:
#如果讀取行到了要寫入的backend行,就設置讀取標識為Ture,并跳出本次循環,讀取下一行
if line.strip() == current_title:
flag = True
continue
#如果已讀取到寫入行,并且讀取到了新的backend記錄,就設置
if flag and line.strip().startswith("backend"):
flag = False
if flag:
if not has_write_flage:
for new_line in serverlist:
write_obj.write("%s %s \n" %(" "*8,new_line))
else:
has_write_flage=True
else:
write_obj.write(line)
else:
#增加backend并添加記錄
#打開文件寫入新記錄,同時打開舊文件和新文件
with open('ha') as read_obj,open('ha_new','w') as write_obj:
for line in read_obj:
write_obj.write(line)
write_obj.write("\n")
write_obj.write(current_title+"\n")
write_obj.write("%s %s \n" %(" "*8,current_record) )
#os.rename('ha','ha.bak')
#os.rename('ha_new','ha')
s = '{"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}'
read_input=json.loads(s)
add_ha(read_input)
fetch("www.oldboy.org")
lambda? 簡化函數
學習條件運算時,對于簡單的 if else 語句,可以使用三元運算來表示
#處理簡單函數
#自動return
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
def func1(arg):
return arg+1
result = func1(100)
print result
func2 = lambda a:a+1
result = func2(1000)
print result
map函數
l1=[1,2,3]
l2=[3,4,5]
l3=[4,5,6]
print map(lambda a1,a2,a3:a1+a2+a3,l1,l2,l3)
filter() 過濾只符合條件的數據
l4 = [1,44,55,22,11,33]
print filter(lambda a:a>33,l4)
reduce()? 對于序列內所有元素進行累計操作
l5 = [1,2,3,4,5,6,7,8,9,10]
print reduce(lambda a1,a2:a1+a2,l5)
map 所有元素操作
filter 過濾,獲取指定元素集合
reduce ,累計操作
yield
記住上一次操作,下次在執行時,繼續執行#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
'''
def func1():
yield 1
yield 2
yield 3
for i in func1():
print i
'''
def mrange(arg):
seed = 0
while True:
seed = seed +1
if seed >10 :
return
else:
yield seed
for i in mrange(10):
print i
裝飾器:
裝飾器是函數,只不過該函數可以具有特殊的含義,裝飾器用來裝飾函數或類,使用裝飾器可以在函數執行前和執行后添加相應操作。
場景:如果一個python程序已經有500個函數了,但突然老板要求我們要增加登陸驗證,只有通過驗證的才能執行,而且不要用戶更改調用方式。
#!/usr/bin/env python
#-*- coding:utf-8 -*-
# powered by xiaobing
def wrapper(func):
if login("xiaobing"):
return func
else:
print '未認證'
def login(user):
if user == 'xiaobing':
return True
else:
print 'error name '
@wrapper
def home():
print 'home'
@wrapper
def shop():
print 'shop'
def over():
print 'over'
#home = wrapper(home)
home()
shop()
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的python之路day4_python之路day4的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5 测研制,360发布国内首个H
- 下一篇: websocket python爬虫_p