概述
- 变量
- python是弱类型语言,也就是说在程序真正运行的那一刻前,解释器是不知道变量的类型的,需要先进行类型推断
- python变量可以随意切换数据类型,因为并未指定,所以切换起来也非常方便
- 与Java不同的是,java是强类型准动态语言,所有变量声明前必须指定数据类型
- 数据类型
- 基本数据类型
- int 整型
- float 浮点型:精度为小数点后16位
- boolean 真假 1 or 0
- 引用数据类型
- str 字符
- list 列表
- tupe 元祖
- set 集合
- dict 字典
- 基本数据类型
- 获取数据类型函数
- type()
- 格式化输出
- 意义:因为是弱类型语言,某些时刻需要规定输出的数据类型的时候,就要使用格式化输出
- 格式化输出不仅能指代本类型变量 也能将非本类型变量数据类型转换
- 语法
- %s 字符串
- %d 整数 int
- %f 浮点数 %.2f 小数点后保留两位
- %03d 保留三位数,如果不够就补零,如果超过就不变
- 例子
- println(‘我的名字是%s,我的年龄是%d’ % (a,b))
- println(f’我的名字是{a}’,我的年龄是{b})
- 转义字符
- n 换行
- t table
- print(‘hello’,end=’n’) 默认为n 可以自行更换
- 强制类型转换
- eval() 执行字符串表达式,并返回结果
- int() 转整型
- float() 转浮点型
- list() 元祖转列表
- tuple() 列表转元祖
- 逻辑运算符
- and => &&
- or => ||
- 三目运算符 操作A if 条件语句 操作B
- not 取反
- 循环
- if循环
- 不用{}修饰,只是用table缩进修饰方法体
- 语法
- if 条件语句: +回车
- 不用{}修饰,只是用table缩进修饰方法体
- while循环
- 语法
- whie 条件语句 :+回车
- continue 跳过本次循环
- break 终止循环
- while else
- 正常操作的时候 运行完毕后会在运行else的程序:break 是非正常运行,break出现执行 else则不执行
- else没啥用
- for i in 变量
- break跳出循环
- continue跳出循环
- else 同上
- 语法
- if循环
- 字符串操作
- 切片
- str[startindex:endindex:length]
- 切片,开始下标,结束下标,步长
- 区间左闭右开
- length 是-1的时候反方向切片
- 当区间方向和步长方向不一致的时候不会获取内容
- 5:1:1方向不一致,1:5:-1方向也不一致,::-1
- str[startindex:endindex:length]
- 查找
- find
- find(str,startindex,endindex)
- rfind(str,startindex,endindex)
- 不存在,返回-1,如果直接用str[find()],会出现不可知错误,因为如果没有找到的话,返回-1,就到会后一个字符上去了,而全程不可知
- index
- index(str,startindex,endindex)
- rindex(str,startindex,endindex)
- 如果不存在,抛出异常
- replace
- replace(oldchar,newchar,num)
- num默认为none,全部替换
- 当num数量超过原有数量后,只会全部替换
- num数量小于原有数量-1时,可以选择替换几个
- split
- split(str,num)
- num默认是-1,也就是全部切割
- 当num不是-1的时候,只会切割指定数量 的块
- join
- join(iterable)
- 连接可迭代容器,用str对容器内元素一 一连接
- upper
- 转大写
- lower
- 转小写
- find
- 删除
- lstrip :删除字符串左侧空白字符
- rstrip : 删除字符串右侧空白字符
- ljust(长度,字符串) :返回一个字符串,左对齐, 默认为空格进行长度填充
- rjust 同上右侧
- center : 居中对齐
- 判断
- startwith(str,startindex,endindex)
- endwith(str,startindex,endindex)
- isalpha():判断是否为字母
- isdigit():判断是否为数字
- isalnum()判断是否为字母数字混合编写
- isspace:判断是否为空
- 切片
- 列表
- 定义
- 有序可变可迭代集合
- 可以存储不同类型的变量
- 语法
- [a,b,c]
- 易错点
- 当循环遍历删除列表的时候,因为随着删除的进行,列表下标同时也在改变,原本第2个元素下标从1到0不会再被删除,所以不能用这种方式删除. 只能从最后开始删,类似stringbuff
- API
- 增加
- Extend (iterator)尾部追加,如果数据是一个列表,则会逐一遍历元素追加到原列表集合中,简单理解合并两个列表
- append 尾部追加变量,如果变量是列表则会视为一个元素,不想extend逐一追加进去,直接尾部追加
- insert(index,object) 将元素插入到制定下标处
- 删除
- del
- del list[index] 删除列表中指定下标元素
- del list 删除整个列表
- pop
- list.pop() 默认删除最后一个元素并返回被删除的元素
- list.pop(index) 删除指定下标元素并返回被删除的元素
- remove
- list.remove(元素内容) 删除指定内容元素,如果出现重复,只删除第一次出现的元素
- del
- 排序
- sort(reverse=Flase) 默认正序,True为倒叙
- reverse() 倒叙
- 修改
- list[index]=xxx 修改内容值
- 复制
- copy() :复制list 浅拷贝,创建新的栈内存空间,堆内存指向新的栈空间
- 增加
- 定义
- 元祖
- 定义:不可变集合,类似scala中的val list 而列表对应的是scala中的listbuffer 集合中的元素可以更改
- 语法
- (a,b,c)(tuple)
- 操作
- 增
- 不可变集合不可增加元素
- 删
- 不可变集合不可删除元素
- 改
- 肯定也是不可修改拉
- 查
- index() 如果元素存在就返回下标,如果不存在就报错
- count() 统计出现次数
- len() 统计元素个数
- 增
- 常用操作
- 自动拆包
- a,b,c=tuple1
- 格式化字符串
- print(" %s "% tuple1)
- 自动组包
- tuple1=a,b,c
- 自动拆包
- 语法
- 定义:不可变集合,类似scala中的val list 而列表对应的是scala中的listbuffer 集合中的元素可以更改
- 字典
- 定义: java中的keymap 键值对 hashmap
- 语法:{‘tom’:1,‘age’:2} (dict)
- 易错点
- {}空的大括号是字典用的,但是空set集合是不可以这么用的,毕竟python语法不严格
- 操作API
- 增
- dict[key]=value 如果存在就修改,不存在就添加
- 删
- del dict 直接删除
- del dict[key] 删除指定键值对
- claer 清空
- 改
- dict[key]=value 如果存在就修改,不存在就添加
- 查
- dict[key] 根据key查询value
- dict.get(key,value) 第二参数可省略,如果不写并且查询不到就返回null, 第二参数写了,如果查询不到就使用这个参数
- dict.keys() 获取所有keys 目测是列表类型但是type返回值类型为dict_keys
- dict.value() 同上获取所有的value 返回值类型 dict_values
- dict.items() 获取所有的键值对,每对键值对为一组返回,返回值类型为dict_items
- 遍历
- for i in dict.keys()
- for i in dict.values()
- for i,j in dict.items()
- 增
- 集合
- 定义:hashset 去重的list
- 易错点
- 创建空的集合要用set()方法不能用{},因为空{}是dict用的
- 操作API
- 增
- add 顺序添加
- upadate() 参数必须是可排序序列:str list等 int不可以会报错
- 删
- set.remove() 删除指定元素,不存在就报错
- set.discard() 删除指定元素,不存在不会报错
- set.pop() 因为set是无序集合,所以pop只能随机删除某个元素并返回该元素
- 改
- 改不了,想啥呢本来就是去重用的
- 查
- in
- not in
- 遍历
- for i in set
- 增
- 公共方法
-
- :合并
- * : 复制
- in :存在
- not in :不存在
- del 删除
- len 长度
- max 返回容器中的最大值
- min 返回容器中的最小值
- rang(start,end,step): 生成从start 到end 的数步长为step 给for循环使用
- enumerate(容器,start=x):传入可迭代容器,start起始索引自定义,返回给for循环使用
-
- 列表推导式
- 定义:就是写起来方便的循环,没啥用
- 语法
- list =[返回值 for 返回值 in rang()]
- list =[返回值 for 返回值 in rang() if 条件语句]
- 多个for 循环
- list=[(i,j) for i in rang(1,3) for j in rang(1,3)]
- 字典推导式
- new_dict={key:value for key,value in dict.item()}
- 函数
- “”“说明文档”""
- help() 调用函数说明文档
- 局部变量&全局变量
- 全局变量关键字:global 如果想修改全局变量就要声明一下
- 可变参数不用声明global,直接修改即可
- 参数列表形式
- 位置参数,按照位置顺序传递
- 关键字参数,按照形参变量名传递
- def demo(*,name,age) 有 * 就是表示必须使用关键字参数传递
- 如果有位置参数,位置参数必须在关键词参数前面
- 示例:user_info(‘小明’, gender=‘男’, age=16)
- 缺省参数
- 纯为了省事,有的参数可以不必传,就赋予默认值
- 示例:def printinfo(name, age=35):
- 不定长参数
- 定义:可变长参数,类似java可变长参数 : public static void par(String… strings)
- def functionname(a, *args, **kwargs):
- args接收无名参数整合为元祖,调用处也可以直接传递元祖语法为 *args
- kwargs接收键值对形式数据保存为字典dict 调用处也可以直接传递字典,语法为 **args
- 定义:可变长参数,类似java可变长参数 : public static void par(String… strings)
- 缺省参数在不定长参数后面
- def sum_nums_3(a, *args, b=22, c=33, **kwargs)
- 当有多个缺省参数时,可以放在不定长参数后面(*args) 但是如果有(**kwargs)时,kwargs参数必须放在最后面
- 解包
- l = (1, 3)
- demo(*l)
- d = {‘name’: ‘张三’, ‘age’: 30}
- demo(**d)
- 函数为 func(name=‘张三’,age=30)
- 字典解包时key需要与形参一一对应,完全一致
- 递归
- Feibonacci Sequence
- if i1 or i2 return 1 return f(n-1)+f(n-2)
- Feibonacci Sequence
- lambda表达式
- 语法
- lambda 返回值:条件,计算
- 示例
- print(lambda :100 )
- print(lambda a,b:a+b)
- 判断
- print(lambda a: if a>0 else 1)
- print(lambda a: x==1 )
- 字典排序
- dict.sort(key=lambda x:x[key],reverse=True)
- 可变参数
- lambda *args:args
- lambda **kwargs=kwargs
- 语法
- 高阶函数
- abs求绝对值
- round四舍五入 int取整,向上取整,类似Java向上取整,但是api好像没有向下取整
- map 跟scala中的map方法一致,foreach元素,然后对元素依次进行操作
- 语法map(fun,list),第一个参数可以使函数也可以是lambda表达式,第二个是容器, 不能对字典中的value操作,也不能排序,所以任务直接给到了sort进行排序,map只是对每个元素进行操作
- reduce
- import functools functools.reduce(fun(),list)
- 归并排序,自定义可以实现x1+x2 也可以实现x1-x2
- filter
- filter(fun(),list)
- filter中的函数返回值必须是Boolean类型,过滤完成后,只会保留True的结果数据
- I/O操作
- open(name,mode,encoding)
- name:文件名
- mode:操作方式
- encoding:文件编码
- 操作模式
- r 只读
- w 写
- a 追加
- b 二进制
-
- 增加原本没有的功能,比如指针位置, w+增加了读取功能,a+和r+指针分别在后,和前.并增加了读取的功能
- write(str)写
- 写方法的参数是字符串类型数据
- 读
- read(bit)
- 参数为本次读取多少字节数据
- readlines(读取所有行数据)
- readline(读取一行数据)
- read(bit)
- 文件指针操作
- file.tell() 获取当前指针下标位置
- file.seek(offeset,num)
- offeset是偏移量
- num状态码
- 0 : 文件开始位置
- 1 : 当前位置
- 2 : 文件末尾位置
- 易错点:
- 如果打开模式不是b模式,seek必须要有一个参数为0,二进制模式不受约束
- 如果打开模式是b,则不支持encoding=utf-8格式打开,需要删除
- os类库
- os.remove() 删除文件
- os.listdir() 获取档期那文件夹下所有文件目录
- os.rename(oldname,newname)
- os.mkdir() 创建文件夹
- os.rmdir() 删除空文件夹
- os.getcwd() 获取当前目录位置 (pwd)
- os.chdir() changedir 更改当前位置,cd …/
- open(name,mode,encoding)
最后
以上就是虚幻樱桃为你收集整理的Python 基础语法的全部内容,希望文章能够帮你解决Python 基础语法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复