为啥一定要学习python
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥一定要学习python相关的知识,希望对你有一定的参考价值。
1、人才需求缺口大:根据《中国人才生态白皮书》研究分析,到2018年底,我国人工智能人才缺口将突破100万,到2020年,这一数字将攀升到226万。在过去的几年中,Python已经成为现代软件开发,基础设施管理领域的一个热门话题,特别是在数据学科和人工智能领域。Python在人工智能、数据分析等领域,表现突出,像自动抓取和分析数据,自动下载资料,提取关键词这样的功能都是分分钟完成,十分简单。
2、全民学习Python的热潮:编程可以将我们从重复的工作中释放出来,去完成更多更有创造性、挑战性的工作。爬数据、分析数据、做统计、做报告……这些我们每天做的重复性的工作,你都可以叫交给程序搞定。不夸张地讲,编程能力会逐渐成为大众需要掌握的能力标配,而Python也将会被纳入职场基本技能之一。如今Python已进入小学教材,甚至将加入高考。
3、语言简洁易上手:作为语法最简单的编程语言,Python可以用更少的代码来表达想法。比如,同样是实现一键整理文档的功能,Python的代码就明显更加简洁。小学生也可以上手学习的计算机语言。
4、薪资待遇好:如果说程序员薪资算是众多行业里的佼佼者,那么Python的薪资可以算是各大类语言的佼佼者了。比如北京,国内猎聘网发布的统计数据,平均月薪2w,再加上年终奖,13/14薪资,一年妥妥30w!所以Python这门语言,前途不可限量。
参考技术A python是基石python可以成为你编程生涯中的基石,对于任何一个想称为全栈工程师的同学来说,python可以给你提供非常大的帮助。python是一门面向对象的语言,它面向对象的思想类似于javascript, C++, C#等等。编程思想都是相通的,因为python容易上手容易学习,从python中学到很多编程思想都可以很好的迁移到其他语言的学习当中。例如, 面向对象中类的继承,多态等等。 参考技术B
学习Python有很多理由,下面讨论小编认为对小白重要的两点:1. Python容易学;2. Python功能强大。
Python容易学习
Python容易学习是我们学习它的一项很重要理由。你应该无法忍受每天抽出两小时学习一门语言,连续学习了几个月但是收效甚微。但是如果你每天抽出一两个小时学习Python,会发现能够利用所学的知识实现很多不同的效果。你会发现:开始的几天只是简单在屏幕上打印出"Hello, world!",认识下变量这些基础的内容,下一周可能就在写一些简单的流程控制语句,不到一个月,一本Python基础书籍里的知识可能就基本掌握了。
我们上学时会感觉到学习很枯燥很重要的原因是学习给我们带来的反馈太慢,要很久才能看到效果。想想我们学过的语文、英语,要认真学习好多个白天黑夜才能看到些许效果,这样在一定程度上可能会消耗我们的兴趣,使我们丧失耐心。在Python的学习过程中,Python的交互模式总是可以立马看到“效果”。对比一下Java(另一门著名编程语言)和Python,在打印'Hello, world!'时的表现,首先是Java需要一个编辑器,输入下面代码并保存文件:
然后再编译代码、运行。
Python如何做这件事呢?首先打开终端(Windows, Linux, Mac都有),输入'Python'进入交互模式,像这样(我给我的主机名打了马赛克^_^):
这样就进入了交互模式,可以随意输入代码了(当然是正确的代码):
这就是我上面所说的“立即见效。
Python对新手非常友好。Python之父"Guido"在设计之初就希望Python是一门不用太多计算机基础就能掌握的语言。这意味着如果你是学生,学Python只是为了完成老师留下的作业;或者你是没有计算机知识的普通员工,有一项枯燥的重复劳动如果用计算机做起来会很简单;Python都可以很快帮助你----你不需要知道RAM、寄存器、指令集这些复杂的计算机知识,只需要专注于你要做的事,因为Python生而为此。
Python功能强大
如果仅仅是好学,还不足以成为你学习Python的理由。学习Python的理由还在于学完Python后,可以利用Python实现很多功能。Python是一门通用语言,它不是单单为某一种或者某几种用途设计的。它几乎涉及到了每个领域:
· Web开发
· 网络爬虫
· 计算与数据分析
· 人工智能
· 自动化运维
· 云计算
· 网络编程
· 游戏开发
对于小白的你可能不知道这些领域都是做什么的,没关系,看看哪些公司都在用Python吧!
国外使用Python开发的产品:
· YouTube
· Spotify
· Quora
· 文明6
国内使用Python开发的产品:
· 豆瓣网
· 知乎
· 果壳
· 网易版吃鸡手游
· 今日头条
更多关于Python这门语言的问题可以看下这个网页的视频,Python+人工智能 追赶编程开发新趋势,希望我的回答能帮到你。
18 个 Python 编程坏习惯,一定要抛弃哦
今天分享 18 个 Python 坏习惯,这些坏习惯会暴露开发者在 Python 方面经验不足。通过摒弃这些习惯并以 Pythonic 的方式编写代码,可以提高你的代码质量,给看代码的人留下好印象。 喜欢本文记得收藏、关注、点赞。
【注】文末加入技术交流群,学习不再孤单
推荐文章
1、拼接字符串用 + 号
坏的做法:
def manual_str_formatting(name, subscribers):
if subscribers > 100000:
print("Wow " + name + "! you have " + str(subscribers) + " subscribers!")
else:
print("Lol " + name + " that's not many subs")
好的做法是使用 f-string,而且效率会更高:
def manual_str_formatting(name, subscribers):
# better
if subscribers > 100000:
print(f"Wow name! you have subscribers subscribers!")
else:
print(f"Lol name that's not many subs")
2、使用 finaly 而不是上下文管理器
坏的做法:
def finally_instead_of_context_manager(host, port):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect((host, port))
s.sendall(b'Hello, world')
finally:
s.close()
好的做法是使用上下文管理器,即使发生异常,也会关闭 socket::
def finally_instead_of_context_manager(host, port):
# close even if exception
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(b'Hello, world')
3、尝试手动关闭文件
坏的做法:
def manually_calling_close_on_a_file(filename):
f = open(filename, "w")
f.write("hello!\\n")
f.close()
好的做法是使用上下文管理器,即使发生异常,也会自动关闭文件,凡是有上下文管理器的,都应该首先采用:
def manually_calling_close_on_a_file(filename):
with open(filename) as f:
f.write("hello!\\n")
# close automatic, even if exception
4、except 后面什么也不写
坏的做法:
def bare_except():
while True:
try:
s = input("Input a number: ")
x = int(s)
break
except: # oops! can't CTRL-C to exit
print("Not a number, try again")
这样会捕捉所有异常,导致按下 CTRL-C 程序都不会终止,好的做法是
def bare_except():
while True:
try:
s = input("Input a number: ")
x = int(s)
break
except Exception: # 比这更好的是用 ValueError
print("Not a number, try again")
5、函数参数使用可变对象
如果函数参数使用可变对象,那么下次调用时可能会产生非预期结果,坏的做法
def mutable_default_arguments():
def append(n, l=[]):
l.append(n)
return l
l1 = append(0) # [0]
l2 = append(1) # [0, 1]
好的做法:
def mutable_default_arguments():
def append(n, l=None):
if l is None:
l = []
l.append(n)
return l
l1 = append(0) # [0]
l2 = append(1) # [1]
6、从不用推导式
坏的做法
squares =
for i in range(10):
squares[i] = i * i
好的做法
odd_squares = i: i * i for i in range(10)
7、推导式用的上瘾
推导式虽然好用,但是不可以牺牲可读性,坏的做法
c = [
sum(a[n * i + k] * b[n * k + j] for k in range(n))
for i in range(n)
for j in range(n)
]
好的做法:
c = []
for i in range(n):
for j in range(n):
ij_entry = sum(a[n * i + k] * b[n * k + j] for k in range(n))
c.append(ij_entry)
8、检查类型是否一致用 ==
坏的做法
def checking_type_equality():
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
if type(p) == tuple:
print("it's a tuple")
else:
print("it's not a tuple")
好的做法
def checking_type_equality():
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
# probably meant to check if is instance of tuple
if isinstance(p, tuple):
print("it's a tuple")
else:
print("it's not a tuple")
9、用 == 判断是否单例
坏的做法
def equality_for_singletons(x):
if x == None:
pass
if x == True:
pass
if x == False:
pass
好的做法
def equality_for_singletons(x):
# better
if x is None:
pass
if x is True:
pass
if x is False:
pass
10、判断一个变量用 bool(x)
坏的做法
def checking_bool_or_len(x):
if bool(x):
pass
if len(x) != 0:
pass
好的做法
def checking_bool_or_len(x):
# usually equivalent to
if x:
pass
11、使用类 C 风格的 for 循环
坏的做法
def range_len_pattern():
a = [1, 2, 3]
for i in range(len(a)):
v = a[i]
...
b = [4, 5, 6]
for i in range(len(b)):
av = a[i]
bv = b[i]
...
好的做法
def range_len_pattern():
a = [1, 2, 3]
# instead
for v in a:
...
# or if you wanted the index
for i, v in enumerate(a):
...
# instead use zip
for av, bv in zip(a, b):
...
12、不实用 dict.items
坏的做法
def not_using_dict_items():
d = "a": 1, "b": 2, "c": 3
for key in d:
val = d[key]
...
好的做法
def not_using_dict_items():
d = "a": 1, "b": 2, "c": 3
for key, val in d.items():
...
13、解包元组使用索引
坏的做法
mytuple = 1, 2
x = mytuple[0]
y = mytuple[1]
好的做法
mytuple = 1, 2
x, y = mytuple
14、使用 time.time() 统计耗时
坏的做法
def timing_with_time():
start = time.time()
time.sleep(1)
end = time.time()
print(end - start)
好的做法是使用 time.perf_counter(),更精确:
def timing_with_time():
# more accurate
start = time.perf_counter()
time.sleep(1)
end = time.perf_counter()
print(end - start)
15、记录日志使用 print 而不是 logging
坏的做法
def print_vs_logging():
print("debug info")
print("just some info")
print("bad error")
好的做法
def print_vs_logging():
# versus
# in main
level = logging.DEBUG
fmt = '[%(levelname)s] %(asctime)s - %(message)s'
logging.basicConfig(level=level, format=fmt)
# wherever
logging.debug("debug info")
logging.info("just some info")
logging.error("uh oh :(")
16、调用外部命令时使用 shell=True
坏的做法
subprocess.run(["ls -l"], capture_output=True, shell=True)
如果 shell=True,则将 ls -l
传递给/bin/sh(shell) 而不是 Unix 上的 ls 程序,会导致 subprocess 产生一个中间 shell 进程, 换句话说,使用中间 shell 意味着在命令运行之前,命令字符串中的变量、glob 模式和其他特殊的 shell 功能都会被预处理。比如,$HOME 会在在执行 echo 命令之前被处理处理。
好的做法是拒绝从 shell 执行:
subprocess.run(["ls", "-l"], capture_output=True)
17、从不尝试使用 numpy
坏的做法
def not_using_numpy_pandas():
x = list(range(100))
y = list(range(100))
s = [a + b for a, b in zip(x, y)]
好的做法:
import numpy as np
def not_using_numpy_pandas():
# 性能更快
x = np.arange(100)
y = np.arange(100)
s = x + y
18、喜欢 import *
坏的做法
from itertools import *
count()
这样的话,没有人直到这个脚本到底有多数变量, 好的做法:
from mypackage.nearby_module import awesome_function
def main():
awesome_function()
if __name__ == '__main__':
main()
技术交流
欢迎转载、收藏、有所收获点赞支持一下!
目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、添加微信号:dkl88191,备注:来自CSDN
- 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
以上是关于为啥一定要学习python的主要内容,如果未能解决你的问题,请参考以下文章