Python入门基础

Posted 2021dragon

tags:

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

文章目录

Python的背景知识

Python的由来

吉多•范罗苏姆(Guido van Rossum)是一个荷兰程序员,因为他名字的前三个字母是Gui,所以大家都叫他龟叔。

龟叔在1989年圣诞节的时候(当时33岁),因为在家里呆着无聊,为了打发时间于是开始了Python的开发,Python的第一个正式版本发布于1991年。1991年是一个神奇的年份,Python、万维网、Vim、Qt、第一台笔记本电脑,都诞生于1991年。

Python的使用场景

Python的使用场景非常广泛,常见的有如下几个:

  • 科学计算&数据分析。
  • Web开发(搭建网站)。
  • 自动化运维。
  • 人工智能。
  • 爬虫程序。
  • 自动化测试。

Python的优缺点

Python的优点:

  • 表达能力比较强,并且语法简单,容易上手。
  • 功能强大,用途广泛。
  • 生态丰富,具有海量成熟的第三方库供程序员使用。
  • 方便调用C/C++编写的代码进行高性能或系统级操作。

Python的缺点:

  • 执行效率比较弱。
  • 对于多核心并发程序支持偏弱。
  • 动态类型系统对于大型项目不太友好。
注意:Python采用的是动态类型系统,因此一个变量的类型在程序运行的时候是可以发生改变的。

常量和表达式

print是Python中的一个内置函数,使用print函数可以将数据打印到控制台上。比如:

print(1 + 2 - 3)  # 0
print(1 + 2 * 3)  # 7
print(1 + 2 / 3)  # 1.6666666666666665

其中,形如1+2-3这样的算式,在编程语言中称为表达式,表达式的运算结果称为表达式的返回值,而像1,2,3这样的数字称为字面值常量。

说明一下:

  • 与C/C++等其他语言不同的是,Python中两个整数相除后得到的结果是一个浮点数。
  • Python中浮点数在内存中的存储遵循IEEE754标准,这套标准在表示浮点数时可能会存在微小的误差,但这个误差在实际开发中不会造成太大的影响。

变量和类型

变量的语法

定义变量

创建变量的语句非常简单,比如:

a = 10

说明:

  • a为变量名,当需要创建多个变量时,可以通过名字来进行区分。
  • =为赋值运算符,表示把=右侧的数据放到=左侧的空间中。

变量的命名规则

硬性规则(务必遵守):

  • 变量名由数字、字母、下划线构成。
  • 变量名不能以数字开头。
  • 变量名不能和Python的“关键字”重复。
  • 变量名大小写敏感,比如num和Num是两个不同的变量名。

软性规则(建议遵守):

  • 变量名使用有描述性的单词来表示,尽量表达出变量的作用。
  • 当一个单词无法表述清楚变量的作用时,可以用多个单词进行命名。
  • 当变量名包含多个单词时,常见的命名规范有驼峰命名法或蛇形命名法。

说明一下:

  • 驼峰命名法:除第一个单词的首字母外,后续每个单词的首字母都大写。
  • 蛇形命名法:每个单词之间使用下划线进行分隔。

使用变量

读取变量的值,常见的就是用print函数对变量进行打印。比如:

a = 10
print(a)  # 10

修改变量的值,就是对以存在的变量进行重新赋值。比如:

a = 10
a = 20  # 重新赋值
print(a)  # 20

当然,也可以将一个变量的值赋值给另一个变量。比如:

a = 10
b = 20
a = b
print(a)  # 20
print(b)  # 20

注意:

  • 首次使用赋值运算符设置变量的值,这个过程是创建变量(初始化)。
  • 对已存在的变量进行赋值操作,则是在修改这个变量的值(重新赋值)。

变量的类型

变量里面不仅能存储数字,还可以存储其他种类的数据,为了区分不同种类的数据,于是引入了“类型”的概念。

需要注意的是,与C/C++等其他语言不同的是,Python中变量的类型不需要在定义的时候显式声明,而是根据初始化的值的类型来进行确定的。

整数

整数的类型为int,比如:

a = 10
print(type(a))  # <class 'int'>

