Java人学Python,从入门到放弃

什么是 Python?

Python 是一门流行的编程语言。它由荷兰数学和计算机科学研究学会的 吉多·范罗苏姆(Guido van Rossum)创建,并于 1990 年发布。它用于:

  • Web 开发(服务器端)
  • 软件开发
  • 数学
  • 系统脚本
  • 数据分析
  • 人工智能

Python 可以做什么?

  • 可以在服务器上使用 Python 来创建 Web 应用程序。
  • Python 可以与软件一起使用来创建工作流。
  • Python 可以连接到数据库系统。它还可以读取和修改文件。
  • Python 可用于处理大数据并执行复杂的数学运算。
  • Python 可用于快速原型设计,也可用于生产就绪的软件开发。

为何选择 Python?

  • Python 适用于不同的平台(Windows、Mac、Linux、Raspberry Pi 等)。
  • Python 有一种类似于英语的简单语法。
  • Python 的语法允许开发人员用比其他编程语言更少的代码行编写程序。
  • Python 在解释器系统上运行,这意味着代码可以在编写后立即执行。这也意味着原型设计可以非常快。
  • Python 可以以程序方式、面向对象的方式或功能方式来处理。

===== 以上是关于Python的简单介绍 =====

Hello World,他来了

在Java打印Hello World

public class MyClass {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

你需要了解:

  • 面向对象的基本知识
  • 静态函数
  • 参数
  • 不要忘了打分号和大括号
  • 方法返回值
  • 数组

在 C++里面打印Hello World

#include 

int main() {
    std::cout << "Hello World!";
    return 0;
}

你需要了解:

  • 如何导入标准库
  • 函数返回值
  • 不要忘了打分号
  • 数据类型

在Python里面打印Hello World

print("Hello World!")

你需要了解:

