Python基础语法知识

1.Python简介

Python:简洁而优雅
Python的优点:

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

Python的缺点:

  1. 执行效率比较弱。
  2. 对于多核心并发程序支持偏弱。
  3. 动态类型系统对于大型项目不太友好。

Python采用的是动态类型系统,因此一个变量的类型在程序运行的时候是可以发生改变的。

2.基础语法

2.1 定义变量

python定义变量的语法比较简单

a = 10

基础命名规则:

  1. 变量名由数字,字母,下划线组成
  2. 变量不能以数字开头
  3. 变量名不能和Python的关键字重复
  4. 变量名字母大小写区分

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

a = 10   
print(a)  #10

b = 20    #初始化
b = a     #重新赋值 
print(b)  #10

2.2 变量类型

type是Python中的一个内置函数,可以使用type函数来查看一个变量的类型。

a = 10
print(type(a)) #

a = a / 2
print(a)       #5.0 
print(type(a)) #

a = 'hello'
print(type(a)) #

int

  • 与C/C++等其他语言不同的是,Python中int类型的变量能够表示的数据范围是没有上限的,只要内存足够大,理论上就可以表示无限大的数据。

float

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

str

  • 字符串可以是用“单引号”、“双引号”、“三单引号”或者“三双引号”引起来的一串字符序列
  • 使用“三单引号”或“三双引号”可以将多行字符串赋值给变量。
  • 可以使用len函数来获取字符串的长度
  • 可以使用+对两个字符串进行拼接
a = '2023 '  
b = "11_28 "  
c = '''17:36'''  
d = """  
111  
222  
abc  
  
def  
"""
print(a+b+c) #2023 11_28 17:36
print(len(a+b+c)) #16


print(d)
#111
#222
#abc
#
#def

bool

  • bool 类型的取值只有 True 和 False
a = True
print(type(a))      #

2.3 动态类型特性

  • 动态类型: 在运行时,解释器基于变量值的类型决定变量的类型。
  • 静态类型: 在编译时,编译器基于所声明的数据类型确定变量的类型。
  • C/C++等大多数语言都是静态类型语言,在编写静态类型语言的代码时,必须声明变量的数据类型
  • Python则是一种动态类型语言, 因此在编写Python代码时不用声明变量的数据类型。
  • 由于动态类型语言中,变量的类型是取决于变量值的类型,因此Python中同一个变量在不同时刻的类型可能是不同的

动态类型的特性

  1. 对于中小型的项目,显著减少代码量
  2. 对于大型程序,增加了模块间交互成本

2.4 注释

  • 使用#开头的行都是注释
  • 使用三引号引起来的称为“文档字符串”,也可以视为是一种注释
# 注释该行


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

2.5 输入输出

  • 通过控制台输入
  • 如果想要混合输出不同类型的变量,那么就需要对输出的字符串进行格式化
  • 使用f作为前缀的字符串,称为f-string。
  • f-string里面可以使用{}来内嵌一个其他的变量或表达式。
a = input('请输入a:')   # 12
b = input('请输入b:')   # 34
print(f'{a} + {b} = {a+b}') #1234
  
a = int(a)  
b = int(b)  
print(f'{a} + {b} = {a+b}') # 46
  • input的参数相当于一个“提示信息”,也可以没有。
  • input的返回值就是用户输入的内容,是字符串类型
  • 由于input函数的返回值是字符串类型,第一个加法代码实际进行的是字符串的拼接操作。
  • 如果想要进行算术运算,那么需要在运算前对读取到的值进行类型转换,如第二个加法
    • 通过int()的方式可以将一个变量转换成int类型。
    • 也可以通过float()bool()str()等将变量转换成对应的类型。

2.6 运算符

2.6.1 算术运算符

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

注意:

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

2.6.2 关系运算符

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

  • C/C++中常用函数来比较两个字符串(strcmp,strncmp)
  • 与C/C++等其他语言不同的是,Python中使用==!=即可判断两个字符串的内容是否相等。
  • 不能直接使用==来判断两个浮点数是否相等,因为浮点数在Python中的表示并不是精确的。
a = 'hello'  
b = 'hello'  
c = "world"  
print(a == b)  # True
print(a == c)  # False

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

2.6.3 逻辑运算符

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,右侧表达式不再执行。

