写在前面:
上次立的flag贼快就倒了,这么久一篇都没写,其实中间也没怎么学新东西(肯定没人想看复变函数或者电路基础的笔记吧),又因为中间猛的发烧了一段时间,鸽了这么久。再随便聊点别的,这周在杉果入了死亡循环玩,给的惊喜真挺大啊,应该是今年给我最大惊喜的游戏了,感觉可能真是TGA年度的有力竞争者了(之前还给同学讨论说2077随便顶下死亡循环来着,看来以后没玩还是别乱说,不过我还是私心认为2077至少可以进年度候选的)。然后因为新耳机到了这两周倒是花了很多时间在找歌上,买了耳机就随时都想听点歌嘿嘿,然后还产出了一篇天使吉米echo的测评(不是我说的那个新耳机)。
?
python特性、语法、数据类型
目录
写在前面:
python特性、语法、数据类型
特性
基本语法?
数据类型及其方法
数值类型
容器类型
字符串
?在python中单个字符也算字符串
自定义(面向对象编程)
后
彩蛋
特性
- 动态的、强类型语言
- 动态语言:类型检查发生在程序运行阶段(run time)的是动态类型语言
- 强类型:变量绑定类型后就会持有,不能混合运算
a = 9
a = a + 'name'
#会出现报错情况
基本语法?
- 命名规则
- 单下划线:不能直接访问
- 双下划线:不能被导入和其他变量访问
- 双下划线开头结尾:专用标识(如__init__)
- 类名的首字母大写
- python命名采用蛇形命名法则,命名尽量代表变量或函数实际含意
- ?缩进原则
- 特殊关键字:
- ?特殊运算符:
?**:幂运算
//:向下取整
:=:海象运算符,方便在调用中赋值
n = len(a)
if n > 6:
print(f"{n}大于6")
"""
-----------------------------------------------
"""
if (n := len(a)) > 6:
print(f"{n}大于6")
数据类型及其方法
数值类型
- Int float bool double。。。
容器类型
- list列表对象,?tuple元组对象,?dict字典对象,?set集合对象
-
List | lst = [1,3,5] # list变量 | tuple | tup = (1,3,5) # tuple变量 | dict | dic = {'a':1, 'b':3, 'c':5} # dict变量 | set | s = {1,3,5} # 集合变量 |
- list:
- ?取值:list[n]
- 逆向索引:list[-n]
- 增加元素:append(obj)、insert(index.obj)、extend(seq)
- 删除元素:pop()、remove()、clear()
- index:找出第一个匹配位置的索引
- copy:复制列表
- sort:列表排序(默认从小到大,可将reverse参数改为Ture
- count&&Counter:统计元素出现次数
- turtle 元组不可变
- dict:
- 更新:#dict.update(dict2)把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里
- 取值:dict[key]、dict.get(key,default)、dict.setdefault(key,default)
- #当使用dict[key]取字典里的值时,如果key存在,则返回key所对应的value,若不存在,则报KeyError错误
- #当使用dict.get(key,default)取值时,如果key存在,则返回Key所对应的value,若不存在,则返回default值
- #当使用dict.setdefault(key,default)取值时,如果key存在,则返回key对应的value,如果不存在,就插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None
- 删除:dict.pop()、dict.popitem()、dict.clear()
- 字面意思:dict.values()、dict.keys()、dict.items()
- #dict.fromkeys(seq,value) 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值,默认为none
- 复制:dict.copy()
dict1 = {'name':'wwl','age':24}
dict1['name'] >>> 'wwl'
dict1['sex']
dict1.get('sex','y') >>> 'y'
dict1.setdefault('sex','男') >>> '男'
print(dict1) >>> {'name': 'wwl', 'age': 24, 'sex': '男'}
- ?set:
- set中元素只会出现一次
- 添加元素:add(),update()
- 移除元素:pop()随机移除
-
remove()移除指定 discard()移除指定且不会报错 clear() - 集合之间常用的几种运算:- ,&, |, ^
字符串
-
?在python中单个字符也算字符串 - 常用方法:
- strip:去除字符串前后空格
- replace:字符串替换
- join:合并字符串(有点连接的感觉)
- title:首字母大写
- find:找到位置索引
自定义(面向对象编程)
- 三大要素:封装、继承和多态
- 面向对象编程:把一组数据和处理数据的方法组成对象,把行为相同的对象归纳为类,通过封装隐藏对象的内部细节,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态分派。
- 类和对象:
- 类是对象的蓝图和模板,对象是类的实例
- 在面向对象编程的世界中,一切皆为对象,对象都有属性和行为,每个对象都是独一无二的,而且对象一定属于某个类。对象的属性是对象的静态特征,对象的行为是对象的动态特征。按照上面的说法,如果我们把拥有共同特征的对象的属性和行为都抽取出来,就可以定义出一个类
- 定义类:
- class + 类名
- 类的代码块中写一些函数,这些函数称为方法,方法就是对象的行为
- 方法的第一个参数通常都是self,它代表了接收这个消息的对象本身
class Student:
??? def study(self, course_name):
??????? print(f'学生正在学习{course_name}.')
??? def play(self):
??????? print(f'学生正在玩游戏.')
- 创建和使用对象:
- stu1=Student( )
Student.study(stu1, 'Python程序设计') || stu1.study('Python程序设计')
类. 方法(self,参数)self. 方法("参数")
- 初始化方法:
- 通过__init__为对象定义属性:
def __init__(self,name,age):
self.name=name
self.age=age
?
stu1=Student("李华",19)
stu1.study('Python程序设计')
- 打印对象:
- 以两个下划线__(读作“dunder”)开头和结尾的方法通常都是有特殊用途和意义的方法,我们一般称之为魔术方法或魔法方法
- __repr__魔术方法:
?def __repr__(self):
??????? return f'{self.name}: {self.age}'
students = [stu1, Student('王小锤', 16), Student('王大锤', 25)]
print(students)??? # [骆昊: 40, 王小锤: 16, 王大锤: 25]
- 面向对象的支柱:
- 封装、继承和多态
- 封装:隐藏一切可以隐藏的实现细节,只向外界暴露简单的调用接口,我们在类中定义的对象方法其实就是一种封装
- Python内置的list、set、dict其实都不是函数而是类,如果要创建列表、集合、字典对象,我们就不用自定义类了
后
后面还有面向对象编程进阶相关,下次继续嘿
另:游戏荒可以试试死亡循环,真不错;
? ? ? ? 可能还会开一个机器学习的专栏复习整理以及后面继续学习的内容,现在学了可以放上来的大多是sklearn的相关使用和简单数据分析,有兴趣可以点个关注?
彩蛋
上次爬虫的封面是四海兄弟的结尾
|