python学习之可变不可变
在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.dump(obj, file, protocol=None, fix_imports=True):序列化后写入文件Wb模式
pickle.load(file, fix_imports=True, encoding='ASCII', errors='strict'):从文件中读出并反序列化
python学习之可变不可变的更多相关文章
- python学习(28) 浅谈可变对象的单例模式设计
python开发,有时候需要设计单例模式保证操作的唯一性和安全性.理论上python语言底层实现和C/C++不同,python采取的是引用模式,当一个对象是可变对象,对其修改不会更改引用的指向,当一个 ...
- python学习笔记-函数与可变长参数
一.函数 1. def test(x): y=x+1 return yprint(test) #这是打印函数在内存中的地址 过程:就是没有返回值的函数 在python中过程也是函数,就算没哟返回值,也 ...
- Python中为什么不能用可变对象作为默认参数的值
def func(numbers = [], num=1): numbers.append(num) for number in numbers: print(number) func() >& ...
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
函数参数传递本质上和变量整体复制一样,只是两个变量分别为形参a和实参b.那么,a=b后,a变了,b值是否跟着变呢?这取决于对象内容可变不可变 首先解释一下,什么是python对象的内容可变不可变? p ...
- SQL反模式学习笔记6 支持可变属性【实体-属性-值】
目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...
- Python(可变/不可变类型,list,tuple,dict,set)
补充:(可用操作技巧) >>> x=900 >>> y=900 >>> x==y True >>> type(x) is typ ...
- Python元组tuple(不可变)
Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, ) #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2 ...
- 005 python 整数类型/字符串类型/列表类型/可变/不可变
可变/不可变类型 可变类型 ID不变的情况下,值改变,则称之为可变类型,如列表,字典 不可变类型 值改变,ID改变,则称之为不可变类型,如 整数 字符串,元组 整数类型 int 正整数 用途就是记录年 ...
- python面试题(-)可变数据类型与不可变数据类型
python3中有六个标准的数据类型:number(数字型).string(字符串型).list(列表).type(元祖).dictionary(字典).set(集合),其中不可变类型三个:numbe ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
随机推荐
- 形式化方法的逆袭——如何找出Timsort算法和玉兔月球车中的Bug?
https://bindog.github.io/blog/2015/03/30/use-formal-method-to-find-the-bug-in-timsort-and-lunar-rove ...
- Excel课程学习
1.Excel软件简介 1.1历史上的其他数据处理软件与Microsoft Excel 1977年,苹果公司开发了一款数据处理软件,当时这款软件卖的非常好,用软件的尾巴摇动硬件的狗,当时有人因为这款软 ...
- WinForm(C#)相关知识和经验的碎片化记录
1.引发类型为“System.Windows.Forms.AxHost+InvalidActiveXStateException”的异常 出现"System.Windows.Forms.Ax ...
- C++笔记--模板
一个string模板 简单的定义 template <class C>//模板形式,C是一个类型名字,不一定是某个类的名字 class String{ struct srep; srep ...
- 《Effective Java》第3章 对于所有对象都通用的方法
第8条:覆盖equals时请遵守通用约定 覆盖equals方法看起来似乎很简单,但是有许多覆盖方式会导致错误,并且后果非常严重.最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每 ...
- ubuntu - 14.04,必须会的技能-安装PPA源中的程序,更大范围使用deb格式安装文件!!
在使用ubuntu时候,管理各种软件最方便的方式肯定是使用软件中心了,这个管理工具类似windows的 程序管理了,使用它有两个好处: 1,无需处理包依赖,linux里面程序存在各种依赖关系,这在以往 ...
- linux影响上传文件大小的因素
主要是从三个方面 ①.php代码方面(这个无需说明) ②.php.ini配置 max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒max_input_t ...
- yyyyMMdd必须严格遵守大小写规范
c#中ToString("yyyyMMdd") 与ToString("yyyymmdd")区别 string a= DateTime.Now.ToString( ...
- Apache 性能调优-参考篇
1 内存 适当选用适合大小的内存,保证谷峰负载时,有足够的内存使用 2 使用ab测试apache性能 ab -n 1000 -c 10 http://www.test.com 使用ab的缺点: ...
- 树链剖分【洛谷P2590】 [ZJOI2008]树的统计
P2590 [ZJOI2008]树的统计 题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w. 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把 ...