python基础知识总结
知识总结来源于《Python编程从入门到实践》,偏向于个人的快速记忆和查看。
if __name__ == '__main__':
# 变量和简单数据类型
# 1、变量,直接赋值,无需声明具体的类型,自动识别
mesage = "my nane is LiHua"
print(mesage)
# 2、字符串
# str.title()首字母大写|str.upper()全大写|str.lower()全小写
print(mesage.title())
# + 可以拼接字符串
# 格式化输出
print('{0} {1} {0}'.format('hello','world')) # 带编号 hello world hello
print('{a} {tom} {a}'.format(tom='hello',a='world')) # 带关键字 world hello world
# 进阶用法
# (1)< (默认)左对齐、> 右对齐、^ 中间对齐、= (只用于数字)在小数点后进行补齐
# (2)取位数“{:4s}”、"{:.2f}"等
# 更多用法:https://www.cnblogs.com/lovejh/p/9201219.html
# 3、删除空白 str.lstrip()删除开头空白|str.rstrip()删除末尾空白|str.strip()删除两端空白 删除只是暂时的
list1 = ['hello','wolcome','good']
# -----------------------------------------------------------
# 4、列表: []表示,逗号分隔,可以直接print
# 使用下标访问元素,负号表示倒数第几个
#修改(直接赋值修改) 添加list.append() 指定位置插入list.insert(index,str2)
# 永久删除元素 del list[index] 暂时删除元素list.pop(index) 根据值删除元素list.remove(str)
# 5、list.sort()对列表元素按字母进行排序,list.sort(reverse=True)按字母的逆序进行排序
print(sorted(list1,reverse=True))# 对列表进行逆序排序
# 遍历list表---------------------------
print(sorted(mesage))# 对字符串进行排序
list2 = sorted(mesage)# 将字符串分割为一个一个字母的列表
for i in list2:
print(i)
# 遍历list表---------------------------
# 6、倒转列表list.reverse(),不是逆序,而是倒转
# 7、确定列表的长度,len(list)
# 8、遍历列表 for list in lists:
# 9、创建数字列表
numbers = list(range(1,5))
print(numbers)
# numbers = list(range(1,11,2))其中2为步长
# 10、对数字进行简单的统计计算:min()|max()|sum()
# 11、列表解析
squares = {value**2 for value in range(1,6)}
print(squares)
# 12、切片list[index1:index2]从第index1到index2的元素,[ : ]这样前后省略可以复制列表,复制列表不能以赋值的方式,其指向的是同一个
# 计算大小 listdemo = [] listdemo.__sizeof__()
# 13、元组:列表适用于变化的数据集,而元组适用于不变的数据集
# 定义元组:dimensions = (100,39)
# 元组不能改变,但是可以重新进行指向
# 将列表转为元组:tuple(list) 将区间转换成元组:tuple(range)
# 列表与元组的区别:
# 1、元组作为很多内置函数和序列类型方法的返回值存在,必须用元组
# 2、元组比列表的访问和处理速度更快,在元素不会变化的情况下尽量使用元组
# 3、元组可以在映射(和集合的成员)中当做“键”使用,而列表不行
# 14、if语句 if str == 'str': 可以和and or in 进行组合检查多个条件
# 字典----------------------------------
# 15、字典{key1:val1,ksy2:val2}
# 键值可以是整数、字符串或者元组,只要符合唯一和不可变的特性;
# 对应的值可以是 Python 支持的任意数据类型
# 添加键值对 alien[new_key] = new_val
# 通过 get(key) 方法获取字典的value
# 修改用赋值,删除用del
# 遍历 for k,v in alien.items(): for k in alien.keys(): for v in alien.valuse():
# 按字母顺序遍历所有建 for k in sorted(alien.keys()):
# 去掉字典中重复出现的value,for v in set(alien.values()):
# 嵌套:列表中元素为字典,字典中存储列表(需要指定key),字典中存储字典(需要指定key)
# copy() 方法用于返回一个具有相同键值对的新字典
# update() 方法可使用一个字典所包含的键值对来更新己有的字典。
# pop() 方法用于获取指定 key 对应的 value,并删除这个键值对 a.pop(key)
# setdefault()方法,根据key获取对应值,如果key不存在就创建一个默认值
# 使用字典格式化字符串
# 字符串模板中使用key
# temp = '教程是:%(name)s, 价格是:%(price)010.2f, 出版社是:%(publish)s'
# book = {'name':'Python基础教程', 'price': 99, 'publish': '慧科云'}
# 使用字典为字符串模板中的key传入值
# print(temp % book)
# 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类包含哪些方法
# 字典----------------------------------
# 16、input输入
#mesage2 = input("please input your willing :")
#print(mesage2)
# 遇到数字输入使用int进行强转
# 17、while循环,break、continue结合使用
# 与if一样,可以结合数组、字典使用
# 18、函数--------------------------------
# 定义函数:def fun_name(para1,para2): 调用函数时,实参的顺序很重要
# 位置实参、关键字实参、默认值的综合使用(空值是为可选实参)
# 返回值:返回简单值、返回字典
# 传递列表:def fun(list_name): 禁止函数修改列表:def fun(list_name[:])
# 传递任意数量的实参,并将这些实参封装到元组中:def fun(*top):
# 传递任意数量的关键字实参:def fun(**top)字典
# 导入模块import xxx as xx 指定别名,导入特定函数form xxx import xxx as xxxx指定别名 (*)导入全部函数
# 函数--------------------------------
# 19、面对对象-----------------------------
# 创建和使用类
class Dog():
"""一次模拟小狗的简单尝试"""
def __init__(self,name,age): # 构造方法,每一个类都必须有的,而且第一个参数是self指向本身
"""初始化属性name和age"""
self.name = name
self.age = age
def sit(self):
"""模拟小狗被命令时蹲下"""
print(self.name.title() + " is now sitting.")
def roll_over(self):
"""吗模拟小狗被命令时打滚"""
print(self.name.title() + " rolled over!")
my_dog = Dog('while',6)
print("my dog name is " + my_dog.name.title() + '.') # 使用点访问属性,调用方法
print("my dog age is " + str(my_dog.age) + 'years old.')
# 类中的每一个属性都必须赋初值
# 修改属性的值:直接修改属性的值 通过内部定义方法进行修改
# 继承;创建子类实例时,子类首先要做的是将从父类继承下来的值进行赋值
class Red_Dog(Dog):
"""继承Dog"""
def __init__(self,name,age):
"""初始化父类的方法"""
super().__init__(name,age)
self.color = 'blue' # 子类特有的属性
def call(self): # 子类特有的方法
print(self.name.title + " is calling")
def roll_over(self): # 重写
"""重写父类的方法"""
print(self.name.title() + " 被命令时不打滚。")
my_red_dog = Red_Dog('hdsdf',3)
print(my_red_dog.name + str(my_red_dog.age) + my_red_dog.color)
# 可以将一个类的实例作为另一个类的属性,只需在第二个类的构造方法里面实例化第一个类
# 导入类from car import Car1,Car2 一个模块中可以包含多个类,也可以导入多个类 也可导入整个模块或模块中的所有类
# 面对对象-----------------------------
# 20、文件-----------------------------
# 读取整个文件
"""
with open('file.txt') as file_object:
contents = file_object.read()
print(contents)#读取全部内容
for line in file_object:
print(line)#一行一行的进行读取
lines = file_object.readlines()将文件读取,并存储到lines文件
contents会多读出一段空行,可以使用rstrip()去掉
"""
# 在windows中文件路径是\而不是/
# 写入文件
"""
with open(file_name,'w') as file_object;
file_object.write("I love programming.")
r读,w覆盖写,a附加,r+可读可写
python只能将文本文件写入到文件
如果希望每一个字符串都独占一行,需要在write()后面加换行符
"""
# 文件--------------------------------
# 21、异常----------------------------
# try-except处理异常
try:
print(5/0)
except ZeroDivisionError:
print("You can't divide by zero")
# try-except-else 赖于try块的成功的代码都可以放到else中
# FileNotFoundError:使用文件时常见的问题是找不到文件
# title.split()根据字符串建立单词列表
# pass:失败时一声不吭
# 异常--------------------------------
# 22、存储数据----------------------------
# json.dump()接受两个参数,要存储的数据及可用于存储数据的对象
"""
import json
numbers = [2,3,5,7,8]
filename = 'numbers.json'
with open(filename,'w') as f_obj:
json.dump(numbers,f_obj)
"""
# json.load()读取文件
"""
import json
filename = 'numbers.json'
with open(filename) as f_obj;
numbers = json.load(f_obj)
"""
# 存储数据----------------------------
# 23、None
# None 是 NoneType 数据类型的唯一值
# 我们不能再创建其它 NoneType 类型的变量,但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None
# 24、调用函数变量
# Python 的函数也是一种值:所有函数都是 function 对象,这意味着可以把函数本身赋值给变量,就像把整数、浮点数、列表、元组赋值给变量一样。
# 当把函数赋值给变量之后,接下来程序也可通过该变量来调用函数。
# 函数还可以作为形参和返回值
# python闭包
# 闭包,又称闭包函数或者闭合函数,其实和前面讲的嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用
#闭包函数,其中 exponent 称为自由变量
def nth_power(exponent):
def exponent_of(base):
return base ** exponent
return exponent_of # 返回值是 exponent_of 函数
square = nth_power(2) # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方
print(square(2)) # 计算 2 的平方
print(cube(2)) # 计算 2 的立方
# Python闭包的closure属性,exponent 参数存储地址
#查看 __closure__ 的值
print(square.__closure__)
# 25、Python lambda表达式(匿名函数)及用法
# 在定义函数的时候,不想给函数起一个名字。这个时候就可以用lambda来定义一个匿名函数
# 变量名= lambda 参数:表达式(block)
# 参数:可选,通常以逗号分隔的变量表达式形式,也就是位置参数
# 表达式:不能包含循环、return,可以包含if...else...
# 传递多个参数 func = lambda x, y, z: x + y + z
func = lambda x, y : x if x > y else y
# 相同表达
def func(x, y):
if x > y:
return x
else:
return y