作者:HelloGitHub-ProdesireHelloGitHub的《講解開源項(xiàng)目》系列,項(xiàng)目地址:https://github.com/HelloGitHub-Team/Article前言在前面三篇介紹argparse的文章中,我們?nèi)媪私饬薬rgparse的能力,相信不少小伙伴們都已經(jīng)摩拳擦掌,想要打造一個(gè)屬于自己的命令行工具。本文將以我們?nèi)粘9ぷ髦凶畛R姷膅it命令為例,講解如何使用argparse庫來實(shí)現(xiàn)一個(gè)真正可用的命令行程序。本系列文章默認(rèn)
系統(tǒng) 2019-09-27 17:52:36 1758
前言剛開始開發(fā)Web的時(shí)候,沒太在意隔離虛擬環(huán)境,用了系統(tǒng)的那一套,Python2.7版本是系統(tǒng)自帶的,雖說明年就結(jié)束了,但是現(xiàn)在開發(fā)都會(huì)有一套3.x以上的環(huán)境,即使你開發(fā)不注意,你部署的時(shí)候總歸是要隔離出來的。1.方便隔離,不同環(huán)境編寫測(cè)試2.方便遷移,pipfreeze到出包文件依賴,隨后提交管理和遷移都很方便virtualenv前提是你有兩套PythonmikejingdeMacBook-Pro:~MKJ$whichpython/usr/bin/py
系統(tǒng) 2019-09-27 17:52:34 1758
1.鎖:Lock(1次放1個(gè))同步鎖線程安全,多線程操作時(shí),內(nèi)部會(huì)讓所有線程排隊(duì)處理。如:list/dict/Queue線程不安全+人=>排隊(duì)處理。需求:a.創(chuàng)建100個(gè)線程,在列表中追加8b.創(chuàng)建100個(gè)線程v=[]鎖-把自己的添加到列表中。-在讀取列表的最后一個(gè)。解鎖以后鎖一個(gè)代碼塊:importthreadingimporttimev=[]lock=threading.Lock()deffunc(arg):lock.acquire()#鎖的區(qū)域---
系統(tǒng) 2019-09-27 17:52:33 1758
掃描服務(wù)器ip開放端口,用線程池ThreadPoolExecutor,i7的cpu可以開到600個(gè)左右現(xiàn)成,大概20s左右掃描完65535個(gè)端口,根據(jù)電腦配置適當(dāng)降低線程數(shù)#!/usr/local/python3.6.3/bin/python3.6#coding=utf-8importsocketimportdatetimeimportrefromconcurrent.futuresimportThreadPoolExecutor,waitDEBUG=Fa
系統(tǒng) 2019-09-27 17:52:19 1758
經(jīng)典的漢諾塔問題:這里我們可以利用遞歸的思想去做,遞歸中重要的三步,我們逐條來實(shí)現(xiàn):1、函數(shù)+分支結(jié)構(gòu)2、遞歸鏈條3、遞歸基例函數(shù)+分支結(jié)構(gòu):defhanoi(n,start,end,mid):globalcountif:else:這里我們可以定義一個(gè)函數(shù),里面的參數(shù)有:一共有n個(gè)圓盤,從start柱子移到end柱子,中間柱子為mid。這里定義一個(gè)全局變量來計(jì)算移動(dòng)的步驟數(shù),若為局部變量,會(huì)在函數(shù)內(nèi)部不斷初始化,所以需要定義全局變量。遞歸基例:ifn==1
系統(tǒng) 2019-09-27 17:52:07 1758
最近在工作中遇到一個(gè)問題,就是有一個(gè)功能希望在各種服務(wù)器上實(shí)現(xiàn),而服務(wù)器上的系統(tǒng)版本可能都不一樣,有的是CentOS6.x,有的是CentOS7.x。需要說明的一點(diǎn)是,CentOS6.x上的Python版本是2.6.x的,而CentOS7.x上的Python版本是2.7.x的,這意味著我要實(shí)現(xiàn)的功能要適配這兩種版本的系統(tǒng)。你可能會(huì)說,這有什么的,自己寫的時(shí)候,注意一下就好了。事情其實(shí)沒有那么容易,我要實(shí)現(xiàn)的功能是基于一個(gè)框架進(jìn)行定制,需要修改不少的框架代碼
系統(tǒng) 2019-09-27 17:51:50 1758
函數(shù)這么重要的東西自然少不了。那么在python中是怎么定義的呢?defcgg(name):print("haha%s"%name)def是定義的意思,而cgg是函數(shù)名,name是參數(shù)。當(dāng)然了,有了函數(shù)嗎,自然少不了函數(shù)的返回值。那么這里用的依然是return。defcgg(a,b):returna+b模塊一個(gè)小例子:importtimeprint(time.asctime())這個(gè)可以顯示現(xiàn)在的時(shí)間。而這個(gè)time就是一個(gè)模塊,包括之前的turtle也是
系統(tǒng) 2019-09-27 17:51:49 1758
1.交換變量值2.將一列表中的所有元素拼接成字符串3.查找list中最高頻率的值4.檢查兩個(gè)單詞是否是字謎(組成的字母和對(duì)應(yīng)數(shù)量一致)5.反轉(zhuǎn)字符串6.反轉(zhuǎn)列表7.轉(zhuǎn)置2維數(shù)組8.鏈?zhǔn)奖容^9.鏈?zhǔn)胶瘮?shù)調(diào)用10.復(fù)制列表11.DictionaryGet12.按值排序字典13.ForElse14.將列表轉(zhuǎn)換為逗號(hào)分隔的字符串15.合并字典16.list中的最小和最大索引17.從列表中刪除重復(fù)項(xiàng)查看英文原文:https://hackernoon.com/pyth
系統(tǒng) 2019-09-27 17:51:34 1758
es實(shí)現(xiàn)聚合es通過agg實(shí)現(xiàn)聚合,詳情可見es文檔有時(shí)候查詢es數(shù)據(jù)的時(shí)候可能需要實(shí)現(xiàn)多字段groupby的功能,例如:SELECTsum(item_count)fromAgroupbyfield1,field2,field3要實(shí)現(xiàn)多個(gè)維度的聚合,需要嵌套的agg查詢語句:{"query":{},"aggs":{"field1":{"terms":{"field":"field1","size":2147483647#設(shè)置一個(gè)大的分桶數(shù),防止一次統(tǒng)計(jì)不完
系統(tǒng) 2019-09-27 17:51:32 1758
基礎(chǔ)元素學(xué)習(xí)一門編程語言的時(shí)候,我最先考慮的事情就是如何操作值,值(value)在程序組可以是一個(gè)數(shù)字1,2,3,4,字符'hello,word'.我們使用變量來保存這些值。又把變量保存的值成為對(duì)象,計(jì)算機(jī)會(huì)給變量的對(duì)象和變量分配內(nèi)存空間。python使用的內(nèi)存分配方式成為引用語義或者對(duì)象語義,而像c語言使用的時(shí)值語義。接下來具體說明一下這兩種語義的區(qū)別。值語義:所謂值語義是指目標(biāo)對(duì)象由源對(duì)象拷貝生成,且生成后與源對(duì)象完全無關(guān),彼此獨(dú)立存在,改變互不影響。
系統(tǒng) 2019-09-27 17:51:31 1758