初识Python
Posted wgchen~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Python相关的知识,希望对你有一定的参考价值。
初识Python题
Python简介
Python是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户群体的编程语言。
Python的历史
1、1989年圣诞节:Guido开始写Python语言的编译器。
2、1991年2月:第一个Python解释器诞生,它是用C语言实现的,可以调用C语言的库函数。
3、1994年1月:Python 1.0正式发布。
4、2000年10月:Python 2.0发布,Python的整个开发过程更加透明,生态圈开始慢慢形成。
5、2008年12月:Python 3.0发布,引入了诸多现代编程语言的新特性,但并不完全兼容之前的Python代码。
6、2020年1月:在Python 2和Python 3共存了11年之后,官方停止了对Python 2的更新和维护,希望用户尽快过渡到Python 3。
说明:大多数软件的版本号一般分为三段,形如A.B.C,其中A表示大版本号,当软件整体重写升级或出现不向后兼容的改变时,才会增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。
Python的优缺点
Python的优点很多,简单为大家列出几点。
1、简单明确,跟其他很多语言相比,Python更容易上手。
2、能用更少的代码做更多的事情,提升开发效率。
3、开放源代码,拥有强大的社区和生态圈。
4、能够做的事情非常多,有极强的适应性。
5、能够在Windows、macOS、Linux等各种系统上运行。
Python最主要的缺点是执行效率低,但是当我们更看重产品的开发效率而不是执行效率的时候,Python就是很好的选择。
Python应用领域和职业发展分析
简单的说,Python是一个“优雅”、“明确”、“简单”的编程语言。
- 学习曲线低,非专业人士也能上手
- 开源系统,拥有强大的生态圈
- 解释型语言,完美的平台可移植性
- 动态类型语言,支持面向对象和函数式编程
- 代码规范程度高,可读性强
Python在以下领域都有用武之地。
- 后端开发 - Python / Java / Go / php
- DevOps - Python / Shell / Ruby
- 数据采集 - Python / C++ / Java
- 量化交易 - Python / C++ / R
- 数据科学 - Python / R / Julia / Matlab
- 机器学习 - Python / R / C++ / Julia
- 自动化测试 - Python / Shell
作为一名Python开发者,根据个人的喜好和职业规划,可以选择的就业领域也非常多。
- Python后端开发工程师(服务器、云平台、数据接口)
- Python运维工程师(自动化运维、SRE、DevOps)
- Python数据分析师(数据分析、商业智能、数字化运营)
- Python数据挖掘工程师(机器学习、深度学习、算法专家)
- Python爬虫工程师
- Python测试工程师(自动化测试、测试开发)
说明:目前,数据分析是一个非常热门的方向,因为不管是互联网行业还是传统行业都已经积累了大量的数据,现在需要的就是从这些数据中提取有价值的信息,以便打造更好的产品或者为将来的决策提供支持。
给初学者的几个建议
- Make English as your working language. (让英语成为你的工作语言)
- Practice makes perfect. (熟能生巧)
- All experience comes from mistakes. (所有的经验都源于你犯过的错误)
- Don’t be one of the leeches. (不要当伸手党)
- Either outstanding or out. (要么出众,要么出局)
第一个Python程序
我们打开Windows的“命令提示符”工具,输入命令python然后回车就可以进入到Python的交互式环境中。所谓交互式环境,就是我们输入一行代码回车,代码马上会被执行,如果代码有产出结果,那么结果会被显示在窗口中。例如:
C:\\Users\\Administrator>python
Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 * 3
6
>>> 2 + 3
5
>>>
如果希望退出交互式环境,可以在交互式环境中输入quit()
,如下所示。
>>> quit()
更好的交互式环境 - IPython
Python默认的交互式环境用户体验并不怎么好,我们可以用IPython来替换掉它,因为IPython提供了更为强大的编辑和交互功能。我们可以使用Python的包管理工具pip来安装IPython,如下所示。
pip install ipython
温馨提示:在使用上面的命令安装IPython之前,可以先通过pip config set global.index-url https://pypi.doubanio.com/simple
命令将pip的下载源修改为国内的豆瓣网,否则下载安装的过程可能会非常的缓慢。
可以使用下面的命令启动IPython,进入交互式环境。
ipython
集成开发环境 - PyCharm
如果用Python开发商业项目,我们推荐大家使用更为专业的工具PyCharm。
PyCharm是由捷克一家名为JetBrains的公司开发的用于Python项目开发的集成开发环境(IDE)。
所谓集成开发环境,通常是指工具中提供了编写代码、运行代码、调试代码、分析代码、版本控制等一系列功能,因此特别适合商业项目的开发。
在JetBrains的官方网站上提供了PyCharm的下载链接,其中社区版(Community)是免费的但功能相对弱小(其实已经足够强大了),专业版(Professional)功能非常强大,但需要按年或月付费使用,新用户可以试用30天时间。
Python中有两种形式的注释:
1 单行注释:以#
和空格开头,可以注释掉从#
开始后面一整行的内容。
2 多行注释:三个引号开头,三个引号结尾,通常用于添加多行说明性内容。
"""
第一个Python程序 - hello, world
Version: 0.1
Author: Willem
"""
# print('hello, world')
print("你好,世界!")
变量和类型
要想在计算机内存中保存数据,首先就得说一说变量这个概念。
在编程语言中,变量是数据的载体,简单的说就是一块用来保存数据的内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。
计算机能处理的数据有很多种类型,最常见的就是数值,除了数值之外还有文本、图形、音频、视频等各种各样的数据。
虽然数据在计算机中都是以二进制形态存在的,但是我们可以用不同类型的变量来表示数据类型的差异。
Python中的数据类型很多,而且也允许我们自定义新的数据类型(这一点在后面会讲到),这里我们需要先了解几种常用的数据类型。
类型
整型(int):
Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。
浮点型(float):
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
字符串型(str):
字符串是以单引号或双引号括起来的任意文本,比如'hello'
和"hello"
。
变量命名规则
对于每个变量我们需要给它取一个名字,就如同我们每个人都有自己的名字一样。在Python中,变量命名需要遵循以下这些规则,这些规则又分为必须遵守的硬性规则和建议遵守的非硬性规则
。
硬性规则:
规则1:
变量名由字母、数字和下划线构成,数字不能开头。
需要说明的是,这里说的字母指的是Unicode字符,Unicode称为万国码,囊括了世界上大部分的文字系统,这也就意味着中文、日文、希腊字母等都可以作为变量名中的字符,但是像!、@、#这些特殊字符是不能出现在变量名中的,而且我们强烈建议大家尽可能使用英文字母。
规则2:大小写敏感,简单的说就是大写的A和小写的a是两个不同的变量。
规则3:
变量名不要跟Python语言的关键字(有特殊含义的单词,后面会讲到)和保留字(如已有的函数、模块等的名字)发生重名的冲突。
非硬性规则:
规则1:变量名通常使用小写英文字母,多个单词用下划线进行连接。
规则2:受保护的变量用单个下划线开头。
规则3:私有的变量用两个下划线开头。
规则2和规则3大家暂时不用理解,后面自然会明白的。当然,作为一个专业的程序员,给变量(事实上应该是所有的标识符)命名时做到见名知意也非常重要。
变量的使用
下面通过例子来说明变量的类型和变量的使用。
"""
使用变量保存数据并进行加减乘除运算
Version: 0.1
Author: willem
"""
a = 45 # 变量 a 保存了 45
b = 12 # 变量 b 保存了 12
print(a + b) # 57
print(a - b) # 33
print(a * b) # 540
print(a / b) # 3.75
在Python中可以使用 type
函数对变量的类型进行检查。
程序设计中函数的概念跟数学上函数的概念基本一致,数学上的函数相信大家并不陌生,它包括了函数名、自变量和因变量。
如果暂时不理解函数这个概念也不要紧,我们会在后续的内容中专门讲解函数的定义和使用。
"""
使用type()检查变量的类型
Version: 0.1
Author: willem
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'str'>
print(type(d)) # <class 'bool'>
不同类型的变量可以相互转换,这一点可以通过Python的内置函数来实现。
- int():将一个数值或字符串转换成整数,可以指定进制。
- float():将一个字符串转换成浮点数。
- str():将指定的对象转换成字符串形式,可以指定编码。
- chr():将整数转换成该编码对应的字符串(一个字符)。
- ord():将字符串(一个字符)转换成对应的编码(整数)。
下面的例子为大家演示了Python中类型转换的操作。
"""
Python中的类型转换操作
Version: 0.1
Author: willem
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
# 整数转成浮点数
print(float(a)) # 100.0
# 浮点型转成字符串 (输出字符串时不会看到引号哟)
print(str(b)) # 12.345
# 字符串转成布尔型 (有内容的字符串都会变成True)
print(bool(c)) # True
# 布尔型转成整数 (True会转成1,False会转成0)
print(int(d)) # 1
# 将整数变成对应的字符 (97刚好对应字符表中的字母a)
print(chr(97)) # a
# 将字符转成整数 (Python中字符和字符串表示法相同)
print(ord('a')) # 97
下面的代码通过键盘输入两个整数来实现对两个整数的算术运算。
"""
使用input()函数获取键盘输入(字符串)
使用int()函数将输入的字符串转换成整数
使用print()函数输出带占位符的字符串
Version: 0.1
Author: willem
"""
a = int(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b))
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))
说明:上面的 print
函数中输出的字符串使用了占位符语法,其中 %d
是整数的占位符,%f
是小数的占位符,%%
表示百分号(因为百分号代表了占位符,所以带占位符的字符串中要表示百分号必须写成%%
),字符串之后的%
后面跟的变量值会替换掉占位符然后输出到终端中,运行上面的程序,看看程序执行结果就明白啦。
运算符
Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。
除了我们之前已经用过的赋值运算符和算术运算符,我们稍后会陆续讲到其他运算符的使用。
运算符 | 描述 |
---|---|
[] [:] | 下标,切片 |
** | 指数 |
~ + - | 按位取反, 正负号 |
* / % // | 乘,除,模,整除 |
+ - | 加,减 |
>> << | 右移,左移 |
& | 按位与 |
^ | | 按位异或,按位或 |
<= < > >= | 小于等于,小于,大于,大于等于 |
== != | 等于,不等于 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not or and | 逻辑运算符 |
= += -= *= /= %= //= **= &= ` | = ^= >>= <<=` |
说明: 在实际开发中,如果搞不清楚运算符的优先级,可以使用括号来确保运算的执行顺序。
赋值运算符
赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。下面的例子演示了赋值运算符和复合赋值运算符的使用。
"""
赋值运算符和复合赋值运算符
Version: 0.1
Author: willem
"""
a = 10
b = 3
a += b # 相当于:a = a + b
a *= a + 2 # 相当于:a = a * (a + 2)
print(a) # 算一下这里会输出什么
比较运算符和逻辑运算符
比较运算符有的地方也称为关系运算符,包括 ==、!=、<、>、<=、>=
,我相信没有什么好解释的,大家一看就能懂,唯一需要提醒的是比较相等用的是==
,请注意这个地方是两个等号,因为=
是赋值运算符,我们在上面刚刚讲到过,==
才是比较相等的比较运算符。比较运算符会产生布尔值,要么是True
要么是False
。
逻辑运算符有三个,分别是and
、or
和no
t。
and
字面意思是“而且”,所以and
运算符会连接两个布尔值,如果两个布尔值都是True
,那么运算的结果就是True
;左右两边的布尔值有一个是False
,最终的运算结果就是False
。
相信大家已经想到了,如果and
左边的布尔值是False
,不管右边的布尔值是什么,最终的结果都是False
,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and
运算符左边为False
的情况下,右边的表达式根本不会执行。
or
字面意思是“或者”,所以or
运算符也会连接两个布尔值,如果两个布尔值有任意一个是True
,那么最终的结果就是True
。当然,or
运算符也是有短路功能的,在它左边的布尔值为True
的情况下,右边的表达式根本不会执行。
not
运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,后面的布尔值如果是True
运算结果就是False
,而后面的布尔值如果是False
则运算结果就是True
。
"""
比较运算符和逻辑运算符的使用
Version: 0.1
Author: willem
"""
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False
说明:比较运算符的优先级高于赋值运算符,所以 flag0 = 1 == 1
先做1 == 1
产生布尔值True
,再将这个值赋值给变量flag0
。print
函数可以输出多个值,多个值之间可以用,进行分隔,输出的内容之间默认以空格分开。
练习1:华氏温度转换为摄氏温度
提示:华氏温度到摄氏温度的转换公式为:$C=(F - 32) \\div 1.8$
。
参考答案:
"""
将华氏温度转换为摄氏温度
Version: 0.1
Author: willem
"""
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
说明:在使用print
函数输出时,也可以对字符串内容进行格式化处理,上面print
函数中的字符串%1.f
是一个占位符,稍后会由一个float
类型的变量值替换掉它。
同理,如果字符串中有%d
,后面可以用一个int
类型的变量值替换掉它,而%s会被字符串的值替换掉。除了这种格式化字符串的方式外,还可以用下面的方式来格式化字符串,其中{f:.1f}
和{c:.1f}
可以先看成是{f}
和{c}
,表示输出时会用变量f和变量c的值替换掉这两个占位符,后面的:.1f
表示这是一个浮点数,小数点后保留1
位有效数字。
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')
练习2:输入圆的半径计算计算周长和面积
参考答案:
"""
输入半径计算圆的周长和面积
Version: 0.1
Author: willem
"""
radius = float(input('请输入圆的半径: '))
perimeter = 2 * 3.1416 * radius
area = 3.1416 * radius * radius
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)
练习3:输入年份判断是不是闰年
参考答案:
"""
输入年份 如果是闰年输出True 否则输出False
Version: 0.1
Author: willem
"""
year = int(input('请输入年份: '))
# 如果代码太长写成一行不便于阅读 可以使用\\对代码进行折行
is_leap = year % 4 == 0 and year % 100 != 0 or \\
year % 400 == 0
print(is_leap)
说明:比较运算符会产生布尔值,而逻辑运算符and
和or
会对这些布尔值进行组合,最终也是得到一个布尔值,闰年输出True
,平年输出False
。
以上是关于初识Python的主要内容,如果未能解决你的问题,请参考以下文章
初识OpenGL 片段着色器(Fragment Shader)