第二周知识总结
2019-11-11 14:12:55 0 举报
AI智能生成
python第二阶段总结
作者其他创作
大纲/内容
函数的参数
固定结构
def 函数名(参数)
形参
写在定义函数的时候写在小括号里面的就是形参
形参的顺序:位置参数,动态位置参数,默认参数
最终顺序:位置参数:动态位置参数:关键字(默认)参数:动态(默认)关键字参数
子主题
默认参数
在定义函数的时候就给出了值, 这样的话在调用函数的时候既可以给值也可以不给
在位置参数的后面才能声明关键字参数
动态参数
动态位置参数
*args 接收多余的位置参数
动态位置参数必须在位置参数的后面
动态关键字参数
**kwargs接收多余的关键字参数
最终顺序:位置参数:动态位置参数:关键字(默认)参数:动态(默认)关键字参数
实参
在函数调用的时候给函数传递的值
子主题
位置参数
一 一 对应 不能多也不能少
按照位置来赋值
关键字参数
直接在调用函数的时候就声明这个参数是给谁的 列如(参数1= 值, 参数2 = 值,)
混合参数
位置参数与关键字参数混合使用
注意:在使用混合参数的时候 位置参数必须在关键字参数的前面
传参
从调用函数的时候将值传递给定义函数的过程就叫传参
形参就是一个变量名 , 实参就是值 , 传参就是在赋值
函数的名称空间与作用域
命名空间分类
全局命名空间
我们自己在PY文件中,函数外申明的变量都属于全局命名空间
局部命名空间
在函数中声明的变量会放在局部命名空间
内置命名空间
存放python解释器为我们提供的名字
list, tuple , str , int 这些都是内置命名空间
加载顺序
1,内置命名空间 2,全局命名空间 3.局部命名空间
取值顺序
1.局部命名空间 2. 全局命名空间 3. 内置命名空间
作用域
作用域就是作用范围, 分为全局作用域和局部作用域
全局作用域
包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循 从上到下逐⾏执行).
局部作用域
在函数内部使用的
作用域的命名空间
1.全局作用域: 全局命名空间+内置命名空间
2.局部作用域:局部命名空间
迭代器
可迭代对象定义
能用 . 点出__iter__方法的就是可迭代对象
可迭代对象的优点:1.可以直观的查看里面的数据
可迭代对象的缺点:1.占用内存 2.可迭代对象不能迭代取值
迭代器的定义
在python中,内部含有__Iter__方法并且含有__next__方法的对象就是迭代器。
可迭代对象转化成迭代器
固定结构:变量名.__iter__()
迭代器取值
使用__next__() 取值 一个__next__取一个值 使用的时候只能多不能少否则会报错
迭代器的优点:1.节省内存. 2. 惰性机制(__next__()一次取一个值)
迭代器的缺点:1.不能直观的查看里面的数据. 2. 取值时只能一直向下取值
推导式
列表推导式
1..循环模式:[变量(加工的变量) for 变量 in iterable]
2.筛选模式: [变量(加工的变量) for 变量 in iterable if 条件]
闭包
闭包的定义:
闭包是嵌套在函数中的函数。
闭包必须是内层函数对外层函数的变量(非全局变量)的引用。
闭包的作用
保存局部信息不被销毁,保证数据的安全性
闭包的应用:
可以保存一些非全局变量但是不易被销毁、改变的数据
初识函数
函数的固定结构
def 函数名():
函数的定义
函数在内存内开辟了一个新空间里面存放的是代码
函数的优缺点
函数的调用
函数名+()就是在调用这个函数
函数的返回值
函数的返回值的固定结构 return 返回值 ,return代码下的代码都不执行
不写return 返回的是None, 写了return不写返回值返回的还是None
如果return后面写了多个结果,返回给调用者的是一个元组(tuple) 调用者可以直接使用结构获取多个变量
函数名命名规范与变量命名规范相同
函数名的运用
函数名可以赋值给其他变量
函数名可以当做容器的元素
函数名可以当做函数的参数
函数名可以作为函数的返回值
三元运算符
固定结构
(参数1 如果条件成立 否则 参数2)
函数的嵌套
global 变量名: 申明使用全局作用域中的变量
如果全局中不存在就创建一个
nonlocal 变量名:只修改上一层变量 如果上一层中找不到就往上找,一直到函数的最外层再找不到就报错,不找全局
生成器
创建生成器
1.通过生成器函数
将函数中的return换成yield ,那么这个函数就不是函数了而是一个生成器函数
并且生成器函数中可以写多个yield
2.通过生成器推导式
3.python内置函数或者模块提供
生成器的本质就是迭代器
同样使用__next__()取值
yield与return的区别:
return一般在函数中只设置一个,他的作用是终止函数,并且给函数的执行者返回值。
yield在生成器函数中可设置多个,他并不会终止函数,next会获取对应yield生成的元素
send与__next__()的区别
相同点:
send 和 next()都可以让生成器对应的yield向下执行一次。
都可以获取到yield生成的值。
都可以获取到yield生成的值。
不同点:
第一次获取yield值只能用next不能用send(可以用send(None))。
send可以给上一个yield置传递值。
yield from:在python3中提供一种可以直接把可迭代对象中的每一个数据作为生成器的结果进行返回
内置函数
了解
eval:执行字符串类型的代码,并返回最终结果。禁用
exec:执行字符串类型的代码 禁用
hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
help:函数用于查看函数或模块用途的详细说明
callable:函数用于检查一个对象是否是可调用的。如果返回True,仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
float:函数用于将整数和字符串转换成浮点数。
complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。
divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。
round:保留浮点数的小数位数,默认保留整数
pow:求x**y次幂。(三个参数为x**y的结果对z取余)
bytes:用于不同编码之间的转化。
ord:输入字符找当前字符编码的位置
chr:输入当前编码的位置数字找出其对应的字符
repr:返回一个对象的string形式(原形毕露)
all:可迭代对象中,全都是True才是True
any:可迭代对象中,有一个True 就是True
any:可迭代对象中,有一个True 就是True
重要
int:函数用于将一个字符串或数字转换为整型。
bin:将十进制转换成二进制并返回。
oct:将十进制转化成八进制字符串并返回。
hex:将十进制转化成十六进制字符串并返回。
oct:将十进制转化成八进制字符串并返回。
hex:将十进制转化成十六进制字符串并返回。
str() 将字节转换成字符串
list() 将可迭代对象转换成列表
tuple() 将可迭代对象转换成元组
dict() 将元组和列表转换成字典
set() 将可迭代对象转换成一个集合
print() 屏幕输出。
sum() 求和
sum求和必须是可迭代对象,对象中的元素必须都为整型,字符串类型不能使用
sum求和必须是可迭代对象,对象中的元素必须都为整型,字符串类型不能使用
abs() 返回绝对值
dir() 查看当前对象具有什么方法
zip() 拉链
format() 格式转换
# 对齐方式:
print(format(122,">20"))
print(format(122,"<20"))
print(format(122,"^20"))
# 进制转换:
将十进制转换成二进制
print(format(12,"b"))
print(format(12,"08b"))
将十进制转换成八进制
print(format(12,"o"))
print(format(12,"08o"))
将二进制转换成十进制
print(format(0b11001,"d"))
将十进制转换成十六进制
print(format(17,"x"))
print(format(17,"08x"))
# 对齐方式:
print(format(122,">20"))
print(format(122,"<20"))
print(format(122,"^20"))
# 进制转换:
将十进制转换成二进制
print(format(12,"b"))
print(format(12,"08b"))
将十进制转换成八进制
print(format(12,"o"))
print(format(12,"08o"))
将二进制转换成十进制
print(format(0b11001,"d"))
将十进制转换成十六进制
print(format(17,"x"))
print(format(17,"08x"))
reversed() 将一个序列翻转, 返回翻转序列的迭代器
语法: filter(function,iterable)
function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据
iterable:可迭代对象
function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据
iterable:可迭代对象
映射函数
语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function
计算列表中每个元素的平方,返回新列表
语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function
计算列表中每个元素的平方,返回新列表
sorted排序函数
语法:sorted(iterable,key=None,reverse=False)
iterable : 可迭代对象
key: 排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序
reverse :是否是倒序,True 倒序 False 正序
语法:sorted(iterable,key=None,reverse=False)
iterable : 可迭代对象
key: 排序规则(排序函数),在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数.根据函数运算的结果进行排序
reverse :是否是倒序,True 倒序 False 正序
max() 最大值与最小值用法相同
min() 求最小值
min() 求最小值
reduce 累计算 reduce 的使用方式:
# reduce(函数名,可迭代对象) # 这两个参数必须都要有,缺一个不行reduce的作用是先把列表中的前俩个元素取出计算出一个值然后临时保存着,
接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始
临时保存的值覆盖掉,然后在用这个新的临时值和列表中第四个元素计算.依次类推
# reduce(函数名,可迭代对象) # 这两个参数必须都要有,缺一个不行reduce的作用是先把列表中的前俩个元素取出计算出一个值然后临时保存着,
接下来用这个临时保存的值和列表中第三个元素进行计算,求出一个新的值将最开始
临时保存的值覆盖掉,然后在用这个新的临时值和列表中第四个元素计算.依次类推
匿名函数
固定结构: 函数名 = lambda 参数:返回值
此函数不是没有名字,他是有名字的,他的名字就叫做lambda
lambda 是定义匿名函数的关键字,相当于函数的def
lambda 后面直接加形参,形参加多少都可以,只要用逗号隔开就行。
返回值在冒号之后设置,返回值和正常的函数一样,可以是任意数据类型。(但是想要返回多个元素要以容器的形式返回)
匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据
0 条评论
下一页