''' 函数的定义和调用 定义的参数为 “形参” 调用时参数为“时参” 局部变量: 函数内部的变量 全局变量: 函数外边定义的变量 用函数global修改全局变量 return 返回值 同时结束函数 后面可以是元组,列表,字典。只要是能够储存多个数据的类型,就可以一次性返回多个数据 传递和定义参数的顺序及其个数必须一样 不定长参数,有时可能需要更多的参数。 *args, **kwargs 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict,set等则是可以修改的对象。 ''' ''' 递归函数: 如果一个函数在内部不调用其他函数,而是自己本身的话,这个函数就是递归函数。 自己调用自己,必须有终止条件。 匿名函数: lambda 来创建匿名函数规则。 ●lambda只是一个表达式,函数体比def简单很多。 ●lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去。 ●lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。 ●lambda定义的函数的返回值就是表达式的返回值,不需要return语句块 ●lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数 lambda匿名函数的表达式规则是:lambda 参数列表: 表达式 ''' ''' 内置函数 abs() 函数返回数字的绝对值。num = -1 print(abs(num)) sorted(list) 排序,返回排序后的list print(sorted(['a', 'b', '', 'd'] ,reverse = True)) sum(list) 求取list元素的和 sum([1,2,3]) >>> 6 round(a,b) 获取指定位数的小数。a代表浮点数,b代表要保留的位数 round(3.1415926,2) >>> 3.14 pow(a,b) 获取乘方数 pow(2,3) >>> 8 isinstance 类型判断 num = 1 print(isinstance(num,int)) eval() 执行一个表达式,或字符串作为运算 eval('1+1') exec() 输出python语句 exec('print("Python")') 高阶函数 map(function,list) 会根据提供的函数对指定序列做映射 就是把序列中的元素都进行函数运算,返回一个map对象。 reduce(function,list) 会对参数序列中进行累计。 filter(function,list) 过滤掉序列中不符合条件的 ''' ''' 文件操作: 打开: open(name,mode) 关闭:f.close() 读写: f.write(content) w 模式:先清空再写入 读取: f.read(num) 读取长度的内容,默认全部。f.readlines() 按行读取 f.readline() 一次读取一行 关键字with在不再需要访问文件后将其关闭。这可让Python去确定:你只管打开文件,并在需要时使用它, Python自会在合适的时候自动将其关闭。 也可以调用open()和close()来打开和关闭文件,但这样做时,如果程序存在bug, 导致close()语句未执行,文件将不会关闭。 with open (name,mode) as f: 访问模式 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建 新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是 说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件 不存在,创建新文件。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容 将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。(先读再写) w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该 文件不存在,创建新文件用于读写。 rb+ 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在, 创建新文件用于读写。 ''' ''' 文件操作: os.rename(old,new) 修改文件名 os.getcwd() 得到当前工作的目录。 os.listdir() 指定所有目录下所有的文件和目录名。以列表的形式全部列举出来,其中没 有区分目录和文件。 os.remove() 删除指定文件 os.rmdir() 删除指定目录 os.mkdir() 创建目录注意:这样只能建立一层,要想递归建立可用:os.makedirs() os.path.isfile() 判断指定对象是否为文件。是返回True,否则False os.path.isdir() 判断指定对象是否为目录。是True,否则False。 os.path.exists() 检验指定的对象是否存在。是True,否则False. os.path.split() 返回路径的目录和文件名 os.system() 执行shell命令。os.system('cmd') #启动dos os.chdir() 改变目录到指定目录 os.path.getsize() 获得文件的大小,如果为目录,返回0 os.path.abspath() 获得绝对路径 ''' ''' 面向对象编程: 类的名称:类型 属性:对象的属性 私有属性 __属性名 调用方法:实例._类名__属性名 方法:对象的方法 getattr(obj, name[, default]) : 访问对象的属性 hasattr(obj,name) : 检查是否存在一个属性 setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性 delattr(obj, name) : 删除属性的值 注意:name需要加单引号,obj为实例化对象名称 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。 继承也允许把一个派生类的对象作为一个基类对象对待。如:一个 Dog 类型的 对象派生自 Animal 类。 多态:它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型 的不同而表现出不同的行为。 封装性:封装 就是将抽象得到的数据和行为(或功能)相结合,形成一 个有机的整体(即类封装的目的是增强安全性和简化编程,使用者不必了解具 体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。 继承 #调用父类的构函 people.__init__(self,n,a,w) '''