Python简介

Posted 风流 少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python简介相关的知识,希望对你有一定的参考价值。

一:简介

Python是一种现代化弱类型 脚本语言(运行一句,解析一句,而不是编译语言,所以速度相对较慢),其特点是语法简洁优雅、入门简单、应用场景广泛。

  • 弱类型是指在声明变量时不需要指定数据类型。
  • 语法简洁是指在语法上有更多的简写形式

二:应用场景

2.1 应用场景

  • 大数据
  • 网路爬虫(Scrapy)
  • 人工智能(TransorFlow、PyTorch、Karas)
  • 自动化测试 Selenium
  • 自动化运维
  • 科学计算(NumPy、SciPy、Matplotlib、pandas)
  • web应用开发(Django、Flask)
  • GUI桌面软件(tkinter、PyQT)
  • 机器学习
  • 游戏开发

2.2 受欢迎程度和运行效率

TIOBE开发语言流行排行榜 https://www.tiobe.com/tiobe-index Python是最流行的,是第一名。


开发语言性能排行榜中Python是最后一名,是运行效率最差的。

2.3 为什么Python的运行效率最差却是最受欢迎的???

  • Python的很多应用场景基本上都是单用户程序,如爬虫、大数据、自动化测试 Selenium、GUI桌面软件等等基本上都是单用户程序。不像Java通常作为服务器同一时间内有多个用户同时访问,既然是单用户程序自然也用太关系运行效率,虽然Python运行效率在所有语言中最低的,但是相对于人来说那还是快的不在一个等级上,Python运行效率最差是相对于其它编程语言而不是相对于人,所以Python的速度是人类可以接受的,再说Python的应用场景通常都是单用户,总上Python的运行效率就变的没那么重要。
  • Python封装程度更高,也就是说实现相同的功能,Python可能只需要几行代码,而如果用C语言开发可能要几十行、几百行代码,代码少了,也就意味着开发出一个相同的功能所需要的时间更短,也就是Python的开发效率非常高(老板喜欢开发速度快的)。例如使用Python做爬虫、做自动化代码量非常少。
  • Python中有些应用场景是属于工具类的,也是一种单用户应用。
  • Python可以调用C、C++库。
  • Python库多,生态很丰富。
  • Python适用人群范围广,不止是职业程序员,Python被作为小学生课程。
  • 人生苦短,我用Python。

三:语法简洁

Python是一种现代化编程语言,既然是现代化,那就要相比老语言要支持更多的语法。

3.1 声明变量不需要关键字和数据类型

// java
String name = "张三";

// javascript
var name = "张三"

# python
name = "张三"

3.2 不需要在语句最后写;

javascript现在每个语句后面都不用写分号了;

3.3 方法的入参不需要写数据类型,不需要指定返回值类型, 也不需要使用来指定方法体

老语言都是使用一对 来表示方法体的开始和结束,而Python使用冒号:表示方法体的开始,使用缩进(一个Tab)表示方法体。

// java
public int add(int x, int y) 
    return x + y;


// python
def add(x, y):
	return x + y;

3.4 支持负索引、负步长

同样是获取最后一个元素,python由于支持负索引代码量就很少,看起来很简洁。

// java
List<String> names = Arrays.asList("a", "b", "c");
System.out.println(names.get(names.size() - 1));

# python
names = ['a', 'b', 'c']
print(names[-1])

# 字符串反转
foobar = 'foobar'
print(foobar[::-1])

3.5 判空

如果字符串为空、元组为空、列表为空、Set集合为空、None、0等值都会视为假,而Java还需要工具方法来返回bool值。

// java
String foobar = "foobar";
if (StringUtils.isNotBlank(foobar)) 
    int length = foobar.length();


// python
foobar = "foobar"
if foobar:
	length = len(foobar)

3.6 全局变量

python在if try 等代码块中定义的变量竟是全局变量,这样try中定义的变量可以直接在finally中直接使用,而像其它java语言就必须把全局变量放在外边,这样一来代码就多了一行,这也是python精简的一个提现。

try:
	f = open('a.txt')
finally:
	f.close()

3.7 私有属性或方法用__表示

在其它语言中私有作用域一般是用关键字private来表示,而Python是在属性名或者方法名的前面使用两个下划线来__表示。这在代码上看起来更加精简,这也是Python代码简洁的一个提现。

class User:
    id = None
    name = None
    __password = None

    def __get_password(self):
        return self.__password


user = User()
# AttributeError: 'User' object has no attribute '__password'
# print(user.__password)

# AttributeError: 'User' object has no attribute '__get_password'
user.__get_password()

3.7 读取文件

TextIOWrapper 实现了迭代器可以直接使用for循环读取文件,像java语言要读取文件还需要将File包装成InputStream等,确实Python的写法更加的优雅简洁。

f = open('a.txt')
for line in f:
	print(line)

3.8 抽象类

Python中的抽象类不需要关键字修饰,只要方法中没有方法体,使用pass来占位,那么这个方法就是抽象类。Python中也没有接口,抽象类就是接口。这也是Python简化代码的一个重要提现。

# 抽象类或者接口
class Animal:
    def sound(self):
        pass


class Dog(Animal):
    def sound(self):
        print('旺旺')


class Cat(Animal):
    def sound(self):
        print('喵喵')


def say_hello(animal: Animal):
    animal.sound()


cat = Cat()
say_hello(cat)
dog = Dog()
say_hello(dog)

3.9 赋予了运算符更多的功能

在Python中可以使用比较运算符对两个对象比较大小,使用 + 号等运算符操作列表,这使得代码非常简洁。

user1 = User()
user2 = User()
print(user1 <= user2)

print([1, 2, 3] + [4, 5, 6])

3.8 命名规范

  • java推荐完整单词命名,即整个单词都完整拼写,如获取字符串长度,length()
  • ptyhon推荐缩写单词,即只写单词的一部分,如获取字符串长度 len()

3.9 嵌套函数

java不支持嵌套函数,而Python支持嵌套函数(闭包)

def function():
    print("function")

    def func():
        print("func")

        def fun():
            print("fun")
        return fun
    return func

function()()()

3.10 其它

Python在老语言的基础上增加很多新的语法,对老的语法也进行简化,这使得在完成相同的功能上Python的代码量相对来说少了一些,看起来更加简洁、清爽。

以上是关于Python简介的主要内容,如果未能解决你的问题,请参考以下文章

Python简介

Python简介

Python教程Python简介

Python函数式编程简介

Python简介

Python简介