3.Python基础语法
2020-09-07 本文已影响0人
info_gu
基本数据类型
image.png如何判断XX的类型
type(xx)
数据类型转换
int(X)
str(123)
bool(123) -->true
序列的概念:
image.png切片
字符串的定义和使用
字符串的常用操作
image.png列表的定义和常用的操作
增: append
删:remove
条件语句
循环语句
image.png#打印结果1-12
for i in range(1,13):
print(i)
%s和%d替换
print('%s 年的生肖是 %s' %(year,year%12))
while循环
#死循环
while True:
print ("xxx")
break终止循环
continue跳过循环
列表推导式与字典推导式
#求1到10所有偶数的平方
list=[]
for i in range(1,11){
if i%2==0:
list.append(i*i)
}
#列表推导式
list=[i*i for i in range(1,11) if i%2==0]
二个list完全一致
字典推导式
dict={}
for key in dict:
dict[key]=0
#字典推导式
dict={key:0 for i in dict }
文件的内建函数
image.png#写入内容
file1=open("name.txt","w")
file1.write("诸葛亮")
file1.close()
#读取内容
file1=open("name.txt")
content=file1.read()
print(content)
file1.close()
#增加
file1=open("name.txt","a")
file1.write("赵云")
file1.close()
如果文件有多行?如何读取其中一行内容?
#读取一行
file4=open("name.txt")
line_content=file4.readline()
print(line_content)
file4.close()
#逐行处理
file4=open("name.txt")
for line in file4.readlines():
print(line)
file4.close()
Python中with语句
使用 with 语句操作文件对象
with open(r'somefileName') as somefile:
for line in somefile:
print line
# ...more code
这里使用了 with 语句,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。如果使用传统的 try/finally 范式,则要使用类似如下代码:
清单 3. try/finally 方式操作文件对象
somefile = open(r'somefileName')
try:
for line in somefile:
print line
# ...more code
finally:
somefile.close()
异常的检测和处理
函数的迭代器和生成器
函数的可变长参数
def fuc1(frist,*other):
print(1+len(other))
fuc1(23,123)
函数的关键字参数
lambda表达式
#定义个函数返回True
#例子1:
def true():
return Ture
true()
等同于
lambda :True
#例子2带参数
def add (x,y):
return x+y
等同于
lambda x,y:x+y
内置函数
filter() ,map(), reduce(),zip()
filter()
作用:把满足条件的数据按照指定function过滤出来
filter(function or None, iterable)
例子:
list1 =[1,2,3,4,5,6]
print(list(filter(lambda x:x>2,list1)))
map()
作用:把传入的数据进行处理
map(func, *iterables)
例子:
list1=[1,2,3]
list2=[1,2,3]
print(list(map(lambda x,y:x+y,list1,list2)))
结果打印:
[2, 4, 6]
reduce()
作用:将列表中的元素和其他数运算
reduce(function, sequence, initial=None)
例子:
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3],1))
#结果:(1+1)+2+3=7
zip()
zip(iter1 [,iter2 [...]])
list1=[1,2,3]
list2=[2,3,4]
for i in zip(list1,list2):
print(i)
打印的结果为纵向整合:
(1, 2)
(2, 3)
(3, 4)
案例2:将字典的key和value对换位置
dict1={"name":"lisi","age":"18"}
print(dict(zip(dict1.values(),dict1.keys())))
闭包和装饰器
闭包:
1.函数嵌套函数
2.内部函数返回外部函数的参数
3.外部函数返回内部函数的函数名不带括号
案例:
# 求 a*x+b=y 因为ab可能是固定的,所以我们希望不用每次都需要传ab
# 所以这里使用闭包
def a_line(a,b):
def re_y(x):
return a*x+b
return re_y
fuc_=a_line(10,20)
print(fuc_(8))
print(fuc_(9))
如果想要给函数添加一些功能,但是又不想动这个函数的代码,我们就需要使用装饰器
比如我们想看一个函数的执行时间(非装饰器)
import time
def i_can_sleep():
time.sleep(3)
start_time=time.time()
i_can_sleep()
stop_time=time.time()
print("函数的执行时间%s"%(stop_time-start_time))
运行结果为:函数的执行时间3.000004291534424
咱们不想修改i_can_sleep函数里面的代码,但是需要i_can_sleep具备记录函数执行的时间功能
def timer(fun):
def warpper():
start_time = time.time()
fun()
stop_time = time.time()
print("函数的执行时间%s" % (stop_time - start_time))
return warpper
@timer
def i_can_sleep():
time.sleep(3)
i_can_sleep()
装饰器的执行过程:
1.遇到i_can_sleep看到该函数有装饰器,则会先执行装饰器
2.如何执行装饰器, timer(i_can_sleep())
装饰器带参数(我们可以根据装饰器的参数不同,做不同的处理)
#装饰器没带参数,但是被装饰的函数带参数
def timer(func):
def warpper(a,b):
start_time=time.time()
func(a,b)
time.sleep(2)
stop_time = time.time()
print("函数的执行时间%s" % (stop_time - start_time))
return warpper
@timer
def add(a,b):
print(a+b)
add(1,5)
装饰器带参数
import time
def new_timer(vargs):
def timer(func):
def warpper(a,b):
start_time=time.time()
func(a,b)
time.sleep(2)
stop_time = time.time()
print(vargs)
print("函数的执行时间%s" % (stop_time - start_time))
return warpper
return timer
@new_timer('add')
def add(a,b):
print(a+b)
add(1,5)
执行结果:
6
add
函数的执行时间2.00000262260437
我们可以在函数中使用if来区别vargs的参数来做不同的处理,我们也可以通过print(func.name)来拿到函数的名字
上下文管理器
with 不用担心文件close方法,会自动进行关闭
模块
image.pngpep8编码规范
什么样的代码是优雅的代码?
如何增加类的属性和方法
类的私有成员 self.__file
类的首字母需要大写
自定义with语句
初始化和结束时调用
enter方法
exit方法
Python标准库的定义
1.正则
希望\不转移,则需要在字符串前 加上r开头
print(r'\d-\d-\d')