前情提要:
此次学习是为软件开发工程师做准备,我打算用三天的时间学习python开发,oracle数据库,英文自我介绍,一天时间做面试题共四天。把认为忘记的纪录下来。
个人概况:大专生,大数据专业,学习过python,但对开发概念没有明确 ,学校多是学习数据分析。东西忘得差不多了
Day1 复习基础:
判断语句:
i = input(‘输入:’)
if i==2:
print('q')
elif 0<i<3:
print('w')
else:
print('e')
循环语句:
break结束所有循环,continue结束此次循环
while+else
遍历字典
获取key,默认也是key
//for i in names
for i in names.keys():
print(i)
获取value
for i in names.values():
print(i)
获取键值对
for i in names.items():
print(i)
# 乘法口诀表 print默认参数end值为\n
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s=%s'%(i,j,i*j),end=' ')
print()
字符串:
切片左闭右开,[起始值:终止值:步长]
msg='hello world'
msg[0:3]得到he,msg[10:5:-1]得dlrow
split 默认以空格字符切分字符串,切分后为一个列表,可以修改切分字符
msg.split('*')
strip 默认去掉左右两边的空格字符,不管其他字符
msg.strip
返回布尔类型
列表操作
规律:列表的修改和增加都不需要重新复制,直接改变了原值,所以是可变类型
字符串,数字,布尔,复数都是一个值,改变需要重新赋值,都是不可变类型
增:
L.append(‘蓝色’)
L.insert(0,‘黄色’) 在索引位置前插入一个元素
L.extend(['1','2']) 一次在末尾添加多个元素
删:
del L[0]
L.remove('绿色')
L.clear() 清空列表
改:
L[0] = '白色'
L.reverse() 反序
L.sort() 升序 L.sort(reverse=True) 降序 -----排序对数字生效
元组(tuple):
与列表的区别是没有改的需求,用()定义,元组里的列表可以改
字典(dict):
大括号分隔,key:value,value可以是任何数据类型,key通常是字符串类型,key必须是不可变的类型。
msg = {key:value}
msg = dict(x=1,y=2,z=3)
增:
msg['addr']='长沙'
删:
msg.clear() 清空字典
del msg['name'] 如果删除不存在的key会报错
res = msg.pop('addr') 删除字典的键值对,返回删除的value
res = msg.popitem() 删除字典的最后一对键值对,返回一个对应元组
改:
msg['name'] = '绿色’
msg.update({'name':'黄色'})
setdefault
有则不动,返回原值。无则添加,返回新值
字典中已经存在key则不修改,返回已经存在的key对应的value
msg.setdefault('name','xxxx')
查:
print(msg['name']) 查没有的key就会报错
print(msg.get('name')) 没有就返回None
函数:
函数目的是减少重复的代码,函数调用:函数名加括号。
不定长参数:
有时候需要一个函数能处理不定个数,不定类型的参数,这些参数叫做不定长参数,不定长参数在声明时不会设置所有的参数名称,也不会设置参数的个数。
不定长参数有两种定义方式:
一种是不定长参数名称前有一个*表示把接收到的参数值封装到一个元组中;
另一种是不定长参数名称前有两个*表示接受参数值对参数值,并将接收到的键值对添加到一个字典中。
返回值
1、return是一个函数结束的标志,函数内可以有多个return,但只要执行一次,整个函数就会结束运行
2、return的返回值无类型限制,即可以是任意数据类型
3、return的返回值无个数限制,即可以用逗号分隔开多个任意类型的值
0个:返回None
1个:返回的值就是该值本身 多个:返回值是元组
装饰器
装饰器就是一个特殊的闭包函数
1、什么是装饰器(就是一个函数,只不过这个函数不是自己使用的,是给其他函数添加功能的)
器指的是工具,而程序中的函数就具备某一功能的工具
装饰指的是为被装饰器对象添加额外功能
2、为什么要用装饰器
软件的维护应该遵循开放封闭原则
开放封闭原则指的是:
软件一旦上线运行后对修改源代码是封闭的,对扩展功能的是开放的
这就用到了装饰器
装饰器的实现必须遵循两大原则:
1、不修改被装饰对象的源代码(人的原来的性格,生活方式)
2、不修改被装饰对象的调用方式(人的原来的外貌,名字)
from datetime import datetime
def run_time(func):
def new_func():
start_time=datetime.now()
print('开始时间为%s'%start_time)
func()
end_time = datetime.now()
print('结束时间为%s'%end_time)
total_time = end_time-start_time
print('总花费时间为%s'%total_time)
return new_func
@run_time #装饰下面的函数
def my_type():
print('---type---')
for i in range(10000):
type('hello')
#或者不用@run_time。
# my_type=run_time(my_type)
my_type()
结束