目录
Python运算符与表达式
在python中,单个常量或变量可以看作最简单的表达式,使用除赋值运算符之外的其他任意运算符连接的式子也属于表达式,在表达式中可以包含函数调用。
注意:+号不支持不同类型的对象之间相加或连接;+和*都可用于列表、元组、字符串;生成新的序列对象;关系运算符可以像数学中那样连用
# @author hanhan
# date 2022/5/17 16:57
# 努力已经来不及了,你得拼命
print('~~~~算术运算符~~~~')
print(12+23)#加法
print(12-3)#减法
print(2*4)#乘法
print(10/3)#除法运算
print(10//3)#整除运算 3
print(10%3)#取余运算
print((2**3))#幂运算 2的三次方
#一正一负的整除公式,向下取整
print(-9//4) # -3
print(9//-4) # -3
# 一正一负的取余公式 公式:余数=被除数-除数*商
print(-9%4) # 3
print((9%-4)) # -3
print('~~~~赋值运算符~~~~')
i=12+2
print(i)
a=b=c=100 # 链式赋值
#a\b\c指向的是同一个地址对象,id是一样的
print(a,id(a))
print(a,id(b))
print(a,id(c))
# 支持参数赋值
a=10
a+=12 #等价于:a=a+12
print(a) # 22
a-=2 #等价于:a=a-2
print(a) # 20
a*=2 #相当于:a=a*2
print(a) #40
# 支持系列解包赋值
a,b,c = 12,23,34
print(a) # 12
print(b) # 23
print(c) # 34
# 比较运算符 比较运算符的结果为bool类型
print('~~~~比较运算符~~~~')
a=12
b=34
print(a<b)
print(a>b)
print(a<=b)
print(a>=b)
print(a==b) # ==比较的是两个值
# 用is比较的是两个id
a=12
z=12
print(a==z) # True
print(a is z) # True
print(a is not z) # False
速记:and——>一真即真
or——>一假即假
not——>直接取相反
# @author hanhan
# date 2022/5/17 22:47
# 努力已经来不及了,你得拼命
#布尔运算符
print("~~~~and~~~~")
a,b=12,34
print(a==12 and b==34) # True
print(a==12 and b!=34) # False
print(a!=12 and b==34) # False
print(a!=12 and b!=34) # False
print("~~~~or~~~~")
print(a==12 or b==34) # True
print(a==12 or b!=34) # True
print(a!=12 or b==34) # True
print(a!=12 or b!=34) # False
print("~~~~not~~~~")
a=True
b=False
print(not a) # False
print(not b) #True
print("~~~~in 和 not in 运算符")
s='hello'
print('w' in s) # False 表示字符串s中不含有w
print('w' not in s) # True
# 位运算符
print(2&3) #按位与& 同时为1时结果为1,否则为0
print(2|3) # 按位或| 同时为0时结果为0,否则为1
print(8<<2) #左移两位 左移一次相当于乘以一次2
print(8>>2) #右移两位 右移一次相当于除以一次2
运算符的优先级
常用内置函数用法
概述:内置函数不需要额外导入任何模块即可直接使用,具有非常快的运行速度,推荐优先使用。
使用 dir(__builtins__)语句可以查看所有的内置函数和内置对象;使用help(函数名)可以查看某个函数的用法。
Python所有的内置函数和内置对象
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
- 输出函数print
在输出函数中修改end=' '参数,可以实现不换行输出
注意:python在输出语句中加号只能连接字符串,不能加数字(加数字的话可以用逗号)。
#print('勇士总冠军'+12)#输出就会报错
print('勇士总冠军',12)#正常输出
# @author hanhan
# date 2022/5/16 17:02
# 努力已经来不及了,你得拼命
#输出函数print
print(12)#输出一个整数
print(12.34)#输出一个小数
print('智者不入爱河 建设美丽中国')#输出字符串,单引号双引号都可以
print(12*34)#输出408
#输出到文件中去
file=open("D:/Demo.txt","a+")#第一个参数是文件名,文件不一定存在,但盘符一定存在。第二个参数是如果文件不存在,则创建文件;若文件存在,则在该文件后面进行追加
print("hello world",file=file)
file.close()
#不换行输出
print('hello','world')#用逗号分隔输出会在一行
- 输入函数input()
不论用户输入什么内容,input()一律作为字符串对待,必要时候可以使用内置函数int()、float()、eval()对用户输入的内容进行类型转换
# @author hanhan
# date 2022/5/17 16:38
# 努力已经来不及了,你得拼命
p=input('你最喜欢的球星是?')
print(p,type(p))#<class 'str'> 无论你输入什么内容,都是str类型的
#要想要得到其他类型,可以直接进行类型的转换
q=int(input("请输入一个整数:"))
print(q,type(q))
- 内置函数bin()、oct()、hex()用来将整数转换为二进制、八进制和十六进制形式,这三个函数都要求参数必须为整数。
print(bin(12)) #把数字转换为二进制
print(oct(12)) #把数字转换为八进制
print(hex(12)) #把数字转换为十六进制
- 内置函数float()用来将其他类型数据转换为实数,complex()可以用来生成复数。str()则直接将其任意类型参数转换为字符串。
注意:str类型的转int或者float时候,引号内必须是所转的类型。不能有非数字的东西。
# @author hanhan
# date 2022/5/17 12:54
# 努力已经来不及了,你得拼命
#int()函数 将其他类型的转成整型
q='12'
w='12.3'
e=True
r=12.23
print(int(q),type(int(q)))#可转 结果:12
#print(int(w),type(int(w)))不可转
print(int(e),type(int(e)))#可转 结果:1
print(int(r),type(int(r)))#可转 结果:12
#str()函数
t=12.3
y=123
u=False
print(str(t),type(str(t)))#可转
print(str(y),type(str(y)))#可转
print(str(u),type(str(u)))#可转
#float()函数
a='12'
s=123
d=True
f='123.45'
print(float(a),type(float(a)))#可转 结果:12.0
print(float(s),type(float(s)))#可转 结果:123.0
print(float(d),type(float(d)))#可转 结果:1.0
print(float(f),type(float(f)))#可转 结果:1.0
print(complex(3)) #(3+0j) 一个参数的话只是实部
print(complex(3,4)) #(3+4j) 两个参数的话是实部和虚部
- ord()用来返回单个字符的unicode码,而chr()则用来返回Unicode编码对应的字符。
print(ord('A')) #65
print(chr(65)) #A
-
list()、tuple()、dict()、set()用来把其他数据类型的数据转换为列表、元组、字典和可变集合,或者创建空列表、空元组、空字典和空集合。
-
内置函数eval()用来计算字符串的值,在有些场合下也可以实现类型转换的功能。
print(eval('3+5')) #8
print(eval('10')) #10
print(eval(str([1, 2, 3, 4]))) #[1, 2, 3, 4]
- 内置函数type()和isinstance()可以用来判断数据的类型
print(type(12)) #<class 'int'>
print(isinstance(12,int)) #True
-
max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他包含有限个元素的可迭代对象中所有元素最大值、最小值以及所有元素之和。函数max()、min()还支持key参数,用来指定比较大小的依据或规则,可以是函数或者lambda表达式
-
排序与逆序
sorted()可以对列表、元组、字典、集合或其他可迭代对象进行排序并返回新列表,支持使用key参数指定排序规则,其含义和用法与max()、min()函数的key参数相同。
- 枚举enumerate()函数
enumerate函数用来枚举可迭代对象中的元素,返回可迭代的enumerate对象,其中每个元素都是包含索引和值的元组。在使用时,既可以把enumerate对象转换为列表、元组、集合,也可以使用for循环直接遍历其中的元素
- map函数
内置函数map()把一个函数func依次映射到序列的每个元素上,并返回一个可迭代的map对象作为结果,map对象中每个元素是原序列中元素经过函数func处理后的结果,map()函数不对原序列作任何修改。
print(list(map(str,range(5)))) #把列表中的元素转换为字符串
def add(a):
return a+1
print(list(map(add,range(5)))) #把单参数函数映射到一个序列的所有元素
-
reduce函数
reduce函数可以将一个接受两个参数的函数以迭代累积的方式从左到右依次作用到一个序列或迭代器对象的所有元素上,并且允许指定一个初始值。
- filter函数
内置函数filter()将一个单参数函数作用到一个序列上,返回该序列中使得该函数返回值为True的那些元素组成的filter对象,如果指定函数为none,则返回序列中等价于True的元素。使用时候,可以把filter对象转换为列表、元组、集合,也可以直接使用for循环遍历其中的元素。
- range()函数
range函数是常用的一个内置函数,语法格式为range([start,]stop[,step]),有range(stop)、range(strat,stop)和range(start,stop,step)三种用法;该函数返回具有惰性求值特点的range对象,包含左闭右开区间[start,stop)内以step为步长的整数,其中参数start默认为0,step默认为1。
- zip函数
zip()函数用来把多个可迭代对象中对应位置上的元素压缩到一起,返回一个可迭代的zip对象,其中每个元素都是包含原来多个可迭代对象对应位置上元素的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个。
l=[1,2,3,4]
s='asd'
print(list(zip(l,s)))
转义字符
# @author hanhan
# date 2022/5/16 18:13
# 努力已经来不及了,你得拼命
#转义字符
print('hello\nworld')#\n表示换行
print('hello\tworld')
print('helloo\tworld')#常用于调整格式
print('hello\rworld')#\r表示回车
print('hello\bworld')#\b表示的是退一格,即把前面一个字符删除了
#在实际开发中,如果想要输出\或者单引号,则必须在前面加上一个\
print('\\\\')
print('\'偶然\'')
#原字符:不希望字符串中的转义字符起作用,就使用原字符,就是指在字符串之前加一个r或者R。前提:字符串的最后一个字符不能是反斜杠\
print(r'hello\nworld')
标识符和保留字
标识符:变量、函数、类、模块、和其他对象起的名字就叫标识符
规则:
- 只能有数字、下划线、字母
- 不能是以数字开头
- 不能是保留字
- 严格区分大小写
python中的保留字可以通过代码来查看
# @author hanhan
# date 2022/5/16 19:39
# 努力已经来不及了,你得拼命
import keyword
print(keyword.kwlist)#输出py中的所有保留字
'''['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']'''
变量的定义和使用
概述:在Python中,不仅变量的值是可以变化的,变量的类型也是随时可以发生改变的;同时也不需要事先声明变量名及其类型,赋值语句可以直接创建任意类型的变量。因为python变量并不直接存储值,而是存储了值的内存地址或者引用
变量由三部分组成:
- 标识:表示对象所存储的内存地址,使用内置函数id来获取
- 类型:表示的是对象的数据类型,使用内置函数type来获取
- 值:表示对象所存储的具体数据,使用print可以将值进行打印输出
# @author hanhan
# date 2022/5/16 20:36
# 努力已经来不及了,你得拼命
age=18
age='保罗'
print('标识:',id(age))
print('类型:',type(age))
print("值:",age)
一个变量每重新赋值一次,都会指向新的对象地址。
数据类型(Python内置对象)
整数类型(int):整型包括正数负数和零,默认是十进制,二进制以0b开头,八进制是以0o开头,十六进制以0x开头。
浮点数据类型(float):浮点型有时候会出现精度问题,可以采用导入模块decimal。
复数(complex):python支持复数及其运算。
布尔类型(bool): 只有两个。True和Fale,True表示1,False表示的是0;可以直接对bool类型的变量进行加减操作。
字符串类型(str):字符串又被称为不可变的字符序列,可以用单引号、双引号、三引号(指三个单引号或者三个双引号)来定义,单引号和双引号定义的字符串必须是在同一行,三引号定义的字符串可以分布在连续的多行。字符串前面使用字母r或R引导表示原始字符串。不同的定界符之间可以互相嵌套,字符换可以使用加号相加,使用乘号运算符对字符串进行重复eg:"有了python,放弃Java"
字节串(bytes):以字母b引导。eg:b"hello world"
注释
单行注释:以#开头,直到换行结束
多行注释:将一对三引号之间的代码称为多行注释
中文编码声明注释:在文件开头加上中文声明注释,用以指定源码文件的编码格式。eg:#coding:gbk