美文网首页晓我课堂
Java人学Python,从入门到放弃

Java人学Python,从入门到放弃

作者: 丨逐风者丨 | 来源:发表于2021-12-30 15:43 被阅读0次

    什么是 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 <iostream>
    
    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<String> 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,从入门到放弃

        本文链接:https://www.haomeiwen.com/subject/vvuvfrtx.html