2009-06-27 76 views
52

Tôi đã bắt đầu cơ sở từ một nền Java. Là một công ty, chúng tôi hiện đang tập trung vào phát triển Python (mặc dù với một số hệ thống kế thừa trong Java treo xung quanh).Di chuyển từ Java sang Python

Tôi đang tìm kiếm các mẹo và tài nguyên để giúp chuyển đổi và tự hỏi liệu các bạn ở đây có bất kỳ mẹo hữu ích nào cho người mới không.

Chúc mừng.

Trả lời

94

Làm cho anh ta đọc

Beginner's Guide to Python

Python for Java Programmers

Cân nhắc đọc câu trả lời chấp nhận cho câu hỏi này đến điểm những điều này cho anh ta

Java -> Python danh sách một số tính năng java không có

Hai bài báo thảo luận về phương pháp tiếp cận khác nhau chung

Python is Not Java

Java is Not Python, either

Một bên một phần bằng cách so sánh bên của java và trăn đang

Python/Java A Side-by-Side

cho anh ta con trỏ như thế nào/nơi để tìm tài liệu tương tự như Java API JDK

The Python Language Reference

The Python Standard Library

Global Module Index

+1

bao nhiêu Tôi có thể tin tưởng * Java không phải là Python không phải là điều Java *? Nó thực sự cũ và tôi chắc chắn mọi thứ đã thay đổi, nhưng bao nhiêu? – piegames

4

Tôi đang ở một vị trí khá giống với bạn, vì tôi biết Java khá tốt nhưng tôi mới bắt đầu sử dụng Python.

Python tutorial là một nơi khá tốt để bắt đầu.

Python Style Guide cho bạn biết mọi thứ bạn cần biết về mã của bạn sẽ trông như thế nào (và điều này quan trọng trong Python - khoảng trắng là quan trọng).

Và hãy nhớ rằng iffor luôn luôn có một : sau khi họ :-)

6

tôi đã tìm thấy dive into python là phương thuốc tốt nhất chống lại những cú sốc văn hóa , điều đó chắc chắn sẽ xảy ra khi chuyển từ ngôn ngữ khác nhỏ hơn (chỉ đùa thôi, tất nhiên) sang python. Nó gần như không có các chương trình "Hello world", nhưng thay vào đó nó cho bạn thấy những cách python, nói, làm việc với xml, kiểm thử đơn vị viết và cứ thế. Nó cực kỳ hữu ích với tôi.

1

Còn khoảng http://python.computersci.org/ thì sao?

Tôi nghĩ rằng với một hướng dẫn như thế, cộng với tư vấn về thành ngữ Python (comps danh sách, và vân vân) trong khi chuyển đổi một số mã Java để Python như một bài tập sẽ đủ

7

Đối với sinh viên đến từ nền Java tinh khiết và muốn tiến hành luận án của họ liên quan đến một số phần mềm dựa trên Python tôi đã tìm ra cách tốt nhất là chỉ cho phép họ bắt đầu viết mã sau khi đọc một số hướng dẫn đầu tiên.

Thỉnh thoảng tôi kiểm tra mã của họ và đề xuất các đoạn mã có mùi quá Java-ish để di chuyển sang kiểu Pythonic hơn.

Thông thường đây là

  • cho-vòng có thể thay đổi vào danh sách comprehensions
  • qua sử dụng của các tầng lớp, trong đó 1) mô-đun, các bộ hoặc các từ điển chỉ làm việc tốt hoặc 2) giao diện không cần thiết một cách rõ ràng
  • điều kiện
  • quá phức tạp được sử dụng trong báo cáo if-(1<x && x<=y && y<10) có thể được đơn giản hóa (1 < x <= y < 10)
  • Sáng tạo lại chức năng, mà có thể dễ dàng nhập khẩu từ scipy hoặc libs chuẩn của Python đang
  • keo cho các thí nghiệm trong bash mà bây giờ có thể được thực hiện nhiều hơn nữa đọc thân thiện bằng Python bản thân
25

Tôi có thể nói rằng một trong những vấn đề khi di chuyển từ bất kỳ ngôn ngữ mà bạn đang thoải mái là cảm giác bị mất đột nhiên không biết cách hoạt động!

tôi sẽ tư vấn để điền vào nền cho họ đầu tiên về các nội dung sau:

  1. Làm thế nào để bạn cấu trúc dự án? (nhớ Java là 'thường' một lớp cho mỗi tập tin và trong gói 'thư mục'; là Python tương tự?)
  2. Làm thế nào để bạn xây dựng dự án? (các phiên bản Python của ant, classpath là gì?)
  3. Làm thế nào để bạn định cấu hình và triển khai mã của bạn? (các phiên bản Python của Spring, guice là gì?)
  4. Các trang web cộng đồng tốt để tìm trợ giúp ở đâu?
  5. một số các công cụ của bên thứ 3 hữu ích nhất

