python基础(一)
python语言特点
解释型语言 | 代码执行过程中通过解释器将代码转换为机器语言,并立即执行;编译型语言执行前需要经过编译整个代码文件为机器语言的可执行文件,然后执行能找出大部分错误 | |
错误处理 | 解释型语言在运行时发现错误,编译型语言在编译时 | |
执行速度 | 编译型语言比解释型语言执行更快,因为其代码是直接的机器码 | |
平台依赖 | 编译语言生成平台特定可执行文件,解释型语言则更为跨平台,因为只需要对应平台的解释器 | |
支持面向对象、过程化编程和函数式编程,应用广泛,通过模块和包机制高度复用和模块化设计; web:Django,Flask等框架 数据分析:Pandas、NumPy等 网络爬虫: Scrapy 人工智能:TensorFlow、Keras 自动化测试:Selenium自动化测试 游戏开发:Pygame库2D 科学计算:Scipy 区块链: Hyperledger、Ethereum 嵌入式: MicroPython |
标识符
标识符是允许作为变量(函数、类等)名称的有效字符串。有一部分是关键字,语言本身保留的标识符,这些是不能做它用的标识符的,否则会引起语法错误(SyntaxError 异常);
Python 是动态类型语言, 不像C++那种静态型语言定义的时候都要明确类型,python不需要预先声明变量的类型。 变量的类型和值在赋值那一刻被初始化,变量赋值通过等号来执行。
Python的有效标识符由大小写字母、下划线和数字组成,数字不能作为开始字符,标识符的长度一般不限,Python标识符是严格大小写敏感的。
保留字
False | None | True | and | as | assert | async | await | break | class |
continue | def | del | elif | else | except | finally | from | global | import |
for | lambda | not | with | pass | while | nonlocal | yield | raise | return |
if | in | is | or | try |
number=12
my_var=1
_temp='hell' #' ' 与"" 定义字符串,使用#单行注释
str_tem="world"
#1wo='sd' #表示符 error SyntaxError: invalid decimal literal
#if=1 SyntaxError: invalid syntax
def my_func():'''多行注释,注意行缩进规则'''sum_temp=number+\my_varday=['m','t', #换行'w']print(sum_temp) #13print(day) #['m', 't', 'w']
my_func()
运算符
算数运算符 | 比较运算符 |
| |
赋值运算 | 位运算 |
| |
逻辑运算符 | 成员运算符、身份运算符 |
| |
条件/循环/控制语句
条件语句 | 循环、控制语句 |
| |
数据类型
变量存储在内存中的值,在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中,可以执行什么样的操作。python基本数据类型一般分为:数值(Numbers)、字符串(String)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)
变量赋值
Python 中的变量赋值不需要类型声明,等号 = 用来给变量赋值,变量赋值以后该变量才会被创建,每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
num = -100 # 赋值有符号整型变量
weight = 100.0 # 浮点型
name = "hello" # 字符串 or name1='hell' or name2='''hell'''
bool_value = True # 布尔值
list_val = [1, 2, 3, 4, 5] # 列表
tuple_val = (1, 2, 3, 4, 5) # 元组
dict_val = {'name': 'AC', 'age': 25} # 字典
set_val = {1, 2, 3, 4, 5} # 集合
#创建一个整型对象,值为1,三个变量被分配到相同的内存空间上
a = b = c = 1 #多变量赋值
#两个整形对象和一个字符串对象
a1,b1,c1=1,2,'wold'
字符串与列表
str字符串 | list |
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用,支持切片操作 | 序列都可以进行的操作包括索引,切片,加,乘,检查成员。元素可以是list,列表的数据项不需要具有相同的类型。 |
| |
字符串内置函数
s="hello wo"
s.encode(encoding='utf#8', errors='sict') # 返回字符串的编码版本,默认使用 UTF#8 编码
s.endswith('wo') #True 检查字符串是否以指定的后缀结尾,可以指定搜索的范围
s.expandtabs(tabsize=8) # 替换字符串中的 tab 符号(\t),默认一个 tab 替换为 8 个空格
s.find('wo') #6 找到子串 sub 第一次出现的位置,可以指定搜索的范围
s.index('ll') #2 和 s.find 类似,但如果子串不存在会抛出异常
s.isalnum() #False 检查字符串是否只包含字母和数字
s.isalpha() #False 检查字符串是否只包含字母
s.isdecimal() #False 检查字符串是否只包含十进制数字
s.isdigit() #False 检查字符串是否只包含数字
s.islower() #True 检查字符串中所有的字母是否都是小写
s.isnumeric() #False 检查字符串中所有的字符是否都是数字
s.isspace() #False 检查字符串是否只包含空格
s.istitle() #False 检查字符串中的单词是否都是首字母大写
s.isprintable() #True 检查字符串中的字符是否都是可打印的
s.join('abc') #ahello wobhello woc 将可迭代对象中的元素连接起来,元素必须都是字符串
s.ljust(6) # 返回一个指定宽度 width 左对齐的字符串,默认使用空格填充
s.lower() # 将字符串中的所有大写字母转换为小写
s.lstrip() # 去除字符串左侧的空白或指定字符lsip([chars])
s.rstrip() # 去除字符串右侧的空白或指定字符lsip([chars])
s.strip() #首尾空格
s.replace('wo', 'world') # 返回字符串中 old 被替换为 new 的新字符串,可以指定最大替换次数
s.rfind('l') #3 和 s.find 类似,但从右边开始搜索
s.rindex('l') #3 和 s.index 类似,但从右边开始搜索
s.rjust(7) # 返回一个指定宽度 width 右对齐的字符串,默认使用空格填充
s.rpartition(' ') # 类似 s.partition,但是从右边开始搜索分隔符
s.upper() #'HELLO WO' 转大写
s.lower() #转小写
s.capitalize() #'Hello wo' 首字母大写
s.title() #'Hello Wo' 标题化 每个单词大写
列表操作
#list列表操作
la = ['a', 'b', 'a', 'c']
la1=['k','p']
#list.append(obj) 在列表末尾添加新的对象
la.append('g') #['a', 'b', 'a', 'c', 'g']
#在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
la.extend(la1) #['a', 'b', 'a', 'c', 'g', 'k', 'p']
la.count('a') #2 list.count(obj) 统计某个元素在列表中出现的次数
la.index('b') #1 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
la.insert(0,'x') # list.insert(index, obj) 将对象插入列表
#ist.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
la.pop() #['x', 'a', 'b', 'a', 'c', 'g', 'k']
la.pop(0) #['a', 'b', 'a', 'c', 'g', 'k']
#list.remove(obj) 移除列表中某个值的第一个匹配项
la.remove('a') #['b', 'a', 'c', 'g', 'k']
la.reverse() #['k', 'g', 'c', 'a', 'b'] 反向列表中元素
#list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
la.sort()#['a', 'b', 'c', 'g', 'k']
元组-字典
元组tuple | 字典 |
元组的元素不能修改,创建空元组tp=(), 只有一个元素tp=(1,);元组与字符串类似,下标索引从0开始,可以进行截取,组合等。 | 可变容器且可存储任意类型对象,字典的每个键值 key=>value : 分割,每个键值对之间用逗号 , 分割,整个字典在 {} 中 ,eg: d = {key1 : v1, key2 : v2 }键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一. |
| |
集合set
集合(Set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
元素无序、元素不可更改、元素类型可以是各种类型、集合不允许有重复元素
#集合set
sp={1,2,3,1} #{1, 2, 3} 去重
a=set('abcaf') #{'c', 'b', 'a','f'}
b=set('abcde')
a-b #{'f'} 集合a中包含而集合b中不包含的元素
a|b #{'b', 'f', 'c', 'e', 'a', 'd'} 集合a或b中包含的所有元素
a&b #{'a', 'c', 'b'} 集合a和b中都包含了的元素
a^b #{'d', 'f', 'e'} 不同时包含于a和b的元素
#添加元素
#s.add(x) 将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作
a.add('r') #{'r', 'b', 'a', 'f', 'c'} 元素顺序每一次输出不一定一致
#s.update(x) 且参数可以是列表,元组,字典等
a.update('x') #{'x', 'f', 'a', 'b', 'r', 'c'}
a.update(['y','z']) #{'y', 'a', 'f', 'c', 'x', 'z', 'r', 'b'}
#移除元素
a.remove('x') #{'c', 'y', 'z', 'b', 'a', 'f', 'r'}
#a.remove('x') #KeyError: 'x'
a.discard('y') #{'z', 'r', 'a', 'b', 'f', 'c'}
a.discard('y') #不存在也不会报错
len(a) #6
'x' in a #判断元素是否在集合中存在
print(a.difference(b)) #{'f', 'r', 'z'} 返回多个集合的差集
print(a.intersection(b)) #{'c', 'a', 'b'} 返回集合的交集
print(a.isdisjoint(b)) #False 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
print(a.issubset(b)) #False 判断指定集合是否为该方法参数集合的子集。