函数
BIF:
type()#查看变量类型
isinstance()#比较变量类型
bin()#十进制转换为二进制,返回str
max()#返回序列里ASCII的最大的字符
min()#返回序列里ASCII的最小的字符
sum()#返回序列的总和,可选参数:将可选参数加入结果中,只能执行数字的类型
sorted()#将一个序列排序,返回值为列表
reversed()#翻转,返回一个迭代器对象,可以强制转换为序列
enumerate()#为每一个元素添加一个序号(元组),返回一个对象,可以强制转换为序列
zip()#返回由多个个序列的相同索引元素组成的元组构成的对象,可以强制转换为序列
filter()#过滤器,参数1:函数地址,参数2:可迭代的序列,将序列的元素传到函数中,返回函数返回值会True的元素组成的迭代序列
map()#映射,参数1:函数地址,参数2:可迭代的序列,将序列的元素传到函数中,返回一个由函数返回值组成的序列,可以接受多个参数
id()#查看地址
ord()#将字符转换为ASCII码
chr()#将ASCII码转换为字符
//---------------------------------------------------------------------------------------
issubclass(class, classinfo)#第一个参数是否是第二个参数的子类True/False:(自己是自己的子类,classinfo可以是类对象组成的元组/只要class与任何一个元素是继承关系/返回True,所有的类都是被认为继承于object),TypeError:()
isinstance(object, classinfo)#检查实例对象是否属于一个类, True/False:(第一个参数不是对象时返回False), TypeError:(第二个参数不是类或类的元组时)
hasattr(object, name)#判断一个对象是否有一个属性(name是字符串)
getattr(boject, name[, default])#返回对象指定的属性值,如果属性不存在,则打印可选参数default,未设置default且不存在该属性时抛出AttributeError
setattr(object, name, value)#设置对象中属性的值,如果属性不存在,则为对象创建属性
delattr(object, name)#删除对象中指定 的属性,如果属性不存在,则抛出AttributeError异常
property(fget = None, fset = None, fdel = None, doc = None)#设置一个属性,设置定义好的属性,fget:获得属性的方法,fset:设置属性的方法, fdel:删除属性的方法
eg:#修改接口是无需修改使用的方法,提高用户体验
def getSize(self):
return self.size
def setSize(self, value):
self.size = value
def delSize(self):
del self.size
x = property(getSize, setSize, delSize)
c1.x #getSize
c1.x = 1 #setSize(1)
del c1.x #defSize()
函数:
函数定义必须在函数定义之前
定义:
def 函数名(参数列表):
函数体
调用:
函数名()
返回值:
return 返回值//一定会有返回值,默认返回None
参数:
形参:函数定义过程中的参数
实参:函数调用时传递的参数
关键字参数:使用关键字来确认参数,使用关键字参数,后面也必须使用
函数名(参数1 = , 参数二 = )
默认参数:为形参赋初值
收集参数:参数前加*,把实参都放入元组(可以在传入不确定的参数时使用)
收集参数后面的参数应该使用关键字参数
函数文档(是函数的特殊属性):
'函数文档'//有注释的功能
函数名.__doc__打印函数文档
help(函数名)可以看见函数文档
函数变量的作用域:
局部变量:
全局变量:
内嵌函数和闭包:
内嵌函数只能在包含它的函数中调用
闭包:可以通过外部函数返回内部函数的指针进行内部函数的调用
nonlocal 关键字:把变量改为上层函数中同名的变量,如果上层函数中的变量是全局变量,应使用global
只能用于嵌套函数中,并且上层函数必须定义了相应的局部变量
global关键字:
global 变量:可以在函数中修改全局变量,可以用于任何地方,未定义该全局变量也可以使用
使用序列可以直接在函数中修改外部变量
lambda表达式:匿名函数
fun1 = lambda x : x + 2
print(fun1(1))
fun2 = lambda x, y : x + y
print(fun2(2, 3))
递归:python3默认100层
自己调用自己
有正确的返回
设置递归深度:
inport sys
sys.setrecursionlimit(10000000)
汉诺塔游戏:
树结构的定义:
谢尔宾斯基三角形: