pythonmd
㈠ python 中self.repos.populateSack(mdtype='filelists')什麼意思其中這個mdtype所起什麼作用
不可以,python裡面初始化指定參數的形式來的,相當於key-value
㈡ 新手如何快速學習Python
python 非常適合初學者入門。相比較其他不少主流編程語言,有更好的可讀性,因此上手相對容易。自帶的各種模塊加上豐富的第三方模塊,免去了很多「重復造輪子」的工作,可以更快地寫出東西。配置開發環境也不是很復雜,mac 和 linux 都內置了 python。另外據我所知,不少學校也開始使用 python 來教授程, 最好能找到一個已經會 python 的人。問他一點學習規劃的建議,然後在遇到卡殼的地方找他指點。這樣會事半功倍。但是,要學會搜索,學會如何更好地提問。沒人願意幫你寫作業或是回答「一搜便知」的問題。
如果想要零基礎視頻資料可以加我企鵝號一六二二中間四七九最後四三五免費分享
然而,別人的經驗未必能完全復制。比如我沒有說的是,在自學 python 之前,我已在學校系統學習過其他的編程語 對於完全沒有編程經驗的初學者,在學習 python 的時候,面對的不僅僅是 python 這門語言,還需要面臨「編程」的一些普遍問題,比如:
從零開始,不知道從何入手,找了本編程教材發現第二章開始就看不懂了;
缺少計算機基礎知識,被一些教程略過的「常識性」問題卡住;
遇到問題不知道怎麼尋找 遇到問題不知道怎麼尋找解決方案; 語法之後不知道拿來做什麼,學完一陣子就又忘了;
缺少數據結構、設計模式等編程基礎知識,只能寫出小的程序
首先要有信心。雖然可能你看了幾個小時也沒在屏幕上打出一個三角形,或者壓根兒就沒能把程序運行起來。但相信我,幾乎所有程序員一開始都是這么折騰過來的。
選擇合適的教程。有些書很經典,但未必適合你,可能你寫了上萬行代碼之後再看它會比較好。
寫代碼,然後寫更多的代碼。光看教程,編不出程序。從書上的常式開始寫,再寫小程序片段,然後寫完整的項目。
除了學習編程語言,也兼顧補一點計算機基礎,和英語
㈢ 如何編寫高質量的python程序
寫出規范的代碼是寫出高質量代碼的第一步,並且有助於培養仔細的習慣。
為了培養規范寫代碼的習慣,可以安裝flake8這個工具,它不僅可以檢查代碼風格是否符合官方建議(PEP8),而且還能找出潛在的隱患(用Pyflakes做語法分析),更逆天的是還能檢測到你有些函數寫的太復雜(代碼圈復雜度)了,更更逆天的是可以設置git commit之前必須通過這些檢查。
當然具體操作需要根據自己的項目進行一些定製,比如可以忽略E501,W293。
空白項目模版
好的開始是成功的一半,寫python代碼就從pyempty開始吧。
在github上看一下那些經典的項目,web.py,flask, pep8,他們的項目目錄都很規范,綜合借鑒了一些項目的特點,我寫了這個pyempty項目。
1.README.md 這里寫你項目的簡介,quick start等信息,雖然distutils要求這個文件沒有後綴名,但github上如果後綴是.md的話可以直接轉換成html顯示。
2.ChangeLog.txt 該文件存放程序各版本的變更信息,也有一定的格式,參考web.py的ChangeLog.txt
3.LICENES.txt 這里存放你項目使用的協議,不要編寫自己的協議。
4.requirements.txt 如果你的項目需要依賴其它的python第三方庫,在這里一行一個寫出來,可能pip install的時候能自動幫你安裝
5.setup.py 安裝腳本,後面詳細介紹
6.docs 裡面存放你的項目文檔,如概要設計,詳細設計,維護文檔,pydoc自動生成的文檔等,強烈推薦大家使用MarkDown格式編寫文檔
7.src 這個目錄里存放項目模塊的主要代碼,盡量不要把模塊目錄直接放到根目錄,模塊代碼目錄可以在setup.py里指定的
8.tests 這個目錄存放所有單元測試,性能測試腳本,單元測試的文件確保以test_做前綴,這樣distutils會自動打包這些文件,並且用python -m unittest discover -s ./ -p 'test_*.py' -v 可以直接執行這些測試
單元測試
Martin Fowler:"在你不知道如何測試代碼之前,就不該編寫程序。而一旦你完成了程序,測試代碼也應該完成。除非測試成功,你不能認為你編寫出了可以工作的程序。"
我們有很多理由不寫單元測試,歸根結底是懶,雖然代碼大全上說:
大部分研究都發現,檢測比測試的成本更小。NASA軟體工程實驗室的一項研究發現,閱讀代碼每小時能夠檢測出來的缺陷要比測試高出80%左右(Basili and Selby 1987)。後來,IBM的一項研究又發現,檢查發現的一個錯誤只需要3.5個工作時,而測試則需要花費15-25個工作時(Kaplan 1995)。
但是單元測試還是讓別人相信你的代碼有很高質量的最有力證據。
好了,請詳細閱讀:
深入python3.0: 單元測試-2.x也適用
Unit testing framework 不完整中文版
文檔
敏捷開發不是提倡什麼文檔也不寫,沒有文檔就沒有傳承和積累,輪崗或新人接手任務就會遇到很大的麻煩,所以我決定每個項目最少要寫以下文檔:
1.nalysis.model.md 概要設計文檔,不同於README.md文件,該文檔應該寫於項目開發之前,把項目有哪些功能,大概分幾個模塊等項目整體概述信息寫一下。
2.design.model.md 詳細設計文檔,不用太詳細,至少把項目依賴哪些東西,誰依賴這個項目,重要演算法流程描述,代碼整體結構等寫出來。
3.maintain.md 維護文檔,這個我覺得最重要,你的服務都記錄哪些日誌,需要監控哪些業務指標,如何重啟,有哪些配置項等,沒這些東西,你的項目很難運維。
上面這些文檔都是項目全局性的文檔,不適合寫在docstring或注視里,所以要有單獨的文檔。
打包
python有專門的模塊打包系統distutils,你可以用這套機制把你的代碼打包並分發到Pypi上,這樣任何人都可以用pip或easy_install安裝你的模塊。
如果你開發的是內部項目,還可以用mypypi架設私有的pypi,然後把項目的大的版本更新發布到內部的pypi上,配置管理人員和運維人員可以很方便的從pypi上拉取代碼安裝到測試環境或生產環境。
發布大版本的時候要給版本命名及編寫ChangeList,可以參考Git Pro的相關章節,主要記住以下幾個命令。
git tag -a v0.1 -m 'my test tag' #給大版本命名,打Tag
git describe master #給小版本命名,Git將會返回一個字元串,由三部分組成:最近一次標定的版本號,加上自那次標定之後的提交次數,再加上一段SHA-1值
git shortlog --no-merges master --not v0.1 #生成版本簡報,ChangeList
python有自己的打包機制,所以一般不要用git archive命令。
當然大版本管理用pypi管理比較合適,小的bug fix,緊急上線等好多公司都是用git直接從生產環境拉代碼更新,因為git,svn等可以很方便的撤銷某次更新,回滾到某個位置。
如何管理好大版本上線和小的緊急上線,我還沒理清思路,歡迎大家參與討論。
關於打包,請閱讀如下鏈接:
Python 打包指南
深入Python3.0:打包 Python 類庫
python打包:分發指定文件
出自:http://developer.51cto.com/art/201209/356603.htm
㈣ python有哪些模塊 md5
python的md5模塊使用非常簡單,包括以下幾個函數:
md5.new([arg])
返回一個md5對象,如果給出參數,則相當於調用了update(arg)
md5.updte(arg)
用string參數arg更新md5對象
md5.digest()
返回16位元組的摘要,由傳給update的string生成,摘要沒有ascii字元
md5.hexdigest()
以16進制的形式返回摘要
代碼示例:
01.#!/usr/bin/python
02.import
sys
03.import
md5
04.
05.str=sys.argv[1]
06.key =
md5.new()
07.key.update(str)
08.print
key.hexdigest()
09.str=sys.argv[1]
保存代碼為md.py
1.[fengyj@fengyj
python]$ chmod +x md.py
2.[fengyj@fengyj
python]$ ./md.py fengyajie
3.
㈤ python用到CMD的幾個文件夾操作命令
1.進入I盤
c:>I:
I:>2.打開文件夾
I:>cd新建文件夾
I:新建文件夾>返回上級目錄
I:新建文件夾>cd..
I:>
3.返回盤符
I:新建文件夾123>cd
I:>4.新建/刪除文件夾
c:>md123在C盤下新建一個123的文件夾
c:>rd123刪除C盤下123的文件夾5.打開文件
打開123.txt文件
c:>123.txt6.命令行下查看文件命令行下查看123.txt的內容
格式:
I:>type123.txt
0000
0000
I:>7.刪除文件刪除123.txt文件
格式:
I:>del123.txt
I:>創建加密碼文件夾
c:>md123..
刪除
c:>rd123..
㈥ python一段小函數解釋
一般我們常見的網址後綴(suffix)是 cn,或者net,或者com,你說的就是域名的後綴列表
後面代碼就是用dot把域名分隔開,
比如www..com 被拆分成[ 『www','','com']
經過for循環後,到com的時候,進入if分支,而前面走的是else分支,所以可以看到sdomain的變化如下:
遇到www, sdomain包含['www']
遇到 sdomain被替換為['']
遇到com,走if分支,append,變成 ['','com']
然後join後就變成 .com
不過不知道這么些的理由,要是我,就用正則表達式,或者直接保留後面兩個部分
domain=url.split('.')
if domain[-1] in suffixs:
return string.join(domain[-2:],'.')
else:
return None #not valid domain
㈦ 有沒有老師了解Python用於Meta分析的工具包
Python在科學計算領域,有兩個重要的擴展模塊:Numpy和Scipy。其中Numpy是一個用python實現的科學計算包。包括:
一個強大的N維數組對象Array;
比較成熟的(廣播)函數庫;
用於整合C/C++和Fortran代碼的工具包;
實用的線性代數、傅里葉變換和隨機數生成函數。
SciPy是一個開源的Python演算法庫和數學工具包,SciPy包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。其功能與軟體MATLAB、Scilab和GNU Octave類似。
Numpy和Scipy常常結合著使用,Python大多數機器學習庫都依賴於這兩個模塊,繪圖和可視化依賴於matplotlib模塊,matplotlib的風格與matlab類似。Python機器學習庫非常多,而且大多數開源,主要有:
1.scikit-learn
scikit-learn是一個基於SciPy和Numpy的開源機器學習模塊,包括分類、回歸、聚類系列演算法,主要演算法有SVM、邏輯回歸、樸素貝葉斯、Kmeans、DBSCAN等,目前由INRI資助,偶爾Google也資助一點。
項目主頁:
https://pypi.python.org/pypi/scikit-learn/
http://scikit-learn.org/
https://github.com/scikit-learn/scikit-learn
2.NLTK
NLTK(Natural Language Toolkit)是Python的自然語言處理模塊,包括一系列的字元處理和語言統計模型。NLTK常用於學術研究和教學,應用的領域有語言學、認知科學、人工智慧、信息檢索、機器學習等。NLTK提供超過50個語料庫和詞典資源,文本處理庫包括分類、分詞、詞干提取、解析、語義推理。可穩定運行在Windows, Mac OS X和Linux平台上.
項目主頁:
http://sourceforge.net/projects/nltk/
https://pypi.python.org/pypi/nltk/
http://nltk.org/
3.Mlpy
Mlpy是基於NumPy/SciPy的Python機器學習模塊,它是Cython的擴展應用。包含的機器學習演算法有:
l回歸
least squares,ridge regression, least angle regression,elastic net, kernel ridge regression,support vector machines(SVM),partial least squares(PLS)
l分類
linear discriminant analysis(LDA), Basicperceptron, Elastic Net,logistic regression, (Kernel) Support Vector Machines (SVM), Diagonal Linear Discriminant Analysis (DLDA), Golub Classifier, Parzen-based, (kernel) Fisher Discriminant Classifier, k-nearest neighbor, Iterative RELIEF, Classification Tree, Maximum Likelihood Classifier
l聚類
hierarchical clustering, Memory-saving Hierarchical Clustering,k-means
l維度約減
(Kernel)Fisher discriminant analysis(FDA), Spectral Regression Discriminant Analysis (SRDA), (kernel)Principal component analysis(PCA)
項目主頁:
http://sourceforge.net/projects/mlpy
https://mlpy.fbk.eu/
4.Shogun
Shogun是一個開源的大規模機器學習工具箱。目前Shogun的機器學習功能分為幾個部分:feature表示,feature預處理,核函數表示,核函數標准化,距離表示,分類器表示,聚類方法,分布,性能評價方法,回歸方法,結構化輸出學習器。
SHOGUN的核心由C++實現,提供Matlab、R、Octave、Python介面。主要應用在linux平台上。
項目主頁:
http://www.shogun-toolbox.org/
5.MDP
The Molar toolkit for Data Processing (MDP),用於數據處理的模塊化工具包,一個Python數據處理框架。
從用戶的觀點,MDP是能夠被整合到數據處理序列和更復雜的前饋網路結構的一批監督學習和非監督學習演算法和其他數據處理單元。計算依照速度和內存需求而高效的執行。從科學開發者的觀點,MDP是一個模塊框架,它能夠被容易地擴展。新演算法的實現是容易且直觀的。新實現的單元然後被自動地與程序庫的其餘部件進行整合。MDP在神經科學的理論研究背景下被編寫,但是它已經被設計為在使用可訓練數據處理演算法的任何情況中都是有用的。其站在用戶一邊的簡單性,各種不同的隨時可用的演算法,及應用單元的可重用性,使得它也是一個有用的教學工具。
項目主頁:
http://mdp-toolkit.sourceforge.net/
https://pypi.python.org/pypi/MDP/
㈧ 這個python程序的入口在哪
可以自己定義入口(main)
在代碼最後面加上
if__name__=='__main__':
M=Macro()#實例化類文件
M.ExecuteBlock()#調用類文件的方法
這個實際上類似於C 或者 java 的main()
假設這個文件叫做mac.py
命令行里執行
pythonmac.py
#就會執行if__name__=='__main__':下面的代碼
㈨ python 如何在一個字典中截取其中的一段
# 文字版:
# -*- coding: utf-8 -*-
# 輔助函數:把月和日轉化成小數格式,方便比較。比如六月三日就轉化成6.3
def md2f(m,d):
return (m) + (d)*0.1
# 這個函數用來截取需要的時間段
def getDateRange(dates,startMonth,startDate,endMonth,endDate):
rangedDates = {} #先定義一個空字典,過會把符合要求的值都添進去
for k in dates.keys(): #用一個loop,把原本字典里所有的內容都檢查一遍
y = int(k.split("/")[0]) #從「年/月/日「的格式裡面提取出y=年、m=月、d=日
m = int(k.split("/")[1])
d = int(k.split("/")[2])
# 進行比較,如果月、日符合所給定的時間段,那就把這一項添到新字典里去
if md2f(startMonth,startDate) < md2f(m,d) < md2f(endMonth,endDate):
rangedDates[k] = dates[k]
return rangedDates # 返回新字典,這裡面就是所有符合時間段的日期了。
sampleDates = {"1984/2/10":1,"1984/5/15":9,"1984/6/16":3,"1984/9/12":6,"1984/11/12":8,"1985/8/1":7}
print getDateRange(sampleDates,6,1,10,1) #調用函數,找到六月一號到十月一號之間的日期
㈩ python的readme怎麼寫
了解一個項目,恐怕首先都是通過其Readme文件了解信息。如果你以為Readme文件都是隨便寫寫的那你就錯了。github,oschina Git gitcafe的代碼託管平台上的項目的Readme.MD文件都是有其特有的語法的。稱之為Markdown語法。基本規則如下:
Markdown 語法速查表
1 標題與文字格式
標題
# 這是 H1 <一級標題>
## 這是 H2 <二級標題>
###### 這是 H6 <六級標題>
文字格式
**這是文字粗體格式**
*這是文字斜體格式*
~~在文字上添加刪除線~~
2 列表
無序列表
* 項目1
* 項目2
* 項目3
有序列表
1. 項目1
2. 項目2
3. 項目3
* 項目1
* 項目2
3 其它
圖片
![圖片名稱](mage.png)
鏈接
[鏈接名稱]()
引用
> 第一行引用文字
> 第二行引用文字
水平線
***
代碼
`<hello world>`
代碼塊高亮
```ruby
def add(a, b)
return a + b
end
```
表格
表頭 | 表頭
------------- | -------------
單元格內容 | 單元格內容
單元格內容l | 單元格內容
如果直接記語法,那似乎困難了些。這里OneCoder推薦兩個Markdown的編輯器。