import this
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
。超过范围报错-inf
或inf
5.4 复数类型complex
复数由实部和虚部构成,表示为real+imagj
或real+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)
文件打开模式文章来源:https://www.toymoban.com/news/detail-427812.html
打开模式 | 名称 | 描述 |
---|---|---|
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系统库操作
重命名文件文章来源地址https://www.toymoban.com/news/detail-427812.html
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]
十一、包
十二、异常
到了这里,关于Python基本语法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!