Python基本语法

import this python之禅

一、python程序执行原理

python程序不需要编译,可直接从源代码执行。

执行原理

python程序运行原理
(1)把源代码编译成字节码
(2)把编译好的字节码转发到python虚拟机(PVM)中进行执行

二、代码格式

注释

单行注释:# comment
多行注释:

'''
这是由三对单引号括起来的注释
'''
"""
这是由三对双引号括起来的注释
"""

行与缩进

python使用缩进表示代码块,最好用4个空格

换行

单行代码最好不超过80个字符

三、标识符和关键字

标识符

程序中自定义的名称和符号,如变量名、函数名等

  • 由字母、数字和下划线"_"组成,且不能以数字开头
  • 区分大小写
  • 不能使用关键字

关键字

  • 帮助系统查看
>>> help()         # 进入帮助系统
help> keywords     # 查看所有的关键字列表
help> return       # 查看return这个关键字的说明
help> quit         # 退出帮助系统
  • 导入模块
>>>import keyword
>>>print(keyword.kwlist)
>>>['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']

三、输入输出

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False);

参数说明

objects:表示输出的对象。输出多个对象时,需要用逗号分隔。
sep:用于间隔多个对象,默认为空格。
end:用于设定以什么结尾。默认值是换行符 \n。
file:表示数据输出的文件对象。
flush:是否刷新缓冲区

input(promt=None, /);

四、运算符

算术运算符

运算符功能说明
+
-
*
**幂运算
/
//整除/地板除
%求余

赋值运算符

=,把等号右边的值赋给左边
为多个变量同时赋值:x = y = z = 1
python还支持将多个值赋给多个变量:x, y = 1, 2
可与算术运算符一起组合成复合赋值运算符,如+=-=*=

比较运算符

运算符描述
==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于

逻辑运算符

运算符描述示例
and布尔“与”x and y
or布尔“或”x or y
not布尔“非”not x

成员运算符

用于判断指定序列中是否包含某个值,如果包含,返回True,否则返回False

运算符描述
in如果在指定的序列中找到值返回 True,否则返回False
not in如果在指定的序列中没有找到值返回True,否则返回False

位运算符

用于按二进制位进行逻辑运算,操作数必须为整数。

运算符描述
<<按位左移
>>按位右移
&按位与
|按位或
^按位异或
~按位取反

运算符优先级

五、基本数据类型

在这里插入图片描述

5.1 整型int

进制

  • 十进制
  • 二进制("0b""0B"开头)
  • 八进制(数字"0"开头)
  • 十六进制("0x""0X"开头)

进制转换函数

bin() #将十进制数转换为二进制
oct() #将十进制数转换为八进制
hex() #将十进制数转换为十六进制

长整型(long)

5.2 bool类型

可看做一种特殊整形,只有两个取值(True:1,False:0)
每一个python对象都天生具有布尔值,进而可用于布尔测试(如if、while等的判断)

5.3 浮点型float

表示实数。可用科学计数法:<实数>E或者e<整数>
Python浮点型遵循的是IEEE 754双精度标准,每个浮点数占**8个字节**,能表示的数的范围是−1.8E308~1.8E308。超过范围报错-infinf

5.4 复数类型complex

复数由实部和虚部构成,表示为real+imagjreal+imagJ
复数的实部和虚部都是浮点型

5.5 数字类型转换

函数描述
int(x[, base])将x转换为一个整数,默认10进制
float(x)将x转换为一个浮点数
complex(real[, imag])创建一个复数

六、组合数据类型

(1)序列存储一组排列有序的元素,通过索引可以锁定序列中的指定元素
(2)集合同样存储一组数据,要求其中数据必须唯一,但不要求数据间有序
(3)映射类型存储的每个元素都是一个键值对,通过键来获取对应的值

6.1 序列类型

来源于数学中的数列。Python进行了扩展,支持双向索引:正向递增索引(0开始)和反向递减索引(-1开始)
Python中的序列类型主要有三种:字符(串)型str(单一字符组成,不可修改)、列表(可以修改)、元组(不可变)
支持切片[start:end:step]和下标索引

6.2 字符(串)型str

表示方式

  • 第一种:单引号' '
  • 第二种:双引号" "
  • 第三种:三引号,三单引号''' '''或三双引号""" """

转义字符

反斜线\开头

