java和python自学教程_适合 Java开发者学习的Python 入门教程—文海思创
原标题:适合 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 入门教程—文海思创相关推荐
- 适合零基础学python的书籍_适合零基础学习Python的书籍
Python 编程语言是容易学习且功能强大的语言,只要会用微信聊天.懂一点英文单词即可学会.另外,面对同样一个功能,其他编程语言的代码行数可能是几十行,甚至几百行,而Python 语言只要几行代码即可 ...
- 安卓模拟器安装教程_安卓终端模拟器-安卓命令行入门教程系列(新手的福利)
1,概述 终端模拟器类似于linux中的shell,是系统中的命令行模式.在桌面上能做的事情在命令行下也能做.比如 基本功能: A,打电话,发短信,打开网页 B,运行程序,安装卸载程序,改变程序安装位 ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- python自学行_有编程基础Python自学行吗?
有编程基础Python自学行吗?目前Python比较火爆,计算机基础越好对学习Python新的编程语言越有利.大学计算机专业C语言不是很好的入门语言,理解起来有些抽象.零基础学Python很容易上手, ...
- docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四
作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...
- 高中生学python培养思维能力_基于培养思维能力的Python语言程序设计教学
教育信息化 数码世界 P .203 基于培养思维能力的 Python 语言程序设计教学 周蓉 东莞市商业学校 摘要 :Python 语言有着简洁,高效和生态的三大特点,在中职学校引入计算机程序设计 ...
- ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...
ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 原文:ArcGIS for Desktop入门教程_第八章_Deskto ...
- python 开发工具_「干货」推荐一整套 Python 开发工具
文 | Brendan Maginnis 译 | EarlGrey 在开始一个新的Python项目时,很容易不做规划直接进入编码环节.花费少量时间,用最好的工具设置项目,将节省大量时间并带来更快乐的编 ...
- Python灰帽子_黑客与逆向工程师的Python编程之道
收藏自用 链接:Python灰帽子_黑客与逆向工程师的Python编程之道
最新文章
- 直播APP常用动画效果
- NLP(Natural Language Processing)
- Django使用心得(二)
- 典型案例 3:十分钟搭建弹性可扩展的 Web API
- ORM的问题第2部分–查询
- 华云数据升级发布“信创云基座“ 用“全芯全栈”支持“信创强国”
- 永中word页码怎么从第二页开始_pdf如何在线转word?这样做,分分钟搞定pdf转word...
- html dom怎么写,HTML DOM 属性
- 在 Linux 虚拟机中手动安装或升级 VMware Tools
- Linux内存管理 -- /proc/{pid}/smaps讲解
- 如何简单的理解TDD与DDT
- nbu备份脚本 linux,NBU60网络备份大全之Linux设备管理(参考Word)
- RHadoop安装和使用
- windows win10调节外接显示器亮度
- sql2000 挂起 注册表
- yar php使用,PHP yar的使用简介
- 插入缺失InDel insertion deletion
- wps参考文献乱码。英文的行间距怎么调?
- CF869C The Intriguing Obsession 题解
- 腾讯云技术认证考试综述 腾讯云技术认证题库