本文主要介绍 Python 入门的基础知识,包括 Python 学习路径和心得、输入输出、注释、变量、数据类型、运算符、格式化输出等。阅读本文预计需要 15 min。
本部分主要总结学习 Python 需要了解的一些知识。主要内容是:
最近几年,随着人工智能的兴起,掀起了一股 Python 学习热潮。Python 是一种简单易学、优雅简洁、免费开源、功能强大、面向对象、具有可扩展性、具有丰富的库、具有可移植性的高级解释型编程语言。它的主要不足在于运行速度相较于 C/C++ 慢一些,国内 Python 开发的岗位相对较少。
学好 Python 之后,我们可能从事的岗位有 Python 爬虫工程师、Python Web 开发、运维测试、算法工程师、数据挖掘工程师等,可以选择的方向还是比较多的,不过整体而言,Python 的岗位还是远少于 Java 的。秋招中,大多数公司都是要求 Java 语言。不过这并不影响我们学习 Python,一方面 Python 的优势突出,在市场占有一席之地,尤其是在 AI 领域,另一方面语言具有相通性,学好一门语言,其他语言上手也能非常快。
我本硕都是和药学相关,与计算机专业一点都不沾边。一路以来,都是靠自学。自学过程中也走过不少弯路,踩过不少坑,但是在自学过程中,自己的各方面能力都得到了一定的锻炼。
资料检索和甄别的能力:Python 学习资料形形色色,铺天盖地。能够高效地利用 Google 和百度等搜索引擎检索、甄别有效的 Python 学习资料,可以为我们节省大量时间和精力,少走弯路。比如:Python 的教学视频,我们就可以到 B 站去搜索播放量大、弹幕多、比较新的教程来跟着学习。B 站视频免费无广告,避免了不少冤枉钱。
快速解决问题的能力:学习工作过程中总会遇到各种问题、踩到各种坑,快速解决问题的能力就显得尤为重要。对于搞计算机的人来说,遇到 Bug,要充分利用 Google、Stack Overflow、GitHub 等平台。我们的问题基本上都可以从这些平台找到解决办法。
归纳总结的能力:站在巨人的肩膀上学习,能帮助我们节省很多时间。对于前人的知识结晶,我们也要有自己的归纳总结。刚开始学习编程的时候,我用的是纸质版的笔记。一段时间后,我发现纸质版笔记不易保存和随时查阅,写起来也慢,就放弃了。再后来我又发现,学习新知识不记笔记,过一段就会忘记,再需要的时候又得重新找来资料学习。如果有学习笔记,那么自己印象会深刻很多,再需要时忘记了也可以直接检索笔记即可。所以现在我学完一个新知识或技术基本都要做一篇电子版学习笔记,一方面是巩固新知识,另一方面也是方便日后查看。我建议大家学习的时候多做笔记,把好的笔记分享到 CSDN、简书、掘金等技术博客上,一方面可以帮助自己梳理巩固知识体系,另一方面也可以帮助那些遇到了相同问题的人。
学习编程的路径是看视频 + 看书 + 实战。视频相对更有趣,手把手教我们编程,倍速的时候不容易分神。书籍相对专业化、系统化、全面化。对于选择视频还是选择书籍学习,原则就一个,哪个能让你坚持学下去就看哪个。书看不下去了就看视频,视频看不下去了就看书。不管是看视频还是看书,一定要自己动手敲代码!要学会编程,一定要多敲代码!
此外再强调一点,Python 代码的规范性。代码规范不仅看着舒服,提高代码的可读性,也有利于团队开发合作。具体大家可以参考Google Python 风格规范,也可以参照PEP8 Python 代码指南,或者我总结的博客Python 编程风格指南。模仿大牛的代码也是一个很好的学习方法。
我的 Python 学习路径:Python 基础 --> Python 爬虫 --> Python Web。下面我推荐一些自己看过的觉得不错的 Python 学习资料,基本都是可以免费获取。
Python 入门:
进阶:
初学者面对这么资料难免会焦虑,担心学不完。其实不用考虑那么多,按照一份教程踏实的学下去,先入门。以后再多阅读各种书籍,到时自己也能比较各本书的优劣之处了。技术之路是终生学习,每日学习之路,生命不息,学习不止!
接下来就正式进入我们的 Python 学习之旅吧。
计算机的工作就是对输入进行处理,然后把处理结果输出。我们的程序的工作也是对输入进行处理,然后把处理结果输出。
Python 中输入输出是通过 input()
和 print()
函数实现的。
示例:
name = input("请输入你的名字:")
print(name)
输出结果如下:
请输入你的名字:Jock
Jock
这里 name = input("请输入你的名字:")
表示input()
接收一个字符串,并把这个字符串赋值给了变量 name
,什么是变量,我们后面会讲。print(name)
表示把变量name
的值输出。
这里有一个小技巧,如果忘记了某个函数的使用方法,可以用help(函数名)
或者print(函数名.__doc__)
查看这个功能的用法。
比如:
help(print)
输出结果如下:
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
注释是对代码的解释和说明。恰当的注释可以增强代码的可读性,便于我们日后代码维护,也便于团队开发。Python 中注释主要是通过 #
、三个单引号、三个双引号实现的。其中 #
是实现单行注释,三个单引号或者三个双引号是实现多行注释。
示例如下:
# 这是单行注释
name = 'Jock' # 这也是单行注释
'''
这是三个单引号多行注释
这是三个单引号多行注释
'''
"""
这是三个双引号多行注释
这是三个双引号多行注释
"""
print(name)
在计算机中变量是一个存储临时数据的容器。比如:name = 'Jock'
就是把 Jock
这个字符串赋值给了 name
这个变量,装到了 name
这个容器中。需要注意:变量必须先赋值后使用
。
格式:变量名 = 值
,如: name = 'Jock'
。
a
和小写的A
是两个不同的变量。注: Python 关键字是指在 Python 中具有特殊功能的标识符。标识符是开发人员在程序中自定义的一些符号和名称,如变量名、函数名等。可以通过以下代码查看 Python 关键字:
import keyword # 导入 keyword 库
# 打印 Python 关键字的个数
print(len(keyword.kwlist)) # len() 计算容器所含元素的个数,使用 help(len) 可以查看 len()函数的用法
print(keyword.kwlist) # 输出 Python 关键字列表
结果输出:
35
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
常用变量命名方式有以下几种:
my_name = 'Jock'
myName = 'Jock'
MyName = 'Jock'
Python 中变量命名方式推荐遵循 PEP 8 要求:
此外我们还可以利用type()
函数来查看变量的类型。
示例:
age = 25 # 将 25 赋值给变量 age
print(type(age)) # 打印变量 age 的数据类型
输出结果:
<class 'int'>
这里我们可以看到 age
变量是 int
数据类型,即整型。待会我们会讲。
计算机能处理文本、图像、音频等各种数据,那么我们存储这些信息就需要不同的数据类型。
符号 | 说明 | 举例 |
---|---|---|
int | 整型,即整数 | 1, 2, 3 |
float | 浮点数,即小数 | 1.1, 2.2, 3.3 |
str | 字符串,用单引号或双引号或三引号括起来的任意文本 | ‘a’, “a”, “”“a”"", ‘’‘a’’’ |
bool | 布尔类型,即真假两种 | True, False |
NoneType | 空值,Python 中 None 不能理解为 0,它是一个特殊的空值 | None |
list | 列表 | [1, 2, 3] |
tuple | 元组 | (1, 2, 3) |
set | 集合 | {1, 2, 3,} |
dict | 字典 | {‘name’:‘Jock’, ‘age’:15} |
对于 str、list、tuple、set、dict 后面我会进行总结。
在 Python 中可以用一些函数来实现数据类型的转换。
函数 | 说明 |
---|---|
int(x) | 将 x 转换为整数 |
float(x) | 将 x 转换为浮点数 |
complex(real,[imag]) | 创建一个复数,real 为实部,imag 为虚部 |
str(x) | 将 x 转换为字符串 |
repr(x) | 将 x 转换为表达式字符串 |
eval(str) | 用来计算字符串中的 Python 表达式并返回一个对象(慎用) |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
chr(x) | 将一个整数转换为一个 Unicode 字符 |
ord(x) | 将一个字符转换为它的 ASCII 整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
bin(x) | 将一个整数转换为一个二进制字符串 |
运算符 | 描述 | 举例 |
---|---|---|
+ | 加 | 1 + 2 = 3 |
- | 减 | 3 - 1 = 2 |
* | 乘 | 2 * 3 = 6 |
/ | 除 | 3 / 2 = 1.5 |
// | 取整除,向负无穷取整,返回整数部分 | 9 // 2 = 4 |
% | 取余,返回除法的余数 | 10 % 3 = 1 |
** | 指数 | 2 ** 3 = 8 |
算数运算符有优先级顺序,**
> * / % //
> + -
,为了避免歧义,增强代码可读性,建议用()
来处理运算符优先级。
运算符 | 描述 | 举例 |
---|---|---|
= | 赋值运算符 | 把 = 号右边的结果赋给左边的变量,如:n = 1 + 2*5,结果 n 的值为 11 |
+= | 加法赋值运算符 | a += b 等价于 a = a + b |
-= | 减法赋值运算符 | a -= b 等价于 a = a - b |
*= | 乘法赋值运算符 | a _= b 等价于 a = a _ b |
/= | 除法赋值运算符 | a /= b 等价于 a = a / b |
%= | 取模赋值运算符 | a %= b 等价于 a = a % b |
**= | 幂赋值运算符 | a **= b 等价于 a = a ** b |
//= | 取整除赋值运算符 | a //= b 等价于 a = a // b |
注意: Python 中可以多个变量赋值,如:a, b, c = 1, 2, 3
。
运算符 | 描述 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
== | 等于 |
运算符 | 描述 |
---|---|
not | 非 |
and | 与,全真为真,一假全假 |
or | 或, 全假为假,一真全真 |
注意:and 和 or 均遵守逻辑短路原则。
运算符 | 描述 | 举例 |
---|---|---|
in | 成员运算符 | 1 in [1, 2, 3] 结果为 True |
not in | 成员运算符 | 1 not in [1, 2, 3] 结果为 False |
is | 身份运算符 | 1 is 1 结果为 True |
is not | 身份运算符 | 1 is not 1 结果为 False |
~ | 位运算符,按位取反 | ~1 结果为 -2 |
& | 位运算符,按位取反 | 1 & 2 结果为 0 |
| | 位运算符,按位取反 | 1 | 2 结果为 3 |
<< | 移位运算符,左移 | 1 << 2 结果为 4 |
>> | 移位运算符,右移 | 4 >> 2 结果为 1 |
我们在输出的时候还要考虑格式的问题,比如居中、左对齐等等。Python 中有 3 种方式来实现格式化输出。
最老的是从 C 语言上面继承过来的 %
printf-style String Formatting 模式,然后是 format 格式化,再到现在 Python 3.6 开始出现的 f-string 格式化。如今推荐使用 f-string 格式,当然 %
等格式化还是继续支持的。
示例:
name = 'Jock'
age = 25
money = 6.666666
# 采用 % 格式化输出
print('我的名字是:%s,年龄是:%d,总共财产是:%.2f' % (name, age, money))
# 采用 format 格式化输出
print('我的名字是:{},年龄是:{},总共财产是:{:.2f}'.format(name, age, money))
# 采用 f-string 格式化输出
print(f'我的名字是:{name},年龄是:{age},总共财产是:{money:.2f}')
结果输出:
我的名字是:Jock,年龄是:25,总共财产是:6.67
我的名字是:Jock,年龄是:25,总共财产是:6.67
我的名字是:Jock,年龄是:25,总共财产是:6.67
这里分享一个自己的经验,Python 中函数非常多,有时我们可能会忘记一个函数的用法,这个时候除了前面的用 help(function_name)
和 print(function_name.__doc__)
以外,还可以充分利用 Python 的官方文档。受网络影响,网页版有时打开较慢。我们可以安装一个最新的 Python 安装包,比如现在的 Python 3.8,然后电脑里面就会存在 Python 3.8 Manuals
文件,里面包含了 Python 3.8 有关的所有官方文档。我们可以在Python 3.8 Manuals
检索我们的函数,可以轻松找到相关的用法和示例。
知识很多,需要我们一点一点去学习,去总结。成长路上,困难总是难免的,积极的去面对困难,找到解决困难的办法!
推荐阅读:
后记:
我从本硕药学零基础转行计算机,自学路上,走过很多弯路,也庆幸自己喜欢记笔记,把知识点进行总结,帮助自己成功实现转行。
2020下半年进入职场,深感自己的不足,所以2021年给自己定了个计划,每日学一技,日积月累,厚积薄发。
如果你想和我一起交流学习,欢迎大家关注我的微信公众号每日学一技
,扫描下方二维码或者搜索每日学一技
关注。
这个公众号主要是分享和记录自己每日的技术学习,不定期整理子类分享,主要涉及 C – > Python – > Java,计算机基础知识,机器学习,职场技能等,简单说就是一句话,成长的见证!