  • 了解什么?我现在是Python程序员了!

再加上这几行

import numpy as np
import pandas as pd
import torch
  • 编程简直太简单了,我会数据科学和深度学习了!
    好了,你现在已经是Python高级工程师了。

那么,Python的广告你刷到了吗?

最近无论是刷D音还是逛W博、PY圈,铺天盖地的Python广告,这个真的很厉害值得一学吗?下面我们将从一个Java程序员的身份来一探究竟。

下面是关于Python的民间传说,切勿对号入座。

铺天盖地宣传python,这种情况,基本可以认定是因为教Python比较容易。
要是换成C++这种(没几个人敢说自己真懂C++)语言,你甚至都没法培训出足够水平的讲师,那显然就没必要为C++做广告了。
目前行业形式来看,培训机构的讲师工资总体水平并不高,至少是明显低于程序员的。由于教课确实收入相对偏低,但凡一个技术真的特别特别能赚钱,那些真有本事的都忙着赚钱去了,哪有工夫出来讲课啊。
反观之,如果一个技术有大量的老师出来教课,那很可能说明它的赚钱能力并没有那么靠谱,以至于教课比自己在软件公司敲代码来得更划算。
再比如,网上教人炒股的特别特别特别的多,然而很多教人炒股的大抵都是自己盘面亏成狗,然后靠教课荐股赚得盆满钵满的。

为什么还是有很多人冲的头破血流也要学Python呢?
1.噱头:人工智能、自动驾驶、大数据分析、网络爬虫,一大堆热门技术、高薪职业都沾边。
2.甜头:通过调几个库,就能把数据爬下来,就能做人脸识别,成就感满满。
并且某地区传出编程纳入考试,在社会发酵发酵,最后铺天盖地打广告,让你觉得大家都在学。
万事具备,最后你就成了培训机构的韭菜。

Python is the best language

那么学Python真的没用吗?当然有用!但广告那种建议你别碰。

首先,因为Python被选为人工智能的编程语言,那么这里就有一个商机了,人人都知道人工智能是未来趋势发展之一,这时候就可以无限吹大Python了,其实只要是稍微渗透些IT行业的程序员都知道:C++才是人工智能的核心语言,大数据主要还是Java,Python只是个胶水语言。

其次,办公操作如果你有学过VBA的话就知道谁更好用了,显然是VBA更好,哦哦还有就是Python连一个小学三年级的学生都能学会,简单易学,加上人性贪婪(广告说工资超级高!)与懒惰(广告说超级简单实用!)商机啊,利用人性的弱点就可以骗钱了!!!合法经营,没偷没抢,学完找不到工作的话就是你没认真学,竞争激烈,加油之类的话,呵呵呵→_→老师,Python这么好,你怎么不去找那份超级高工资的工作呢?!

学Python,除非你的专业是生物之类的,只是把Python当做辅助工具,否则别光调用库,还要看看库的源码,看看他们是怎么实现。

搞Python的基本可以分为两类人:数据分析和人工智能

一般人做不了人工智能,大多数人都是奔着做数据分析去的,像爬虫、可视化、数据采集这种。不得不说Python在这方面确实很优秀,毕竟是万能的胶水语言嘛,库很多很方便,拓展性和嵌入型都很不错,更重要的是比较简单,应该说非常简单,当做一个支撑性的工具是很不错的。
所以对于这些Python广告,还是要结合自身的需求:想做个程序员,Java、PHP、C++哪个不比Python强?想做个数据分析师,Python可以当做支撑工具,但这不是重点。想去搞人工智能,深度学习的,这种大神不用我建议了,You are good!

当然,你非要学习Python的话我也拦不住你,毕竟行行出状元,也许你就是那个状元呢?对吧。物以稀为贵,东西多了也就贱了。

什么人比较适合学Python?

Python是一个适合初学者,见效短平快的语言,有大量的库支持从爬虫到各类识别的各种功能,十分适合快速构建应用程序,特别适合非计算机专业极速入门做一些快应用。
但是这个语言在写大型程序方面,不光是效率不行,是根本很难写出严格而优雅的程序。严格的语法,严格的检查,在大型程序开发领域是非常重要的,但是这些Python都没有,并且Python都不需要编译!!!

对非职业程序员来说,可以便利你现有的工作(自动化办公之类),和提升自己能力(毕竟是趋势,将来社会,不会编程基本算半文盲)。

补充一点,想学Python,先网上找资料自学,花钱很少。自学不会的,想做程序员工作的,就必须报班了,报班就报线下班,线上班和自己看视频自学没区别。线下班有好的,但大部分都是坑爹骗钱的要注意甄别。

当然我们也不能光从程序员的角度来看Python,那太狭隘了。很多科研人员、搞算法的,用Python实现算法原型并测试,效率很高。Python肯定是一门优秀的语言,但是被太多不良培训机构搞臭了。

还是那句话,广告里面的Python培训都不要去碰。

Python

既然你已经看到这里了,那么我们就来简单认识认识Python吧。

以下内容基于Python 3.7.4 编写,如与新版本有差异,请参考新版本文档。
如果你是一名纯新手,送你一个好东西:https://www.w3school.com.cn/python/index.asp

Python安装

1.MacOS 系统自带Python,可在Terminal内输入 python 或者 python3 查看版本(分别表示2.x和3.x),如果没有python3,建议自行安装python3
2.Windows安装Python3请查看官方文档,传送门:https://docs.python.org/zh-cn/3/using/windows.html

注:如果是初学,建议直接上最新版本,没有必要再去看Python2了

Python开发工具

IntelliJ IDEA全家桶之 PyCharm 传送门:https://www.jetbrains.com/zh-cn/pycharm/

1.语法

Python不需要用分号(;)或者大括号({})来区分代码和代码块,换行和缩进是Python区分代码块的方式,Java人表示一脸懵逼。

  1. 缩进空格数量可以为任意数量,至少一个
  2. 同一代码块缩进必须一样,否则报错
著名的Python缩进

2.类型

Python 没有类型,通过一段代码理解一下:

Java

String str = "Hello world";

str 是变量名称,String(字符串) 是变量的类型,确定类型后,str只能接受String类型的值,如果你这样写:

str = 123;

程序编译时就会报错,并告诉你不能把数字类型的值赋给一个字符串类型的变量

Python

str = "Hello World"
str = 123
str = 1.0

Python这样写是完全没有问题的,这就是没有类型,一个变量可以随赋值改变类型。这就是Python的不严谨性。为什么Python可以这样写,Java就不行呢?是Python更高级吗?看图说话:


Java与Python为同一变量赋值对比

Java:在声明变量的时候,会为其分配一个内存空间,无论如何修改,这个内存空间不会改变。
Python:在声明变量的时候,也会为其分配一个内存空间,在修改值的时候,原内存空间销毁,重新分配一个新的内存空间。虽然你的感觉是在修改原变量,其实Python每次都是为你新建了一个变量,所以变量的类型可以随意改变。

3.开始你的第一个Python程序

print("Hello world")

恭喜你,你的第一个Python程序已经完成了。

这里Java人需要注意一下,Python不需要class,也不需要main方法,你只需要在yourfile.py文件里写上这句代码,然后点击IDE的run按钮,程序就能运行了。Amazing

4.变量

Java

String str = "我是字符串";
int i = 1;// 整数
float f = 1.0;// 普通浮点数
double d = 1.0;// 高精度浮点数
boolean b = true;// 布尔值

Python

str = "我是字符串"
i = 1  # 整数
f = 1.0  # 普通浮点数
b = True  # 布尔值

注:Python的注释是使用#号

5.方法(函数)

Java

public static void main(String[] args) {
    showMsg("Hello Java!!");
}

private static void showMsg(String msg) {
    System.out.println("msg = " + msg);
}

Python

def showMsg(msg):
    print("msg = " + msg)


showMsg("Hello Python")

# 输出
msg = Hello Python

6.集合数据

Python 中有四种集合数据类型:

