python基础补充
关于模块导入方式:
import random
print random.choice(range(10))
和
from random import choice
print choice(range(10))
第一种方法:将模块的名字设置为一个隐含在名字空间里的全局变量,这样就好像访问全局属性那样访问choice函数;
第二种方法:直接把choice引入到全局名字空间里来(而非模块的名字),因此不再需要把这个属性当初模块的成员,实际上我们也只是拥有这个属性而已;
python中存在的误解:以为第二种方法只导入了个函数,而没有导入整个模块,这个不对的;整个模块已经被导入了,但是只有那个函数的引用被保存下来,所有;from-import
这种语法并不能带来性能上的差异,也没有节省内存一说;
能不能重复导入模块:
很多人担忧的一个问题是有两个模块m.py 和n.py都导入了foo.py模块,当m导入n时,foo岂不是被导入了两次?简单的说,当python碰到一个已经加载的模块又被导入时,
它会跳过加载的过程,所以无需担心额外消耗内存的问题;
python是“传引用的“ 还是”传值的“:
这个问题不能简单的使用是或者不是来回答,只能说看情况而定-----有的对象在传入函数时是传引用,而有些则是被复制进来,即传值;判断的依据就是看对象的可改变性(mutability),而这一点取决于对象的类型;python程序员通常不用“传值”还是“传引用“这种说法,取而代之的是对象是可变的(mutable)还是不可变的(immutable)。
简单的类型或者“标量”类型,包括整数或其他数字类型,str 和 unicode这样的字符串类型,以及元组都是不可变的;
列表、字典、类、类实例等都是可变的;
实例:
>>> mylist = [1, 'a' , ['', 'bar']
... ]
>>> mylist2 = list(mylist)
>>> mylist2[0] = 2
>>> mylist2[2][0] = 'zzz' #修改列表的第一个元素
>>> print mylist
[1, 'a', ['zzz', 'bar']]
>>> print mylist2
[2, 'a', ['zzz', 'bar']]
>>>
总结:不可变对象(整数等)真正的被复制, 可变对象只是复制了一个对它们的引用,即在内存中只有一份对象,而有两份引用;
这就涉及到一个 ”深拷贝“ 的问题
python基础补充的更多相关文章
- 3.python基础补充(集合,collection系列,深浅拷贝)
一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复 ...
- 09: python基础补充
1.1 闭包 1.闭包概念 1. 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用,这样就构成了一个闭包 2. 一般情况下,在我们认知当中,如果一个函数 ...
- python基础补充内容
知识内容: 1.三元运算表达式 2.python代码编写规范 3.模块导入与使用 4.python文件名 5.python脚本的"__name__"属性 6.python之禅 一. ...
- Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
在python上开启多个线程,由于GIL的存在,每个单独线程都会在竞争到GIL后才运行,这样就干预OS内部的进程(线程)调度,结果在多核CPU上: python的多线程实际是串行执行的,并不会同一时间 ...
- Python 基础补充(一) 列表、元组、集合、字典的区别和相互转换
一.列表.元组.集合.字典的区别 列表 元组 集合 字典 英文 list tuple set dict 可否读写 读写 只读 读写 读写 可否重复 是 是 否 是 存储方式 值 值 键(不能重复) ...
- 第三篇.6、python基础补充
''' 不可变:数字,字符串,元组 可变:列表,字典 原子:数字,字符串 容器:列表,元组,字典 直接访问:数字 顺序:字符串,列表,元组 映射访问:字典 ''' #一一对应 a,b,c,d,e='h ...
- 十一. Python基础(11)—补充: 作用域 & 装饰器
十一. Python基础(11)-补充: 作用域 & 装饰器 1 ● Python的作用域补遗 在C/C++等语言中, if语句等控制结构(control structure)会产生新的作用域 ...
- 万恶之源 - Python基础知识补充
编码转换 编码回顾: 1. ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符. 没有中⽂, 8个01代码, 8个bit, 1个byte 2. GBK: 中⽂国标码, ...
- python进阶08 MySQL基础补充
python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...
随机推荐
- jQuery 如何写插件 - 第一步
这篇文章引自iteye,是老帖子了~~ 国外优秀的文也有,今天就看这位仁兄的吧,写的很到位啊,通俗易懂. jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相 ...
- Ridge Regression and Ridge Regression Kernel
Ridge Regression and Ridge Regression Kernel Reference: 1. scikit-learn linear_model ridge regressio ...
- angular checkbox required
Here is the fiddle http://jsfiddle.net/lumixraku/xgLz7d4j/2/ html <body ng-app="app"> ...
- 转: JS自定义事件的定义和触发(createEvent, dispatchEvent)
四.伪DOM自定义事件 这里的“伪DOM自定义事件”是自己定义的一个名词,用来区分DOM自定义事件的.例如jQuery库,其是基于包装器(一个包含DOM元素的中间层)扩展事件的,既与DOM相关,又不直 ...
- Gson使用初探
参考地址: http://www.stormzhang.com/android/2014/05/22/android-gson/ 我的示例代码: public void doGsonTest(View ...
- UVA - 1103Ancient Messages(dfs)
UVA - 1103Ancient Messages In order to understand early civilizations, archaeologists often study te ...
- ios中的GCD
前面我们说了block中提到它用于多线程,而gcd则是其用于多线程的典型.gcd其全称(Grand Central Dispatch) 那到底什么叫gcd,官方的解释如下: Grand Central ...
- HTML DOM 创建与修改
修改 HTML 元素 修改 HTML DOM 意味着许多不同的方面: 改变 HTML 内容 改变 CSS 样式 改变 HTML 属性 创建新的 HTML 元素 删除已有的 HTML 元素 改变事件(处 ...
- docker进入容器
进入容器的三种方式: sshd nsenter exec sshd 在容器中开启一个SSHD的服务,通过SSH的协议登录到容器中,把容器看出一个vm nsenter: nsenter包含在util-l ...
- 关于typedef之四种用途 和 两个陷进
typedef用来声明一个别名,typedef后面的语法,是一个声明.本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人 不在少数.罪魁祸首又是那些害人的教材.在这些教材中介绍type ...