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简介的主要内容,如果未能解决你的问题,请参考以下文章