原标题:适合 Java开发者学习的Python 入门教程—文海思创

【文海思创讯】在Java文章频道里,我们大部分人应该对该语言都非常的了解,而且在该生态圈内至少已经呆了好几年了。这让我们有常规和专业的知识,但是也同时也让我们一些井蛙之见。 在Outside-In Java系列文章中,一些非Java开发人员会给我们讲讲他们对于我们这个生态圈的看法。

从哲学的角度来讲,Python几乎是与Java截然相反。它抛弃了静态类型和刚性结构,而是使用了一个松散的沙盒,在这里面你可以自由的做任何你想做的事情。也许Python是关于你能够做什么,而Java则是关于你可以做什么。

然而,两种语言都从C语言里吸取了大量的灵感。他们都是命令式语言,拥有块、循环、方法、赋值以及中缀算术(infix math)。两者都大量使用了类、对象、继承以及多态性。两者的功能异常都相当优秀。 两者都能自动管理内存。它们都是编译成可以运行在某种虚拟机上的字节码,尽管Python是透明的进行编译。 Python甚至从Java汲取了一些营养:比如基本库的 logging 和 unittest 模块分别是受到了log4j 和JUnit的启发。

鉴于以上的技术重叠,我认为Java开发人员在使用Python时理应感到宾至如归。 所以我来给你一些简单的Python介绍。 我会可以告诉你什么使得Python与Java不同,以及为什么我觉得这些差异有吸引力。 至少,您可能会发现一些有趣的想法使您回到Java生态系统。

