python语法学习记录
第一天
print(1/1) #1.0 除法得到浮点类型
print(3//2) #1 整除得到int类型
print(0b11) #二进制 11 == 3
print(0o11) #八进制 11 == 9
print(0x11) #十六进制 11 ==17
print(bin(3)) #十进制转换成二进制 0b11
print(int(0b11)) #二进制转换成十进制 3
print(int(0o11)) #八进制转换成十进制 9
print(int(0x11)) #十六进制转换成十进制 17
print(oct(8)) #十进制转换成八进制 0o10
print(hex(10)) #十进制转换成十六进制 0xa
print(oct(0b11)) #二进制转换成八进制 0o3
print('c:\nasd\nasd')
c:
asd
asd
print(r'c:\nasd\nasd') #加r或者R变成元素字符串 或者使用双斜杠
c:\nasd\nasd
print('abcasd'[0:6]) #abcasd
print('abcasd'[0:20]) #abcasd 可以大于字符串的总长度
set使用
print({1,2,3,4} & {1,3})# {1, 3} 交集
print({1,2,3,4}- {1,3})# {2, 4} 差集
print({1,2,3,4} | {5}) # {1, 2, 3, 4, 5} 并集
闭包
闭包=函数+环境变量(非全局变量,介于f1和f2之间的变量 不能放到f2里面)
把函数和环境变量包裹在一起 不受外部环境变量影响
def f1():
a=100
def f2():
return a
return f2
a=50
f=f1()
print(f()) 100 而不是50
闭包的作用
装饰器
编程原则 :对修改是封闭的 对扩展是开放的
装饰器的作用 不改变函数的调用方式 增强函数功能 语法糖@符号
装饰多个函数时 如果参数数量不一致 需要用到可变参数以及关键字参数,一般会明确的传参
import time
def de(func):
def wrapper(*args,**kw):
print(time.time())
func(*args)
return wrapper
@de
def f1(a,b,c):
print(a,b,c)
@de
def f2(a,b):
print(a,b)
f1(1,2)
reuqests上传下载文件
上传时 是open读取文件再请求接口
下载时 get请求到数据后open 写入到文件中才能保存
mock服务
1、flask接口模拟
2、fiddler直接指定规则autoresponse
3、import mock
__ini__.py文件的作用
1、模块引入的时候会自动执行__init__.py文件的内容
2、如果包下面的很多模块都用到某些库,可以在__init__.py文件中导入一次即可
3、模块不会重复导入
形参 为定义函数的时候传的参数
实参 为调用函数的时候传的参数
def add(x,y):
return x/y
调用的时候可以改变x,y的顺序 add(y=1,x=2) 和 add(2,1)的结果是一样的
作用域
x = 1
def change(a):
x=x+1
print(a)
change(x)
会报错 对x进行运算报错 UnboundLocalError: local variable 'x' referenced before assignment
这是因为在函数内部对变量赋值进行修改后,该变量就会被Python解释器认为是局部变量而非全局变量,当程序执行到a+=1的时候,因为这条语句是给a赋值,所以a成为了局部变量,那么在执行return a(或是print a)的时候,因为a这个局部变量还没有定义,自然就会抛出这样的错误。
如果
x = 1
def change(a):
print(x)
change(x)
正常打印
python3 中 默认参数和可变参数位置可调换 必选参数 默认参数(可变参数) 可变参数(默认参数) 关键字参数
Python2 参数顺序:必选参数、默认参数、可变参数和关键字参数。
浙公网安备 33010602011771号