一、基础知识
1.字面量:
被写下来的固定的值
2.单行注释符:
# 单行注释内容 ps:注释符后要有个空格
3.多行注释:
"""多行注释内容"""
4.查看变量和字面量类型 :
type()
5.数据类型转换:
数据类型转换为整数:in()
数据类型转换为浮点数:float()
数据类型转换为字符串:str()
ps:想要将字符串类型转换为数字类型要求必须字符串中的内容全为数字
例如:
str1=str("22")
6.标识符:对变量、类、方法等编写的名字叫做标识符
标识符命名规则:内容限定中文、英文、数字、下划线;大小写敏感;不可使用关键字
变量命名规范:下划线命名法;英文全小写
7.运算符
//:求整数
**:求次方
二、字符串
1.字符串定义方法
单引号定义法;双引号定义法;三引号定义法(相当于多行注释,若用变量接受三引号的内容,则为字符串定义,否则为注释内容)
字符串内容包含引号:单引号定义可包含双引号,反之也可;单引号定义中包含单引号或双引号中包含双引号可用转义字符\ (转义字符不会当做字符串内容)
2.字符串拼接
通过+完成字符串变量或字符串字面量的拼接
print("我是"+"小西瓜")
str1="我是"
print(str1+"小西瓜")
ps:数字类型不可与字符串用+拼接
3.字符串格式化
使用%s进行占位:
#单个符号占位
str1="python"
str2="study %s" % python
#多个符号占位(多个变量要用括号括起来,且注意变量顺序)
num1=2
str3="jack%s%ddays" % (str2,num1)
#格式化表达式
print("2+3的结果为:%d" % (2+3))
4.精度控制
m.n的精度控制,如:%5d (宽度为5的整数) %7.2f(宽度为7,小数点后四舍五入保留两位的浮点数)
5.字符串格式化快速写法
语法:f"内容{变量}"
6.数据输入
#使用input函数 提示信息可放到括号内部:input("提示信息")
name=input("请输入你的名字")
#input接收的内容默认会被当做字符串变量
7.布尔变量:
True、False (大小写敏感)
三、判断语句
1.if、elif、else使用语法:
if 条件1:
(前有四个空格)条件1成立时要做的事情
elif 条件2:
(前有四个空格)条件2成立时要做的事情
else:
(前有四个空格)条件不成立时要做的事情
if element in list #判断元素是否存在于列表中
if not 条件:
条件不成立时需完成事项
2.创建一个随机整数变量:
import random
num1=random.randint(1,10)
四、循环语句
1.while基本语法:
while 条件:
(前有四个空格)do something
2.输出时换行与不换行:
换行符:\n
#默认输出时会有换行
print()
#利用 end='' 不换行操作
print("output",end='')
3.for循环语法
与while不同,for无法定义循环条件,只能从被处理的数据集中依次取出数据进行处理
for 临时变量 in 被处理的数据集
循环体
4.range语法
range(num1) #获得从0到num1不包含num1的数据集
range(num1,num2) #获得从num1到num2不包含num2的数据集
range(num1,num2,step) #获得从num1到num2不包含num2的步长为step的数据集
五、函数
1.函数定义语法
def 函数名(参数):
函数体
return 返回值 #无返回值时默认返回none
2.函数嵌套调用
#函数嵌套使用时直接在函数2的定义中调用已定义函数1
def print1():
print("1")
def print2():
print1()
print("2")
3.变量的作用域
函数内部定义的变量为局部变量,作用域只在函数内部,可用global在函数内部修饰局部变量使其成为全局变量
六、数据容器
定义:可以存储多个元素的数据类型
1.列表
1.1.列表定义语法
# 字面量
[elem1,elem2,elem3,...]
# 定义变量
变量名=[elem1,elem2,elem3,...]
# 定义空列表
变量名=[]
变量名=list()
# 嵌套列表
变量名=[[elem1,elem2,elem3],elem4]
1.2.列表下标索引
利用下标索引存取列表元素:从前往后第一个元素下标为0;从后往前最后一个下标为-1
1.3.方法
定义在类中的函数称为方法
1.4.列表常用操作
获取元素下标: 列表名.index(元素名)
插入元素:列表名.insert(下标,元素)
追加元素:列表名.append(元素)
追加其他数据容器中的内容:列表名.extend(数据容器)
删除元素:del 列表名[下标]
带返回值删除元素:element = 列表名.pop(下标) 会返回删除元素的值赋予element
删除某元素在列表中的第一个匹配项:列表名.remove(元素)
清空列表:列表名.clear()
统计某个元素在列表中的数量:列表名.count()
统计列表的元素总数:len(列表名)
2.元组
元组同列表一样是一种可以存储多个数据的数据类型,但元组一旦被定义就不可以被修改
2.1元组定义格式
元组定义时用小括号,且元素可以是不同类型的
#定义元组字面量
(elem1,elem2,...)
#定义元组变量
变量名=(elem1,elem2,...)
#定义空元组
变量名=()
变量名=tuple()
#定义单个元素时需注意在元素后加逗号
变量名=(elem1,)
2.2元组常见操作
获取某个元素的下标索引:元组名.index(元素)
统计某个元素的数量:元组名.count(元素)
统计元组中的元素总数:len(元组名)
2.3元组操作注意事项
元组的元素不可修改,但若元组中嵌套了列表元素,该列表中的元素是可以修改的
3.字符串
字符串是字符的容器,字符串是不可以修改元素的容器
3.1 字符串常用操作
查找字符子串的起始下标索引:字符串.index(子串)
字符串替换:
# 用replace进行字符串中某些子串的全部替换,并非修改字符串,而是返回一个新的字符串,因此需要一个新的变量进行接收,# 要被替换的字符串并没有被修改
str1="112233"
new_str =str.replace("22","66")
# 结果:str1="112233" new_str="116633"
字符串分隔:将字符串按照指定字符分割,得到一个列表:字符串.split (分割字符)
字符串规整:去除字符串前后的空格:字符串.strip () ; 去除字符串前后给定的字符:字符串. strip (字符/字符串) ps:若该参数为字符串时,会按照单个字符的形式去除,即凡是该字符串中的字符都会被删掉
统计字符串中某个元素的数量:字符串.count (元素)
统计字符串的元素总数:len (字符串)
4.序列
内容连续,可使用索引下标的一类数据容器,列表、元组、字符串都可视为序列
4.1序列切片
从起始位置开始到结束位置,按照指定步长进行切片,得到一个新的序列,不取结束位置的元素
语法:序列名[起始下标:结束下标:步长] 步长为负数时是从后向前切片
5.集合
集合中没有重复的元素且无序,不支持下标索引访问
5.1集合的定义
#集合定义
集合名 = {elem1,elem2,...}
#空集合定义
集合名 = set()
定义集合时若有重复元素,系统会自动去重,且集合不保证顺序
5.2集合常用操作
添加元素:集合.add(元素)
删除元素:集合.remove(元素)
随机取出元素,且取出后会删除该元素:集合.pop()
清空集合:集合.clear()
取两个集合得差集:集合3 = 集合1.difference(集合2) 集合3为集合1中有但集合2中无的元素
消除两个集合的差集,在集合1中删除和集合2相同的元素:集合1.difference_update(集合2)
两个集合合并:集合3 = 集合1.union (集合2)
统计集合中元素总数:len(集合)
6.字典
字典中的key和value可以为任意数据类型,但key不可为字典类型
6.1字典定义格式
my_dict = {key1:value1,key2:value2,...}
#空字典定义
my_dict = dict()
6.2字典常用操作
利用key寻找value:value = 字典[key]
新增或更新元素:字典[key] = value
删除元素:字典.pop(key) 会返回该key对应的value
清空字典:字典.clear()
取出字典中所有的key:字典.keys() 得到一个由所有的key组成的列表
统计字典的元素个数:len(字典)
7.数据容器通用操作
求最大值:max(容器)
求最小值:min(容器)
将指定容器转换为列表:list(容器) ps:字符串转为列表是将字符串的每个自负当做一个元素;字典转为列表是将字典的每一个key当做列表的元素,抛弃value
将指定容器转换为字符串:str(容器)
将指定容器转换为元组:tuple(容器)
将指定容器转换为集合:set(容器)
容器排序:sorted(容器,True/False) 排序后结果都是列表对象
七、函数进阶
1.函数的多返回值
def test() :
return 1,2
#多个变量接收多个返回值,返回值可以是不同类型的数据
x,y = test()
2.函数的几种传参方式
2.1位置参数和关键字参数
def test1(a,b,c) :
return
#位置参数,按照参数的位置顺序传入
test1(1,2,3)
#关键字参数,指定形参和实参的对应关系
test1(a=1,c=3,b=2)
#位置参数和关键字参数混用,位置参数必须在关键字参数的前面
test1(1,c=3,b=2)
2.2缺省参数
函数定义时给定默认值,若调用时不传参,则使用默认值,若传参,则使用传入的参数 ps:默认参数必须在参数的最后
2.3不定长参数
#不定长的位置参数
def test1(*args) :
print(args)
test1(1,"ab")
#传入的多个实参会被合并为一个元组
#不定长的关键字参数
def test1(**kwargs) :
print(kwargs)
test1(num=1,str1="ab")
#传入的多个实参会被合并为一个字典
2.4 lambda匿名函数
def test(add) :
result = add(x,y)
print(result)
test(lambda x,y : x+y)
#格式:lambda 形参 : 函数体(一行代码);lambda定义的函数没有函数名,只能使用一次
八、文件
1.文件编码
编码:内容和二进制之间的转换,编码技术即编码规则,如:UTF-8(目前通用)、GBK、Big5,写入和读取的编码规则要相同
2.文件读取
f=open("test.txt",'r',encoding="UTF-8")
#语法:f=open(file_name,mode,encoding)
#mode=r/w/a encoding必须用关键字参数
read(num):读取文件的num个字节,若无参,读取文件的所有内容,多次调用read()时,下一次调用的读取开始位置是上一次读取结束位置
readLines() :读取文件的全部行,封装成列表
readLine() :读取文件的一行
for循环读取文件的每一行
close():关闭文件;可用with open(file_name,mode,encoding) as f 打开文件后自动关闭
3.文件写
f=open(file_name,"w")
f.write(写入内容) #若文件中已有内容,写文件会覆盖原有内容,mode=a时为追加写入
#刷新内容,写入磁盘,或者直接关闭文件,close()内置了flush()功能
f.flush()
九、异常
1.异常捕获
try :
可能发生错误的代码
#捕获所有异常
except :
如果发生错误,执行的代码
else :
没有异常执行的代码
finally:
无论有无异常都要执行的代码
#捕获指定异常,exception为顶级异常类型
except 异常类型 as 异常对象:
#捕获多个异常
except (异常类型1,异常类型2) :
2.导入模块
语法:from 模块名 import 模块/类/变量/函数/* as 别名
导入多个模块的同名功能时,会有覆盖
所导入的模块中会有某些函数的调用执行,在导入模块的指定函数时会默认执行模块中的调用,若不想执行该调用,可以将执行代码放入main变量中
def test():
print("1")
if __name__ == "__main__"
test() #该函数功能被导入时不会默认执行该调用
all变量: import *时只能导入all变量里的功能
3.python包
python包里包含__init__.py文件和一些模块
4.第三方包
第三方包可以极大提高开发效率,第三方包命令提示符安装方式:pip install 包名
5.JSON
JSON是一种轻量级的数据交互格式(如python和C的转换),可以按照JSON的格式组织和封装数据,本质上是一个带有特定格式的字符串
json数据格式:引号内是字典或是元素为字典的列表
5.1python数据和json数据的相互转换
import json
#准备符合json数据格式的python数据
data={"name":"jack","age":12} #若包含中午,在转换时带第二个参数:ensure_ascii=False
#将python数据转化为json数据
data1=json.dumps(data)
#将json数据转化为python数据
data2=json.loads(data1)
5.2pyecharts折线图
from pyecharts.charts import line
line=Line()
line.add_xaxis("c","a","e")
line.add_yaxis("gdp",[3,2,1])
#设置全局配置项,可参考pyecharts.org
line.set_global_opt(
)
#生成图表
line.render()
#可视化工具:ab173.com
5.3扩展列表的排序方法
my_list=[["a",3],["b",1],["c",2]]
#定义一个函数取第二个元素进行排序
def choose_sort_key(element):
return element[1]
my_list.sort(key=choose_sort_key,reverse=True)
十、面向对象
1.类和对象
1.1类的定义格式和内置方法
class student :
#私有成员变量和私有成员方法定义时只需在变量名和方法名前加__,私有变量和私有方法只能在类内部使用
name=None
age=None
__tel=None
#构造方法
def __init__(self,name,age):
self.name=name
self.age=age
#字符串方法
def __str__(self):
return f"name={self.name},age={self.age}"
#比较方法,__le__方法可用于小于等于和大于等于符号,__eq__方法用于==
def __lt__(self,other):
return self.age<other.age
#成员方法
def introduce(self,msg):
print(f"我是{self.name},{msg}")
stu1=student("z",2)
stu2=student("y",1)
#若不定义比较方法,则无法比较
print(stu1<stu2)
#若不定义字符串方法,输出为地址,若定义则输出方法中的内容
print(stu1)
stu1.introduce("很高兴认识大家")
1.2继承
语法:
class 类名(要继承的类名1,要继承的类名2):
新类要增加的成员变量和方法或复写父类的成员属性和方法,若无新内容,写pass
#继承的类中有相同的成员属性时,默认左边优先
#若要在子类中调用父类成员属性或方法,可用父类对象名(调用成员方法时,要加self参数)或者super()关键字
1.3类型注解
语法:
#变量:类型
var1:int = 1
var2:str = "abc"
#注释中进行
var1=1 #type: int
var2="abc" #type:str
#方法中的参数注解和返回值注解
def 方法名(形参:类型) ->返回值类型:
pass
#Union联合注解
from typing import Union
my_list: list[Union[str,int]]=[1,2,"abc"]
my_dict: dict[str,Union[str,int]]={"mame":"z","age":2}
1.4多态
#定义抽象动物类
class Animal:
def speak(self):
pass
class dog(animal):
def speak(self):
print("wang")
class cat(animal):
def speak(self):
print("miao")
#用父类参数定义函数
def make_noise(animal:Animal):
animal.speak()
d=dog()
c=cat()
#声明时用父类,调用实现时用子类对象
make_noise(d)
make_noise(c)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)