  1. 列表(List)是一种有序和可更改的集合。允许重复的成员。
  2. 元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。
  3. 集合(Set)是一个无序和无索引的集合。没有重复的成员。
  4. 词典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员。可以理解成Java的HashMap,其实更像JSON。
# 我是列表
mList = ["A", "B", "C", "B", "A"]
# 我是元组
mTuple = ("A", "B", "C", "B", "A")
# 我是集合(无序且自动去重)
mSet = {"A", "B", "C", "B", "A"}
# 我是词典(我感觉我是JSON)
mDictionary = {
    "java": {
        "name": "高斯林",
        "year": 1995
    },
    "python": {
        "name": "吉多·范罗苏姆",
        "year": 1990
    }
}
# usage
print(mDictionary.get("java").get("name"))

# 输出
高斯林

7.if elif else

Java

private static void testEqual() {
    int a = 200;
    int b = 66;
    if (a > b) {
        System.out.println("a > b");
    } else if (a == b) {
        System.out.println("a = b");
    } else {
        System.out.println("a < b");
    }
}

Python

a = 200
b = 66
if a > b:
    print("a > b")
elif a == b:
    print("a = b")
else:
    print("a < b")

# 输出
a > b

1.Java的逻辑代码必须写到方法体内
2.Python可以写到任意你想写的地方

8.for循环

Java

private static void readList() {
    List list = Arrays.asList("A", "B", "C", "B", "A");
    for (String letter : list) {
        System.out.println("letter is " + letter);
    }
}

// 输出
letter is A
letter is B
letter is C
letter is B
letter is A

Python

mList = ["A", "B", "C", "B", "A"]
for letter in mList:
    print("letter is " + letter)

# 输出
letter is A
letter is B
letter is C
letter is B
letter is A

9.递归

Python 也接受函数递归,这意味着定义的函数能够调用自身。
递归是一种常见的数学和编程概念。它意味着函数调用自身。这样做的好处是可以循环访问数据以达成结果。
开发人员应该非常小心递归,因为它可以很容易地编写一个永不终止的,或者使用过量内存或处理器能力的函数。但是,在被正确编写后,递归可能是一种非常有效且数学上优雅的编程方法。

例子:使用递归打印99乘法表

def calc99Tab(row, col):
    if row > 1:
        if col > 1:
            calc99Tab(row, col - 1)
        else:
            calc99Tab(row - 1, row - 1)
    result = row * col
    if result < 10:
        # 增加空格输出,使表格对齐
        msg = " {}x{}={}"
    else:
        msg = "{}x{}={}"
    print(msg.format(col, row, result), end="  ")
    if col == row:
        print("")


# 打印99乘法表
calc99Tab(9, 9)

# 输出:
 1x1=1  
 1x2=2   2x2=4  
 1x3=3   2x3=6   3x3=9  
 1x4=4   2x4=8  3x4=12  4x4=16  
 1x5=5  2x5=10  3x5=15  4x5=20  5x5=25  
 1x6=6  2x6=12  3x6=18  4x6=24  5x6=30  6x6=36  
 1x7=7  2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49  
 1x8=8  2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64  
 1x9=9  2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81  

如果你是一名在职程序员,并且对Python有浓厚的兴趣,建议利用业余时间自学,技多不压身,祝你早日成为全栈工程师,出任CTO,迎娶白富美,走上人生巅峰。

The END

你可能感兴趣的:(Java人学Python,从入门到放弃)