访问值

  • 字符串连续存储,可用下标访问
  • 支持切片截取字符串:[start:end:step]

格式化字符串

  • % 与C语言类似
  • format()
  • f-string

字符编码

Python3字符串默认是Unicode编码

  • ord():获取单个字符的整数编码
  • ~chr():把编码转换为对应的字符表示
  • str.encode("编码"):将字符串转换成指定编码类型的bytes数据
  • bytes.decode("编码"):将bytes数据转换成指定编码类型的字符串

字符串内建函数

查找统计

#检测字符串中是否包含子字符串sub,包含则返回开始的索引值,否则返回-1
#sub:指定检索的字符串
#start:开始索引,默认为0
#end:结束索引,默认为字符串的长度
str.find(sub[,start[,end]])

#检测字符串中是否包含子串sub,包含则返回开始的索引值,否则抛出异常
str.index(sub[, start[, end]])

#统计字符串里子串sub出现的次数
str.count(sub[,start[, end]])

#判定字符串是否以指定前缀开始/后缀结尾,是则返回True,否则返回False
str.startwith(suffix[, start[, end]])
str.endwith(suffix[, start[, end]])

替换分隔

#把字符串中的old(旧字符串)替换成new(新字符串),返回替换后生成的新字符串。
#如果指定了第三个参数max,则替换不超过max次
str.replace(old, new[, max])

#通过指定分隔符对字符串进行切片,如果参数 maxsplit 有指定值,则仅分隔
#maxsplit个子字符串,该方法的返回值是分隔后的字符串列表。
#sep:分隔符,默认为所有空字符,包括空格、换行(\n)、制表符(\t)等。
#maxsplit:分割次数。
str.split(sep = None,maxsplit = -1)

大小写

#将字符串的第一个字母变成大写,其他字母变小写并返回
str.capitalize()
#返回“标题化”的字符串,即所有单词首字母大写,其余小写
str.title()
str.upper() #返回所有字母变大写后的字符串
str.lower() #返回所有字母变小写后的字符串

对齐

str.ljust(width, fillchar=' '])
str.rjust(width, fillchar=' '])
str.center(width, fillchar=' '])

截取

#截取字符串左边/右边/两边的空格或指定字符,并返回截取后的新字符串
str.lstrip(chars=None)
str.rstrip(chars=None)
str.strip(chars=None)

6.3 列表list

列表的长度和元素都是可变的。用"[]"包含,元素用,分割
list()函数将已有字符串或元组转换为列表

常见操作

#操作      		说明
len(s)			#计算序列s的长度(元素个数)
min(s)			#返回序列s中的最小元素
max(s)			#返回序列s中的最大元素
list.append(x)	#在列表list的末尾添加元素x
list.extend(lx)	#在列表list中添加列表lx的元素,与+=功能相同
list.insert()	#在列表list索引为i的元素之前插入元素x
list.pop([i])	#取出并删除列表list中索引为i的元素x
list.remove(x)	#删除列表list中第一次出现的元素x
list.reverse()	#将列表list的元素反转
list.clear()	#删除列表list中的所有元素
list.copy()		#生成新列表,并拷贝列表list中的所有元素
list.sort()		#将列表list中的元素排序

列表和数组的区别

(1) 数组在创建时需要分配大小,数组的大小是固定的,只能容纳有限的元素。列表则没有预先分配大小的要求,可以在使用的过程中动态地插入任意数量的元素。
(2) 数组和列表都可以存储任意类型的元素,但是数组中要求元素的类型必须是一样的,要么都是数字类型,要么都是字符串或其它类型。列表则没有这个要求,它可以存储不同整数、浮点数、字符串、甚至列表。

列表生成式list comprehensions

6.4 元组tuple

6.5 集合类型set

Python集合与数学中的集合概念一致,具有确定性、互异性、无序性三个特征。
Python要求放入集合中的元素必须是不可变类型
python中所有可做Hash运算的类型都可视为不可变类型​

常见操作

赋值创建:set_demo = {100, ‘a’, 10.5}
set()函数创建,空集合只能用set()函数创建

set.add(x)		#往集合S中添加元素x(x不属于S)
set.remove(x)	#若x在集合S中,则删除该元素,不在则产生KeyError异常
set.discard(x)	#若x在集合S中,则删除该元素,不在则不会报错
set.pop()		#随机返回集合S中的一个元素,同时删除该元素。若S为空,则产生KeyError异常
set.clear()		#删除集合S中的所有元素
set.copy()		#返回集合S的一个拷贝
set.isdisjoint(T)	#若集合S和T中没有相同的元素,则返回True
集合关系测试

