『壹』 python學哪個好
Python有Python2和Python3,很多人都會糾結選擇哪個版本進行學習?這兩個版本是不兼容的,而且差異比較大,需要多方面具體分析來決定。
從基本設計上來說,Python3的目的就是沒有代碼兼容的包袱情況下進行改進了Python,相對於Python2來說,Python3有很多的改進,更加容易理解,也更加合理。
而且從應用的角度上來說,pypy、web框架、科學計算包、scrapy等常用模塊都是支持Python3的,但是部分比較陳舊的庫已經沒有人進行維護,也就沒有支持Python3.
當我們進行日常使用的情況之下,可以直接寫Python2\3兼容的代碼,相對於來說,Python2對於舊庫的支持更多一些,至少在學界還是比較流行的。
『貳』 python3有什麼比較好的語法分析器
Pycharm, Eclipse,Ipython,其實自帶的IDLE shell也可以設置的
『叄』 推薦好用的Python編輯器
推薦一:PyCharm
PyCharm 是 JetBrains 開發的 Python IDE。PyCharm用於一般IDE具備的功能,比如, 調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制……另外,PyCharm還提供了一些很好的功能用於Django開發,同時支持Google App Engine,更酷的是,PyCharm支持IronPython。
推薦二:Vim
曾有人開玩笑說,如果生成一段隨機字元串,有人回答給他一個Vim 編輯器就可以了。Vim 雖然使用門檻高,但是一旦你學會了,寫代碼的效率杠杠的,Vim是高級文本編輯器,旨在提供實際的Unix 編輯器』Vi』功能,支持更多更完善的特性集。Vim不需要花費太多的學習時間,一旦你需要一個無縫的編程體驗,那麼就會把 Vim 集成到你的工作流中。這是黑客最喜歡的編輯器之一。
推薦三:Eclipse with PyDev
Eclipse 曾今是非常流行的 IDE,而且已經有了很久的歷史。雖然現在慢慢地被 jetbrains 家族替代了,但是瘦死的駱駝比馬大,Eclipse with Pydev 允許開發者創建有用和互動式的 Web 應用。PyDev 是 Eclipse 開發 Python 的 IDE,支持 Python,Jython和 IronPython 的開發。
推薦四:Sublime Text
Sublime Text 是開發者中最流行的編輯器之一,多功能,支持多種語言,而且在開發者社區非常受歡迎。Sublime 有自己的包管理器,開發者可以使用TA來安裝組件,插件和額外的樣式,所有這些都能提升你的編碼體驗。雖然作為收費軟體,良心的是你不需要付費也能正常使用,只不過是不是給你彈出一個購買的窗口,有錢了還是要支持一下正版軟體。
推薦五:Visual Studio Code
Visual Studio Code (VSCode)為MS所開發的code editing tool,免費且開源,並支持Windows,Mac OS,Linux。VSCode像是精簡版的Visual Studio,升級版的Sublime。VSCode由於其非常的輕量,因此使用過程中非常的流暢,對於用戶不同的需要,可以自行下載需要的擴展(Extensions)來安裝。對於配置Python開發環境來說,相比於Sublime,配置起來更加容易。VSCode配置完後的環境是可以直接進行可視化的Debug,再也不用打各種print或者用pdb調試命令了,回歸到Visual Studio里F10和F11。
推薦六: Atom
Atom是由 GitHub 的程序員們打造的稱為「屬於21世紀」的代碼編輯器。它開源免費跨平台(支持 Windows、Mac、Linux 三大桌面平台),並且整合 GIT 並提供類似 SublimeText 的包管理功能,作為一個現代的代碼編輯器,Atom 支持各種編程語言的代碼高亮(HTML / CSS / Javascript / PHP / Python / C / C++ / Objective C / Java / JSON / Perl / coffeescript / Go / Sass / YAML / Markdown 等等)、 與大多數其他編輯器相比,Atom的語言支持已經算是覆蓋非常全面了。另外,它的代碼補全功能(也叫Snippets) 也非常好用,你只需輸入幾個字元即可展開成各種常用代碼,可以極大提高編程效率。
推薦七: Emacs
GNU Emacs 是可擴展,自定義的文本編輯器,甚至是更多的功能。Emacs 的核心是 Emacs Lisp 解析器,但是支持文本編輯。如果你已經使用過 Vim,可以嘗試一下 Emacs。
推薦八:Spyder
Spyder (前身是 Pydee) 是一個強大的互動式 Python 語言開發環境,提供高級的代碼編輯、交互測試、調試等特性,支持包括 Windows、Linux 和 OS X 系統。Spyder是Anaconda科學計算工具中默認的開發工具,做數據分析、搞機器學習的人喜歡這個工具。
9. Thonny
Thonny是基於python內置圖形庫tkinter開發出來的支持多平台(windows,Mac,Linux)的python IDE,支持語法著色、代碼自動補全、debug等功能,如果你正在尋找一種「輕量級」的python IDE,那麼可以試一試Thonny。
10. Wing
Wingware 的 Python IDE 兼容 Python 2.x 和 3.x,可以結合 Django, matplotlib, Zope, Plone, App Engine, PyQt, PySide, wxPython, PyGTK, Tkinter, mod_wsgi, pygame, Maya, MotionBuilder, NUKE, Blender 和其他 Python 框架使用。Wing 支持測試驅動開發,集成了單元測試,nose 和 Django 框架的執行和調試功能。Wing IDE 啟動和運行的速度都非常快,支持 Windows, Linux, OS X 和 Python versi。
『肆』 python做數據分析 用哪個好
推薦Rice大學的那門python課,Rice大學的課程總共有3門,現在貌似拆解成6門了;每門課8周時間,按照由淺入深的順序來的。第一門課是Python基礎,介紹了Python的基礎語法;第二門課是計算基礎,介紹了一些稍微復雜一點的語法和數據處理;第三門課是演算法思考,介紹了一些常用的演算法;並且還用到了numpy, matlabplot庫等。
『伍』 有沒有好的 python 混淆器 推薦一個
代碼混淆,其實很簡單。原理就是查找、替換而已。市面上有很多混淆工具,最好是在混淆工具的基礎上,自己再寫一下,二次混淆。演算法也不難。如果需要全局混淆,以及自動混淆,那麼就復雜一些了,需要再加上詞法分析和語法分析。
如何使用:
1,首先得安裝Python。
2,把這個下面這個 confuse.py 文件,復制目標文件夾。
3,更改 raw_name_list 列表裡的字元串。改成你想混淆的變數名或者類名方法名。
4,運行pythonconfuse.py 即可混淆該文件夾下的.cs文件。
這段代碼其實還是很簡單的,只是為大家說明一下混淆思想。如果想更方便的使用,需要再加入一些詞法分析、語法分析的演算法。
代碼如下:
#! /usr/bin/env python
#coding=utf-8
import hashlib
import random
import os
###############################
# Describe : 混淆Unity腳本文件
# D&P Author By: 常成功
# Create Date: 2014-11-25
# Modify Date: 2014-11-25
###############################
#想混淆的變數/方法名
raw_name_list = ["function_1", "function_2", "var_1", "var_2",]
#混淆後的變數/方法名
new_name_list = []
#隨機可選的字母表
alphabet = ["a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z",
]
#生成新的變數名
def create_new_name() :
m = hashlib.md5()
#生成隨機變數名
for raw_name in raw_name_list:
m.update(raw_name)
#生成一個16位的字串
temp_name = m.hexdigest()[0:16]
#合法名稱校驗
#強制以字母作為變數/方法名的開頭
if temp_name[0].isdigit():
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
#不能重名
while(1):
if temp_name in new_name_list :
initial = random.choice(alphabet)
temp_name = initial + temp_name
temp_name = temp_name[0:16]
else:
new_name_list.append(temp_name)
break
#混淆文件
def confuse_file(path_filename):
file_content = ""
#讀文件內容
f = file(path_filename)
# if no mode is specified, 'r'ead mode is assumed by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break
#混淆
name_index = 0
for raw_name in raw_name_list:
the_new_name = new_name_list[name_index]
line = line.replace(raw_name, the_new_name)
name_index += 1
file_content += line
f.close()
#重寫文件
f = file(path_filename, 'w')
f.write(file_content)
f.close()
#遍歷當前目錄下的所有.cs文件
def confuse_all():
#獲取當前目錄
dir = os.getcwd()
for root, dirs, filename in os.walk(dir):
for file in filename:
path_filename = os.path.join(root, file)
if path_filename.endswith('.cs'):
confuse_file(path_filename)
print "Confuse File: ", path_filename
if __name__=="__main__":
create_new_name()
confuse_all()
#列印一下混淆的情況.
#如果用文本保存起來, 那麼以後可以反混淆, 還原文件
print "Start Confuse ...."
for j in range(0, len(raw_name_list)) :
print raw_name_list[j] , " --> " , new_name_list[j]
print "Confuse Complete !"