python-for-javadeveloper.html 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="generator" content="Asciidoctor 2.0.15">
  8. <title>给Java开发者的Python入门指南</title>
  9. <link rel="stylesheet" href="css/site.css">
  10. <link href="css/custom.css" rel="stylesheet">
  11. <script src="js/setup.js"></script><script defer src="js/site.js"></script>
  12. </head>
  13. <body class="article toc2 toc-left"><div id="banner-container" class="container" role="banner">
  14. <div id="banner" class="contained" role="banner">
  15. <div id="switch-theme">
  16. <input type="checkbox" id="switch-theme-checkbox" />
  17. <label for="switch-theme-checkbox">Dark Theme</label>
  18. </div>
  19. </div>
  20. </div>
  21. <div id="tocbar-container" class="container" role="navigation">
  22. <div id="tocbar" class="contained" role="navigation">
  23. <button id="toggle-toc"></button>
  24. </div>
  25. </div>
  26. <div id="main-container" class="container">
  27. <div id="main" class="contained">
  28. <div id="doc" class="doc">
  29. <div id="header">
  30. <h1>给Java开发者的Python入门指南</h1>
  31. <div id="toc" class="toc2">
  32. <div id="toctitle">Table of Contents</div>
  33. <span id="back-to-index"><a href="index.html">Back to index</a></span><ul class="sectlevel1">
  34. <li><a href="#_features">1. features</a></li>
  35. <li><a href="#_控制语句">2. 控制语句</a>
  36. <ul class="sectlevel2">
  37. <li><a href="#_generator">2.1. generator</a></li>
  38. <li><a href="#_查看类型">2.2. 查看类型</a></li>
  39. <li><a href="#_数据类型">2.3. 数据类型</a></li>
  40. <li><a href="#_下划线开头">2.4. 下划线开头</a></li>
  41. <li><a href="#_init_与_call">2.5. __init__与 __call__</a></li>
  42. <li><a href="#_列表与数组">2.6. 列表与数组</a></li>
  43. <li><a href="#_list_vs_tuple">2.7. list vs tuple</a></li>
  44. <li><a href="#_类">2.8. 类</a></li>
  45. <li><a href="#_打印对象">2.9. 打印对象</a></li>
  46. <li><a href="#_对象比较">2.10. 对象比较</a></li>
  47. <li><a href="#_import">2.11. Import</a></li>
  48. <li><a href="#_依赖管理">2.12. 依赖管理</a></li>
  49. </ul>
  50. </li>
  51. </ul>
  52. </div>
  53. </div>
  54. <div id="content">
  55. <div class="sect1">
  56. <h2 id="_features"><a class="anchor" href="#_features"></a>1. features</h2>
  57. <div class="sectionbody">
  58. <div class="paragraph">
  59. <p>Python无需声明类型
  60. Python
  61. Python的Iterable对应Java的Iterable
  62. Python中的generator对应Java的Stream
  63. Python使用 <code>for in</code> 进行循环</p>
  64. </div>
  65. </div>
  66. </div>
  67. <div class="sect1">
  68. <h2 id="_控制语句"><a class="anchor" href="#_控制语句"></a>2. 控制语句</h2>
  69. <div class="sectionbody">
  70. <div class="sect2">
  71. <h3 id="_generator"><a class="anchor" href="#_generator"></a>2.1. generator</h3>
  72. </div>
  73. <div class="sect2">
  74. <h3 id="_查看类型"><a class="anchor" href="#_查看类型"></a>2.2. 查看类型</h3>
  75. <div class="paragraph">
  76. <p>Python使用type()函数查看对象类型,Java使用.getClass()</p>
  77. </div>
  78. </div>
  79. <div class="sect2">
  80. <h3 id="_数据类型"><a class="anchor" href="#_数据类型"></a>2.3. 数据类型</h3>
  81. <div class="paragraph">
  82. <p>布尔类型表示为bool,而不是Java的boolean</p>
  83. </div>
  84. <div class="paragraph">
  85. <p>bool类型的值为首字母大写的True或False</p>
  86. </div>
  87. <div class="paragraph">
  88. <p>isinstance(obj, type) 同Java的instanceOf()</p>
  89. </div>
  90. </div>
  91. <div class="sect2">
  92. <h3 id="_下划线开头"><a class="anchor" href="#_下划线开头"></a>2.4. 下划线开头</h3>
  93. <div class="paragraph">
  94. <p>__foo__: 这只是一个约定,是 Python 系统使用不会与用户名冲突的名称的一种方式</p>
  95. </div>
  96. <div class="paragraph">
  97. <p>_foo: 这只是一个约定,是程序员指示变量是私有的(无论在 Python 中是什么意思)的一种方式</p>
  98. </div>
  99. <div class="paragraph">
  100. <p>__foo: 这具有真正的意义:解释器用 _classname__foo 替换这个名称,以确保该名称不会与另一个类中的相似名称重叠。</p>
  101. </div>
  102. </div>
  103. <div class="sect2">
  104. <h3 id="_init_与_call"><a class="anchor" href="#_init_与_call"></a>2.5. __init__与 __call__</h3>
  105. </div>
  106. <div class="sect2">
  107. <h3 id="_列表与数组"><a class="anchor" href="#_列表与数组"></a>2.6. 列表与数组</h3>
  108. <div class="paragraph">
  109. <p>Python也支持列表(list)类型和数组(array)类型</p>
  110. </div>
  111. <div class="paragraph">
  112. <p>列表是由一系列按特定顺序排列的元素组成,可以将任何东西加入列表中,其中的元素之间没有任何关系;</p>
  113. </div>
  114. <div class="paragraph">
  115. <p>Python中的列表(list)用于顺序存储结构。它可以方便、高效的的添加删除元素,并且列表中的元素可以是多种类型。</p>
  116. </div>
  117. <div class="paragraph">
  118. <p>数组也就是一个同一类型的数据的有限集合。</p>
  119. </div>
  120. <div class="paragraph">
  121. <p>列表list与数组array的相同点是都可以根据索引来取其中的元素</p>
  122. </div>
  123. <div class="paragraph">
  124. <p>列表list与数组array的不同点:</p>
  125. </div>
  126. <div class="ulist">
  127. <ul>
  128. <li>
  129. <p>列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样;</p>
  130. </li>
  131. <li>
  132. <p>相对于array,列表会使用更多的存储空间</p>
  133. </li>
  134. </ul>
  135. </div>
  136. <div class="paragraph">
  137. <p>实际开发中很少使用array,需要数组的场景中更多地会使用Numpy的数组</p>
  138. </div>
  139. <div class="paragraph">
  140. <p>Python中的List时间复杂度与Java的ArrayList一样</p>
  141. </div>
  142. <div class="paragraph">
  143. <p>列表获取子列表比较简单可以使用list[0:2]的方式</p>
  144. </div>
  145. </div>
  146. <div class="sect2">
  147. <h3 id="_list_vs_tuple"><a class="anchor" href="#_list_vs_tuple"></a>2.7. list vs tuple</h3>
  148. <div class="paragraph">
  149. <p>list与tuple都可以存储多个不同类型的数据,但tuple是不可变的。</p>
  150. </div>
  151. <div class="paragraph">
  152. <p>编写Java代码时有时希望方法能返回彼此关联的多个数据(例如返回一个人的性别和年龄),一种方式是将这些数据封装为一个实体类,
  153. 另一种方式是返回一个集合或者数组,这些方法实际上都不及tuple更合适。</p>
  154. </div>
  155. </div>
  156. <div class="sect2">
  157. <h3 id="_类"><a class="anchor" href="#_类"></a>2.8. 类</h3>
  158. <div class="paragraph">
  159. <p>Python所有变量都有对应的类,比如int类,没有Java中所谓的基础类型</p>
  160. </div>
  161. <div class="paragraph">
  162. <p>没有访问限定符,依靠方法名实现,.以<em>开头的变量(\</em>var<em>特殊变量除外) 不能直接用名字访问; 以_开头的变量暗示不要去访问,但不限制直接访问. 以</em>开头的变量其实可以用_className__var来访问</p>
  163. </div>
  164. <div class="paragraph">
  165. <p>Python支持多继承,多重继承时, 若多个父类中有相同的方法, 则排在前的父类将覆盖后面的,则越靠前越”主类”. 即使主类的方法源自父类的父类, 也依然优先.</p>
  166. </div>
  167. <div class="paragraph">
  168. <p>同样object类是所有类的父类</p>
  169. </div>
  170. </div>
  171. <div class="sect2">
  172. <h3 id="_打印对象"><a class="anchor" href="#_打印对象"></a>2.9. 打印对象</h3>
  173. <div class="paragraph">
  174. <p>定义 <code>__str__</code> 函数,详情参考 <a href="https://docs.python.org/reference/datamodel.html#object.__str__">官方文档</a></p>
  175. </div>
  176. <div class="paragraph">
  177. <p>id(object)查看对象的内存地址</p>
  178. </div>
  179. </div>
  180. <div class="sect2">
  181. <h3 id="_对象比较"><a class="anchor" href="#_对象比较"></a>2.10. 对象比较</h3>
  182. <div class="paragraph">
  183. <p>内存地址相等和值相等</p>
  184. </div>
  185. </div>
  186. <div class="sect2">
  187. <h3 id="_import"><a class="anchor" href="#_import"></a>2.11. Import</h3>
  188. </div>
  189. <div class="sect2">
  190. <h3 id="_依赖管理"><a class="anchor" href="#_依赖管理"></a>2.12. 依赖管理</h3>
  191. </div>
  192. </div>
  193. </div>
  194. </div>
  195. <div id="footer">
  196. <div id="footer-text">
  197. Last updated 2024-03-18 05:44:42 UTC
  198. </div>
  199. </div>
  200. <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.3/highlight.min.js"></script>
  201. <script>
  202. if (!hljs.initHighlighting.called) {
  203. hljs.initHighlighting.called = true
  204. ;[].slice.call(document.querySelectorAll('pre.highlight > code')).forEach(function (el) { hljs.highlightBlock(el) })
  205. }
  206. </script>
  207. <script src="https://utteranc.es/client.js"
  208. repo="pxzxj/articles"
  209. issue-term="title"
  210. label="utteranc"
  211. theme="github-light"
  212. crossorigin="anonymous"
  213. async>
  214. </script>
  215. </div>
  216. </div>
  217. </div>
  218. </body>
  219. </html>