6.6 字典类型dict

映射类型也称可变的哈希表(散列表)
创建字典:{键1:值1, 键2:值2,....... 键N:值N}

常见操作

#操作			说明
d = dict()
dict.keys()		#返回字典d中所有的键信息
dict.values()	#返回字典d中所有的值信息
dict.items()	#返回字典d中所有的键值对信息
dict.get(key[, default]) #若键存在于字典d中返回其对应的值,否则返回默认值
dict.clear()	#清空字典
dict.pop(key[, default]) #若键存在于字典d中返回其对应的值,同时删除键值对,否则返回默认值
dict.popitem()	#随机删除字典d中的一个键值对
del d[key]		#删除字典d中的某键值对
len(d)			#返回字典d中元素的个数
min(d)			#返回字典d中最小键所对应的值
max(d)			#返回字典d中最大键所对应的值

七、流程控制

7.1 分支跳转

if condition:
	block
	
if condition:
	block1
else:
	block2
	
if condition1:
	block1
elif condition2:
	block2
else
	block3

7.2 循环语句

#方式1:for循环
for var in iterable:
    [循环体]

#方式2:while循环    
while condition:
    [循环体]

跳转

break跳转最近一级的循环
continue跳出当前循环,继续执行下一次循环

生成循环变量

  • range()
    生成一个整数序列。如:for i in range(5):
  • enumerate()
  • zip()

迭代iteration

Python的for循环可作用在一起可迭代(iterable)对象上

判断对象是否可迭代

from collections.abc import Iterable
isinstance(obj, Iterable)

八、函数

8.1 定义和调用

定义函数

def 函数名([参数列表]):["函数文档字符串"]
​    函数体
​    [return语句]

调用函数

函数名([参数列表])

空函数
pass占位符

8.2 参数传递

位置参数

默认参数

不定长参数

命名关键字参数

关键字参数

8.3 递归函数

8.4 匿名函数

lambda [arg1 [,arg2,.....argn]]:expression

8.5 常用内置函数

内置函数 – Python 3.11.3 文档

abs()
len()
help()
ord()
chr()
isinstance()
map()
filter()

8.4 闭包

如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被称为闭包。闭包需要满足如下三个条件:

(1)存在于嵌套关系的函数中。
(2)嵌套的内部函数引用了外部函数的变量。
(3)嵌套的外部函数会将内部函数名作为返回值返回。

装饰器

迭代器

生成器

九、文件操作

9.1 基本操作

打开文件

open(file, mode='r', encoding=None)

文件打开模式

打开模式名称描述
r/rb只读模式以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,open()函数将调用失败
w/wb只写模式以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建文件
a/ab追加模式以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件
r+/rb+读取(更新)模式以读/写的形式打开文本文件/二进制文件,如果文件不存在,open()函数调用失败
w+/wb+写入(更新)模式以读/写的形式创建文本文件/二进制文件,若文件已存在,则重写文件
a+/ab+追加(更新)模式以读/写的形式打开文本/二进制文件,但只允许在文件末尾添加数据,若文件不存在,则创建新文件

关闭文件

file.close()

读取文件

file.read([size])
file.readline()
file.readlines()#返回一个列表

写入文件

file.write(str)
file.writelines([str])

文件的定位读取

file.tell()#获取当前文件读写的位置
file.seek(offset, from)#设置当前文件读写位置
'''
from参数:
0:文件开头
1:当前位置
2:文件末尾
'''

9.2 os系统库操作

重命名文件

os.rename(old_name, new_name)

目录操作

# 创建目录
os.mkdir(path, mode)
# 获取目录下的文件列表
os.listdir(path)

文件路径操作

import os

#是否是绝对路径
os.path.isabs(path)
#将路径规范为绝对路径:
os.path.abspath(path)
#获取当前路径:
os.getcwd()
#检测路径有效性,是否存在:
os.path.exists(path)
#路径拼接:
os.path.join(path1[,path2[,]])

十、模块

分类

  • 内置模块
  • 第三方模块
  • 自定义模块

导入模块

import module1, module2, ...
from module import func/class/* [as alias]

十一、包

十二、异常

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Roc大鹏君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值