在python的数据类型中,整数、字符串、元组是不可变的;而列表、字典是可变的。所以不用C的思维来修改一个整数,它相当于重新定义了一个整数(原来的被覆盖掉了),名字和原来一样,但与前面的同名变量没有一点关系了。同理作为函数时这些类型作为参数,函数调用完毕是值时不可能改变的。
一 函数中的参数:
1.1 关键字参数:就是加上关键字后参数的顺序可以改变,如def func(a,b) ,调用时func(b=x,a=y)
1.2默认参数:必须放在最右边,不可变时用缺省值
1.3可变参数:放在最右边,加“*”默认是可变的元组(多个变量);加“**”默认是可变的字典(多个键值对)
二 匿名函数:就是用lambda表示而非标准的def,不同于c的inline
三 作用域:以 L(局部,若调用全局的需要加关键字global) –> E(闭包函数外的函数中(若要调用嵌套外层的变量用关键字nonlocal) –> G(全局) –> B(内建作用域) 的规则查找
四__name__ 属性
每个模块都有一个 __name__
属性,当其值是 '__main__'
时,表明该模块自身在运行,否则是被引入。
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
五:包:
采用”点模块名称”。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B。目录只有包含一个叫做 __init__.py
的文件才会被认作是一个包。
六:类和方法:
6.1 对象方法:def开始,函数的第一个参数必须是self
类方法:装饰器 @classmethod
,且第一个参数必须是cls
静态方法:装饰器 @staticmethod
,第一个参数不在需要
父类.__init__ 方法:重载父类的方法。
super(子类,self).__init__(参数1,参数2,....)
6.2访问控制:私有属性、方法,受保护的属性和方法;共享变量,私有变量__xxx__
七:异常处理:
7.1 try 表达式:
except1:表达式1
except2:表达式2
except:没有列出的错误情况
else:无错误时执行
finally:无论有无异常都会执行
7.2 raise:抛出异常但不处理:
8文件操作:
fileobj.open/close():关闭前写的内容都在缓冲区,关闭时才将缓冲区内容送到文件
fileobj.flush():手动将缓冲区内容送到文件并刷新缓冲区
fileobj.read()/readline()/readlines():读取指定字节,一行,多行
fileobj.write([str])/writelines([str]):写入字符串和一系列字符串
fileobj.seek(offset[, whence]):从开始(whence=0)向后、当前(whence=1)向后、结束(whence=2)向前偏移offset个字符
fileObject.tell(offset[, whence]):tell() 方法返回文件的当前位置,即文件指针当前位置
fileObject.isatty():isatty() 方法检测文件是否连接到一个终端设备
fileObject.fileno():fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作
next(iterator[,default]):文件结束
9序列化和反序列化:pickle模块,
pickle.load(file, fix_imports=True, encoding='ASCII', errors='strict'):从文件中读出并反序列化