(如果你想要一个Python教程,Python文档是一个很好的选择,而且这是从Python 3的角度编写的,Python 2的使用还是很常见的,它与Python 3有一些语法上的差异。

语法

我们先把语法弄明白。下面是 hello world入门程序:

print("Hello, world!")

嗯, 并不是很有启发性。 好吧,再来看一个函数,看看如何在一个文件中找到最常见的10个单词。在这里我取巧使用了标准库的 Counter 类型,但是它就是这么的好用。

from collections import Counter def count_words(path): words = Counter() with open(path)as f: for line in f: for word in line.strip().split(): words[word] += 1 forword, count in words.most_common(10): print(f"{word} x{count}")

Python由空格分隔。人们经常对此有强烈的意见。当我第一次看到它的时候,我 甚至认为这是异端邪说。现在,十多年过去了,这种写法似乎自然到我很难再回到大括号式的写法。如果你因此逃避,我甚至怀疑我可以说服你,不过我劝你至少暂时忽略一下它;实际上它并没有造成任何严重的问题,反而消除了一大堆的干扰。此外,Python开发人员从来不必争论{应该放在哪里。

除了审美上的差异之外,其他方面应该看起来很熟悉。我们有一些数字,一些赋值和一些方法调用。import 语句的工作方式有些不同,但它具有相同的“使这些内容可用”的一般含义。 Python的for循环与Java的for-each循环非常相似,只是少了点标点符号。函数本身使用def而不是类型进行分隔,但它正是按照你期望的方式工作:您可以使用参数调用它,然后返回一个值(尽管某些函数不返回值)。

只有两件事情是很不寻常的。 一个是 with 块,非常类似于Java 7的“try-with-resources” – 它保证文件在块的结尾处关闭,即使会抛出一个异常。 另一个是f“…”语法,这是一个相当新的功能,允许将表达式直接插入到字符串中。

就是这样! 你已经读了一些Python的内容。 至少,它不是来自一个完全不同的星球的语言。

动态类型

看这个例子可能很明显,但是Python代码里没有太多的类型声明。 变量声明上没有,参数或返回类型上没有,对象上也没有。 任何值在任何时候都可以是任何类型的。 我还没有显示一个类定义,所以这里只是一个简单的定义。

class Point: def __init__(self, x, y): self.x = x self.y = y def magnitude(self): return(self.x ** 2 + self.y ** 2) ** 0.5 point = Point(3, 4) print(point.x) # 3print(point.magnitude()) # 5.0

尽管x和y有并没有定义为属性,它们的存在是因为构造器中创建了它们。没有谁强制我必须传个整型参数,我也可以传小数和分数。

如果你以前只用过静态语言,这可能看起来一片混乱。类型是温暖的懒惰的以及令人满意的。他们保证···(好吧,或许不会)代码实际能工作(虽然有人不同意)。但是当你都不知道什么是正确类型的时候,你又怎么能依靠代码呢?

但是等等 – Java也没有这样的保证! 毕竟任何对象可能都是null,对吧? 实际上几乎从来没有一个正确类型的对象。返回搜狐,查看更多

责任编辑:

java和python自学教程_适合 Java开发者学习的Python 入门教程—文海思创相关推荐

  1. 适合零基础学python的书籍_适合零基础学习Python的书籍

    Python 编程语言是容易学习且功能强大的语言,只要会用微信聊天.懂一点英文单词即可学会.另外,面对同样一个功能,其他编程语言的代码行数可能是几十行,甚至几百行,而Python 语言只要几行代码即可 ...

  2. 安卓模拟器安装教程_安卓终端模拟器-安卓命令行入门教程系列(新手的福利)

    1,概述 终端模拟器类似于linux中的shell,是系统中的命令行模式.在桌面上能做的事情在命令行下也能做.比如 基本功能: A,打电话,发短信,打开网页 B,运行程序,安装卸载程序,改变程序安装位 ...

  3. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  4. python自学行_有编程基础Python自学行吗?

    有编程基础Python自学行吗?目前Python比较火爆,计算机基础越好对学习Python新的编程语言越有利.大学计算机专业C语言不是很好的入门语言,理解起来有些抽象.零基础学Python很容易上手, ...

  5. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

  6. 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学

    教育信息化 数码世界 P .203 基于培养思维能力的 Python 语言程序设计教学 周蓉   东莞市商业学校 摘要 :Python 语言有着简洁,高效和生态的三大特点,在中职学校引入计算机程序设计 ...

  7. ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...

    ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 原文:ArcGIS for Desktop入门教程_第八章_Deskto ...

  8. python 开发工具_「干货」推荐一整套 Python 开发工具

    文 | Brendan Maginnis 译 | EarlGrey 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项目,将节省大量时间并带来更快乐的编 ...

  9. Python灰帽子_黑客与逆向工程师的Python编程之道

    收藏自用 链接:Python灰帽子_黑客与逆向工程师的Python编程之道

最新文章

  1. 直播APP常用动画效果
  2. NLP(Natural Language Processing)
  3. Django使用心得(二)
  4. 典型案例 3:十分钟搭建弹性可扩展的 Web API
  5. ORM的问题第2部分–查询
  6. 华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”
  7. 永中word页码怎么从第二页开始_pdf如何在线转word?这样做,分分钟搞定pdf转word...
  8. html dom怎么写,HTML DOM 属性
  9. 在 Linux 虚拟机中手动安装或升级 VMware Tools
  10. Linux内存管理 -- /proc/{pid}/smaps讲解
  11. 如何简单的理解TDD与DDT
  12. nbu备份脚本 linux,NBU60网络备份大全之Linux设备管理(参考Word)
  13. RHadoop安装和使用
  14. windows win10调节外接显示器亮度
  15. sql2000 挂起 注册表
  16. yar php使用,PHP yar的使用简介
  17. 插入缺失InDel insertion deletion
  18. wps参考文献乱码。英文的行间距怎么调?
  19. CF869C The Intriguing Obsession 题解
  20. 腾讯云技术认证考试综述 腾讯云技术认证题库

热门文章

  1. Ribbon默认负载均衡算法之轮训算法原理解析
  2. 实验五 微控制器实验
  3. flash 停止开发维护 数字黑洞如何破解?
  4. Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧
  5. HTML5废弃的标签和属性
  6. spwm控制算法c语言实现,SPWM波形优化算法及其DSP实现
  7. CNN卷积神经网络实现手写数字识别(基于tensorflow)
  8. Swift 语言指南-Issue 46
  9. JAVA程序员BUG集锦
  10. 关于win操作系统引导模式:UEFI