2.6.4 赋值运算符

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

  • 链式赋值是使用=同时对多个变量进行赋值的常见方式
  • 多元赋值的方式对多个变量进行赋值
  • 多元赋值能帮我们解决一些特殊问题,比如完成两个变量的交换
a = b = 1  #链式
print(a)  # 1  
print(b)  # 1

a, b = 1, 2  #多元
print(a)  # 1  
print(b)  # 2

a, b = b, a  #交换变量
print(a)  # 2  
print(b)  # 1

注意:

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

2.7 条件语句

正常情况:

a = input('请输入: ')  
if a == 'a':  
    print('a')  
elif a == 'b':  
    print('b')  
else:  
    print("输入非法")
  • 条件表达式和else后面使用:作为结尾。
  • 对于多条件分支,不是写作else if,而是elif。
  • 命中条件后要执行的语句块,使用缩进来区分各个代码块。
  • Python当中的if语句也支持嵌套。

简写:

a = 3  
b = 3  
if a > b: print('a>b')  
print('a>b') if a > b else print('a<=b') #a<=b  
print('a>b') if a > b else print('a==b') if a==b else print('a
  • 比较特殊的是这种简写的条件语句,如果是if,else这种需要把if成立后的语句写在开头

示例:
输入一个数,判断是否为奇数

a = int(input('请输入: '))  
if a%2 == 1:  
    print('这是一个奇数')  
else:  
    print('这是一个偶数')
  • 需要注意的是,在python中即使是负数,负奇数对2取余后得到的是1

2.8 缩进和代码块

Python中使用缩进来表示不同的代码块,不同级别的缩进,程序的执行效果是不同的。

a = int(input('请输入: '))
if a == 1:  
    print('a')  #属于if中的语句
    print('aa')  #属于if中的语句
  
if a == 1:  
    print('b')   #属于if中的语句
print('bb')      #不属于if中的语句

2.9 空语句pass

Python语法规定,if语句、while语句、for语句、函数体、类定义等都不能为空,如果因为某些原因写了对应无内容的语句,就需要使用pass语句来避免语法报错

if a < b:
pass
  • 空语句pass并不会对程序的执行有任何影响,只是占个位置,保持Python语法格式符合要求。

2.10 循环语句

2.10.1 while循环

语法

a = 1  
while a < 10:  
    print(a)  
    a += 1  
else:  
    print(f'a limit {a}')
  • 在条件表达式和else后面使用:作为结尾。
  • 命中条件后要执行的语句块,使用缩进来区分各个代码块。
  • Python当中的while循环也支持嵌套。
  • 在循环体当中使用break语句,可以跳出循环。
  • 在循环体当中使用continue语句,可以停止当前的迭代,并继续下一次迭代。
  • 如果使用了else语句,那么当循环条件不再成立时,会执行一次else代码块。

2.10.2 for 循环

语法

for i in range(10):  
    print(i) # 0 1 2 3 4 5 6 7 8 9
  • 可迭代对象包括列表、元组、字典、集合、字符串等。
  • 在可迭代对象和else后面使用:作为结尾。
  • 命中条件后要执行的语句块,使用缩进来区分各个代码块。
  • Python当中的for循环也支持嵌套。
  • 在循环体当中使用break语句,可以跳出循环。
  • 在循环体当中使用continue语句,可以停止当前的迭代,并继续下一次迭代。
  • 如果使用了else语句,那么当循环条件不再成立时,会执行一次else代码块。

range函数
range(start, stop, step)

  • 第一个参数代表的是数字序列的起始值,默认为0。
  • 第二个参数代表的是数字序列的结束值(不包括结束值)。
  • 第三个参数代表的是数字序列的增量值(步长),默认为1。
  • rang函数生成的区间是左闭右开
  • range函数经常和for循环搭配使用,其可以返回一个数字序列(可迭代对象)。

range函数的三种使用方式:
range(end):返回的数字序列为1,2,3,…,end-1。
range(start, end):返回的数字序列为start,start+1,start+2,…,end-1。
range(start, end, step):返回的数字序列为start,start+step,start+2× \times×step,…,start+n× \times×step。

for i in range(2,10):  
    print(i) # 2 3 4 5 6 7 8 9  
  
for i in range(5, 10,2):  
    print(i) # 5 7 9  

for i in range(10,3,-2):   
    print(i) # 10 8 6 4

你可能感兴趣的:(Python,python,服务器,开发语言)