2009-06-27 123 views
52

我有一個初級Java開發人員來自Java背景。作爲一家公司,我們現在將重點放在Python開發上(儘管Java中有一些遺留系統在徘徊)。從Java移植到Python

我四處尋找提示和資源來幫助過渡,並想知道如果你們這裏有一個新手有用的提示。

乾杯。

回答

94

讓他讀

Beginner's Guide to Python

Python for Java Programmers

考慮閱讀接受這個問題的答案指向這些東西給他看

Java -> Python列表中的某些功能,Java沒有

討論一般不同的方法

Python is Not Java

Java is Not Python, either

的部分並排的Java和Python代碼方面比較

兩篇文章

Python/Java A Side-by-Side

給他三分球如何/在哪裏可以找到類似於Java JDK API

The Python Language Reference

The Python Standard Library

Global Module Index

+1

多少我可以相信* Java不是Python不是Java *的東西?這真的很老,我確定事情已經改變了,但是有多少? – piegames 2017-02-06 17:28:01

4

我和你有些相似,因爲我對Java相當熟悉,但我剛剛開始使用Python。

Python tutorial是一個很好的開始。

Python Style Guide告訴你一切你需要知道你的代碼應該是什麼樣的(這在Python中很重要 - 空白是重要的)。

記住,iffor總是有後他們: :-)

6

我發現dive into python是對文化衝擊的最好辦法文檔,當從另一個更小的(當然是在開玩笑)語言轉換爲python時,肯定會發生這種情況。它幾乎沒有「Hello world」程序,但是它向你展示了Python的方式,比如說使用xml,編寫單元測試等等。這對我來說非常有用。

1

http://python.computersci.org/怎麼樣?

我認爲,有了這樣的指導,加上Python的成語指導(名單譜曲,等等),而一些Java代碼轉換爲Python作爲一個運動就足以

7

對於學生從純Java背景的並希望進行涉及一些基於Python的軟件的論文,我發現最好的方法是讓他們在閱讀完第一篇教程之後開始編寫代碼。

然後,我不時篩選他們的代碼,並建議那些聞到Java-ish的代碼片段,以遷移到更多Pythonic風格。

大多數情況下,這是

  • for循環,可以改變同list解析
  • 過度使用類,其中1)模塊,元組或字典的工作只是罰款或2)接口不明確地
  • if語句( 1<x && x<=y && y<10),其可被簡化( 1 < x <= y < 10
  • 改造的功能性,其可以從scipy或Python標準庫很容易地導入用於
  • 太複雜條件所需在bash的實驗,現在可以實現更加方便讀者在Python本身
25

  • 膠水代碼中,你是舒適任何語言的移動時,我會說的一個問題是失去的感覺的突然不知道有什麼作品!

    我會建議填充背景他們首先在以下方面:

    1. 你怎麼結構項目? (記得Java通常'每個文件和包'目錄'中的一個類; Python是否類似?)
    2. 你如何構建項目? (有什麼Python版本的ant,classpath等?)
    3. 你如何配置和部署你的代碼? (有什麼Python版本的Spring,guice等?)
    4. 哪裏是尋求幫助的好社區網站?
    5. 是一些最有用的第三方工具

    我認爲,語言的差異(像習慣lambdas)會很容易,並在開發自己的步伐走了幾個星期,但不理解什麼以上幾點會減慢熟悉過程。

  • 1

    借調oxbow_lakes,項目團隊怎麼樣文件他們的東西?
    儘管良好的文檔基本上與語言無關,但人們可以對文檔標準,工具, 瀏覽器發表評論嗎?
    良好的Python /良好的Java文檔的例子會很有用。

    0

    這裏已經有很多很好的建議,但我應該提請注意Python與Java的更具交互性。與Java不同,Python爲您提供了一種經典的「Read-Eval-Print-Loop」(REPL),可讓您快速進行語言實驗。與其猜測某個特定語句在現實生活中的表現如何,可以通過在解釋器中輸入表達式並立即查看結果來獲得答案。這是我向初學程序員推薦Python的原因之一,與其他語言的傳統編輯 - 編譯 - 運行週期相比,您可以獲得更多的即時反饋。

    特別是我使用ipython來進行與Python的交互。除此之外,它允許你鍵入'?'在任何標識符後獲得標識符的一些幫助後,它將提供比標準help()函數更多的信息,並且鍵擊較少。另外,爲了將學習Python變成遊戲,我親自通過解決難題PythonChallenge瞭解了我的很多Python。 (免責聲明:我不隸屬於PythonChallenge)。無可否認,解決這些挑戰不僅僅需要Python知識(小提示:做「查看源代碼」很多),但解決一個難題的願望會給你學習新的Python的動力。它至少爲我做了。祝你好運。

    1

    Python是可以被描述爲一種語言:

    「你能適應在 手掌你的手與 掛鉤一個巨大的包規則」。

    幾乎所有的python都遵循相同的簡單標準。一切都是可訪問,可改變和可調整的。有很少的語言級別的元素。

    舉例來說,len(data)內建函數。 len(data)只需檢查data.__len__()方法,然後調用它並返回值。這樣,len()可以在實現__len__()方法的任何對象上工作。


    開始通過學習類型和基本語法:

    1. 動態強類型語言
    2. 布爾,整數,浮點,字符串,列表,元組,字典,設置
    3. 陳述,縮進「一切都是物體」
    4. 基本功能定義

    然後移動到學習蟒蛇是如何工作的:

    1. 進口和模塊(很簡單)
    2. Python路徑(SYS。路徑)
    3. dir()功能
    4. __builtins__

    一旦你有一個如何適應拼在一起,回去介紹一些更高級的語言特徵的理解:

    1. 迭代
    2. 重寫像__len__(有這些噸)
    3. 列表理解nsions和發電機
    4. 類和對象(再次,一旦你知道一對夫婦的規則非常簡單)
    5. 蟒繼承規則

    一旦你有這些項的舒適水平(重點是什麼使他們Python的),看更多的具體事項:

    1. 線程在Python(注意全局解釋器鎖)
    2. 上下文管理
    3. 數據庫訪問
    4. 文件IO
    5. 插座
    6. 等...

    念念不忘的Python的禪宗(蒂姆·彼得斯)

    Beautiful is better than ugly. 
    Explicit is better than implicit. 
    Simple is better than complex. 
    Complex is better than complicated. 
    Flat is better than nested. 
    Sparse is better than dense. 
    Readability counts. 
    Special cases aren't special enough to break the rules. 
    Although practicality beats purity. 
    Errors should never pass silently. 
    Unless explicitly silenced. 
    In the face of ambiguity, refuse the temptation to guess. 
    There should be one-- and preferably only one --obvious way to do it. 
    Although that way may not be obvious at first unless you're Dutch. 
    Now is better than never. 
    Although never is often better than *right* now. 
    If the implementation is hard to explain, it's a bad idea. 
    If the implementation is easy to explain, it may be a good idea. 
    Namespaces are one honking great idea -- let's do more of those!