十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这里的QuickSort.count叫做"函数属性function attribute",
成都创新互联公司从2013年创立,先为恭城等服务建站,恭城等地企业,进行企业商务咨询服务。为恭城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
python等动态类型语言所具有的"函数同时是头等对象"的功能.
即代码可以往函数对象上灵活地添加某属性。
def f():
print(f.act)
f.act=123 #定义和添加一个函数对象的属性-函数属性
f() #打印123
之前的快速排序用了一个count属性在记录排序算法的比较次数。属于调试显示,不是排序的核心算法..
type--类,object-or-type--类,一般是self
运行发现:super().add(x) 与A.add(self,x)执行结果一致;但涉及多继承,发现super()只调用一次
在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照MRO(Method Resolution Order):方法解析顺序 进行的
super()可以调用父类中的任何方法,超(父类的父类)类的任何方法;可重写父类同名的 init 函数,及其他方法
在任何时候继承类和重写方法的,我们应当用到args, kwargs将接收到的位置参数和键值参数给父类方法
比如,sys模块: import sys
sys.argv 是一个 list,包含所有的命令行参数.
sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象.
sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a
sys.exit(exit_code) 退出程序
sys.modules 是一个dictionary,表示系统中所有可用的module
sys.platform 得到运行的操作系统环境
sys.path 是一个list,指明所有查找module,package的路径.
操作系统相关的调用和操作: import os
os.environ 一个dictionary 包含环境变量的映射关系
os.environ["HOME"] 可以得到环境变量HOME的值
os.chdir(dir) 改变当前目录 os.chdir('d:\\outlook')
注意windows下用到转义
os.getcwd() 得到当前目录
os.getegid() 得到有效组id os.getgid() 得到组id
os.getuid() 得到用户id os.geteuid() 得到有效用户id
os.setegid os.setegid() os.seteuid() os.setuid()
os.getgruops() 得到用户组名称列表
os.getlogin() 得到用户登录名称
os.getenv 得到环境变量
os.putenv 设置环境变量
os.umask 设置umask
os.system(cmd) 利用系统调用,运行cmd命令
内置模块(不用import就可以直接使用)常用内置函数:
help(obj) 在线帮助, obj可是任何类型
callable(obj) 查看一个obj是不是可以像函数一样调用
repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝
eval_r(str) 表示合法的python表达式,返回这个表达式
dir(obj) 查看obj的name space中可见的name
hasattr(obj,name) 查看一个obj的name space中是否有name
getattr(obj,name) 得到一个obj的name space中的一个name
setattr(obj,name,value) 为一个obj的name
space中的一个name指向vale这个object
delattr(obj,name) 从obj的name space中删除一个name
vars(obj) 返回一个object的name space。用dictionary表示
locals() 返回一个局部name space,用dictionary表示
globals() 返回一个全局name space,用dictionary表示
type(obj) 查看一个obj的类型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子类
################## 类型转换 ##################
chr(i) 把一个ASCII数值,变成字符
ord(i) 把一个字符或者unicode字符,变成ASCII数值
oct(x) 把整数x变成八进制表示的字符串
hex(x) 把整数x变成十六进制表示的字符串
str(obj) 得到obj的字符串描述
list(seq) 把一个sequence转换成一个list
tuple(seq) 把一个sequence转换成一个tuple
dict(),dict(list) 转换成一个dictionary
int(x) 转换成一个integer
long(x) 转换成一个long interger
float(x) 转换成一个浮点数
complex(x) 转换成复数
max(...) 求最大值
min(...) 求最小值
1、 定义一个特殊的 __slots__ 变量,来限制该class实例能添加的属性
2、 内置的 @property(关键字) 装饰器就是负责把一个方法变成属性调用的。@property.setter(这里的property是类里面的属性名)负责把一个setter方法变成属性赋值。
3、 __str__(),__repr__(),__iter__(),__next__(),__getitem__(),__setitem__(),__delitem__(),__getattr__(),__call__()
def func(ls):
avg = sum(ls) / len(ls)
return [i-avg for i in ls]
abs()
返回一个数字的绝对值,它的参数可以是整数或者浮点数。举个例子:
all()
参数为一个可迭代对象,如果该可迭代对象所有元素的真值都为True(或者可迭代对象为空),则返回True。它等价于:
举个例子:
any()
和all()函数相对应,如可迭代对象所有元素中只要有一个元素真值为True,那么就返回True,如果这个可迭代对象是空的,则返回True。它等价于:
举个例子:
bin()
将整数转换为前缀为"0b"的二进制字符串,举个例子:
bool()
这个函数返回一个布尔值,True或者False。常见的布尔值为False的值有:
其他大部分值的布尔值都为True。对于我们自定义的类,如果未定义__len__()特殊方法和__bool__特殊方法,那此类的对象的布尔值总为True:
如果定义了__len__(),__bool__(),则此类的对象的布尔值可能为False(取决于你如何定义这两个方法):
callable()
callable()函数判断参数是否可调用,如果可调用,则返回True,否则会返回False。举个例子:
自定义的类的对象,一般情况下是不能调用的:
但可以通过定义__call__()方法来使对象变得可以调用:
关于Python的基础问题可以看下这个网页的视频教程,Python基础常见问题,希望我的回答能帮到你。