注意:

  • type和print类似,也是Python中的一个内置函数,可以使用type函数来查看一个变量的类型。
  • 与C/C++等其他语言不同的是,Python中int类型的变量能够表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大的数据。

浮点数(小数)

浮点数(小数)的类型为float,比如:

a = 0.5
print(type(a))  # <class 'float'>

注意: 与C/C++等其他语言不同的是,Python中的浮点数只有float一种类型,没有double类型,实际上Python中的float就相当于C/C++等语言中的double类型,表示双精度浮点数。

Python开发者的哲学:用一种方法,最好只有一种方法来做一件事。

字符串

字符串的类型为str,比如:

a = 'dragon'
print(type(a))  # <class 'str'>

字符串可以是用“单引号”、“双引号”、“三单引号”或者“三双引号”引起来的一串字符序列,比如:

a = "dragon"
b = 'dragon'
c = """dragon"""
d = '''dragon'''
print(a)  # dragon
print(b)  # dragon
print(c)  # dragon
print(d)  # dragon

此外,使用“三单引号”或“三双引号”可以将多行字符串赋值给变量。比如:

a = """
first line
second line
third line
"""

可以使用len函数来获取字符串的长度,比如:

a = 'dragon'
print(len(a))  # 6

可以使用+对两个字符串进行拼接,比如:

a = '2021'
b = 'dragon'
c = a + b
print(a + b)  # 2021dragon

布尔

表示真假的类型为bool,比如:

a = True
print(type(a))  # <class 'bool'>

注意: 布尔类型的取值只有两种,True(真)和False(假)。

其他

除了上述类型之外,Python中还有list、dict、自定义类型等等,我们后续再做介绍。

动态类型特性

动态类型与静态类型:

  • 动态类型: 在运行时,解释器基于变量值的类型决定变量的类型。
  • 静态类型: 在编译时,编译器基于所声明的数据类型确定变量的类型。

C/C++等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型,而Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型。

由于动态类型语言中,变量的类型是取决于变量值的类型,因此Python中同一个变量在不同时刻的类型可能是不同的。比如:

a = 10
print(type(a))  # <class 'int'>
a = 'hello'
print(type(a))  # <class 'str'>

动态类型特性是一把双刃剑:

  • 对于中小型程序,可以大大的减少代码量(比如写一段代码就可以同时支持多种类型)。
  • 对于大型程序,则提高了模块之间的交互成本(比如程序员A提供的代码难以被B理解)。

注释

Python中有以下两种风格的注释:

注释行

使用#开头的行都是注释,注释可以单独的写在一行,也可以写在代码的右侧。比如:

# 这是一个注释
print('hello world')  # 这是也是一个注释

文档字符串

使用三引号引起来的称为“文档字符串”,也可以视为是一种注释。比如:

"""
这是多行文本注释
第一行
第二行
第三行
...
"""

说明一下:

  • Python实际上没有多行注释的语法,能够以三引号的方式添加注释,根本原因是因为Python会忽略未分配给变量的字符串文字。
  • 这种三引号引起来的“文档字符串”,通常放在文件、函数、类的开头。

输入输出

程序需要和用户进行交互。

  • 用户把信息传递给程序的过程,称为“输入”。
  • 程序把结果展示给用户的过程,称为“输出”。

输入输出的最基本的方法就是控制台,用户可以通过控制台输入一些字符串传递给程序,程序再通过控制台将其运行结果展示给用户。

通过控制台输出

使用print函数可以将任意类型的变量输出到控制台,比如:

a = 2021
print(a)  # 2021
b = 'dragon'
print(b)  # dragon

如果想要混合输出不同类型的变量,那么就需要对输出的字符串进行格式化。比如:

age = 22
print(f'name is age years old this year')  # Bob is 22 years old this year

说明一下:

  • 使用f作为前缀的字符串,称为f-string。
  • f-string里面可以使用来内嵌一个其他的变量或表达式。

通过控制台输入

使用input函数可以从控制台读取用户输入的数据,比如:

num = input('请输入一个整数: ')
print(f'你输入的整数是num')

说明一下:

  • input的参数相当于一个“提示信息”,也可以没有。
  • input的返回值就是用户输入的内容,是字符串类型。

由于input函数的返回值是字符串类型,因此下面代码实际进行的是字符串的拼接操作。

a = input('请输入第一个整数: ')  # 10
b = input('请输入第二个整数: ')  # 20
print(f'a + b = a + b')  # 1020

如果想要进行算术运算,那么需要在运算前对读取到的值进行类型转换。比如:

a = input('请输入第一个整数: ')  # 10
b = input('请输入第二个整数: ')  # 20
a = int(a)
b = int(b)
print(f'a + b = a + b')  # 30

说明一下:

  • 通过int()的方式可以将一个变量转换成int类型。
  • 类似的,也可以通过float()bool()str()等将变量转换成对应的类型。

运算符

算术运算符

Python中的算术运算符,包括+-*/%**(幂)、//(地板除)。

注意事项:

  • 0不能做除数,否则程序会抛异常。
  • 两个整数相除后得到的是一个浮点数。
  • **可以求一个数的整数次幂,也可以求一个数的小数次幂。
  • //是地板除,整数除以整数得到的结果还是整数(舍弃小数部分,向下取整)。

关系运算符

Python中的关系运算符,包括<<=>>===!=

判断两个字符串是否相等

与C/C++等其他语言不同的是,Python中使用==!=即可判断两个字符串的内容是否相等。比如:

a = 'hello'
b = 'hello'
print(a == b)  # True

判断两个浮点数是否相等

不能直接使用==来判断两个浮点数是否相等,因为浮点数在计算机中的表示并不是精确的。比如:

a = 0.1 + 0.2
b = 0.3
print(a)  # 0.30000000000000004
print(b)  # 0.3
print(a == b)  # False

这时正确的比较方式应该是,判定这两个浮点数的差值是否小于允许的误差范围。比如:

a = 0.1 + 0.2
b = 0.3
print(a)  # 0.30000000000000004
print(b)  # 0.3
print(-0.000001 < (a - b) < 0.000001)  # True

逻辑运算符

Python中的逻辑运算符,包括andornot

  • and:并且。两侧操作数均为True,则最终结果为True,否则为False(一假则假)
  • or:或者。两侧操作数均为False,则最终结果为False,否则为True(一真则真)
  • not:逻辑取反。操作数本身为True,则返回False,本身为False,则返回True。

注意事项:

  • 在Python中,a < b and b < c等价于a < b < c,这个设定与其他编程语言都不相同。
  • 与其他编程语言类似,Python中也存在短路求值规则:对于and,如果左侧表达式为False,则整体一定为False,因此右侧表达式不再执行;对于or,如果左侧表达式为True,则整体一定为True,因此右侧表达式不再执行。

赋值运算符

Python中的赋值运算符,包括=+=-=*=/=%=**=//=&=|=^=<<=>>=

使用 = 同时对多个变量赋值

链式赋值是使用=同时对多个变量进行赋值的常见方式,比如:

a = b = 10
print(a)  # 10
print(b)  # 10

此外,Python还支持多元赋值的方式对多个变量进行赋值。比如:

a, b = 10, 20
print(a)  # 10
print(b)  # 20

多元赋值能帮我们解决一些特殊问题,比如完成两个变量的交换:

a, b = 10, 20
a, b = b, a
print(a)  # 20
print(b)  # 10

复合赋值运算符

对于复合赋值运算符+=来说,a += 1等价于a = a + 1,其他复合赋值运算符也是类似的道理。

注意事项:

  • C/C++等某些语言中支持++--运算符,但Python中不支持这种运算符,如果需要对变量进行自增/自减,则直接进行对应的+= 1/-= 1操作。

其他

除了上述运算符外,Python中还有一些运算符,比如身份运算符(isis not)、成员运算符(inin not)、位运算符(&|^~<<>>)等,本文先不做介绍。

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

java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)

java:蛇形命名法格式(snake-case)字符串变量名转驼峰命名法格式(camel-case)

python版蛇形填数

python入门基础知识

变量命名法

[算法竞赛入门]蛇形填数