Tôi nghĩ rằng sự khác biệt ngôn ngữ (như nhận được sử dụng để lambdas) sẽ đủ dễ dàng và mất một vài tuần theo nhịp độ riêng của nhà phát triển nhưng không hiểu là gì các điểm trên sẽ làm chậm quá trình làm quen.

1

Seconding oxbow_lakes, các nhóm dự án tài liệu nội dung của họ như thế nào?
Mặc dù tài liệu tốt phần lớn độc lập với ngôn ngữ, mọi người có thể nhận xét về tiêu chuẩn tài liệu, công cụ, trình duyệt không?
Ví dụ về Python tốt/tài liệu Java tốt sẽ hữu ích.

0

Có nhiều lời khuyên tốt ở đây rồi, nhưng tôi nên chú ý đến bản chất tương tác hơn của Python so với Java. Python không giống như Java cung cấp cho bạn một "Read-Eval-Print-Loop" (REPL) cổ điển cho phép bạn thử nghiệm với ngôn ngữ một cách nhanh chóng. Thay vì đoán như thế nào một tuyên bố cụ thể sẽ thực hiện trong cuộc sống thực, câu trả lời có thể có bằng cách gõ biểu thức vào thông dịch viên và nhìn thấy kết quả ngay lập tức. Đây là một trong những lý do tôi khuyên bạn nên Python để bắt đầu lập trình, bạn sẽ nhận được nhiều phản hồi ngay lập tức hơn so với chu trình biên dịch-biên dịch truyền thống của các ngôn ngữ khác.

Cụ thể là tôi sử dụng ipython cho phần lớn tương tác của tôi với Python. Trong số những thứ khác, nó cho phép bạn gõ '?' sau bất kỳ số nhận dạng nào để nhận một số trợ giúp về số nhận dạng, cung cấp cho bạn nhiều thông tin hơn chức năng help() chuẩn và ít tổ hợp phím hơn.

Ngoài ra, để biến việc học Python thành một trò chơi, cá nhân tôi đã học được rất nhiều Python của tôi bằng cách giải các câu đố tại PythonChallenge. (Disclaimer: Tôi không liên kết với PythonChallenge). Phải thừa nhận rằng, giải quyết những thách thức đòi hỏi nhiều hơn chỉ là kiến ​​thức Python (gợi ý nhỏ: làm "xem nguồn" rất nhiều), nhưng mong muốn giải quyết một câu đố sẽ cho bạn động lực để học bit mới của Python. Nó đã làm cho tôi ít nhất. May mắn nhất.

1

Python là một ngôn ngữ có thể được mô tả như:

"quy tắc bạn có thể phù hợp trong lòng bàn tay của bạn với một chiếc túi khổng lồ của móc".

Gần như mọi thứ trong python đều tuân theo cùng một tiêu chuẩn đơn giản. Mọi thứ đều có thể truy cập được, có thể thay đổi và chỉnh sửa được. Có rất ít yếu tố cấp độ ngôn ngữ.

Lấy ví dụ, hàm dựng sẵn len (dữ liệu). len(data) hoạt động đơn giản bằng cách kiểm tra phương thức data.__len__(), sau đó gọi nó và trả về giá trị. Bằng cách đó, len() có thể hoạt động trên bất kỳ đối tượng nào thực hiện phương thức __len__().


Bắt đầu bằng cách tìm hiểu về các loại và cú pháp cơ bản:

  1. động mạnh Typed Ngôn ngữ
  2. bool, int, float, string, danh sách, tuple, dict, thiết
  3. báo cáo, thụt lề, "mọi thứ đều là đối tượng"
  4. định nghĩa chức năng cơ bản

Sau đó chuyển sang tìm hiểu về python làm việc như thế nào:

  1. nhập khẩu và các module (thực sự đơn giản)
  2. con đường python (sys.đường dẫn)
  3. các dir() chức năng
  4. __builtins__

Một khi bạn có một sự hiểu biết làm thế nào để phù hợp với mảnh với nhau, quay trở lại và bao gồm một số tính năng ngôn ngữ cao cấp hơn:

  1. lặp
  2. ghi đè như __len__ (có rất nhiều trong số này)
  3. danh sách comprehe nsions và máy phát
  4. lớp và các đối tượng (một lần nữa, thực sự đơn giản khi bạn biết một vài quy tắc)
  5. quy tắc python thừa kế

Và một khi bạn có một mức độ thoải mái với các mặt hàng này (với trọng tâm là những gì làm cho chúng pythonic), nhìn vào các mặt hàng cụ thể hơn:

  1. Threading trong python (chú ý Interpreter Khóa toàn cầu)
  2. nhà quản lý bối cảnh
  3. cơ sở dữ liệu truy cập
  4. file IO
  5. socket
  6. vv ...

Và không bao giờ quên The Zen của Python (bởi Tim Peters)

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! 
Các vấn đề liên quan