码迷,mamicode.com
首页 > 编程语言 > 详细

python开发中常见的小坑

时间:2016-04-25 00:31:42      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

(1)可变参数类型作为函数参数默认值,函数参数默认值的设置在Python中只会被执行一次,也就是定义该函数的时候。

解决办法,设置为None,然后判断

(2)Python中的变量名解析遵循所谓的LEGB原则,也就是“L:本地作用域;E:上一层结构中def或lambda的本地作用域;G:全局作用域;B:内置作用域”(Local,Enclosing,Global,Builtin),按顺序查找。

上述错误的出现,是因为当你在某个作用域内为变量赋值时,该变量被Python解释器自动视作该作用域的本地变量,并会取代任何上一层作用域中相同名称的变量。

(3)复制、浅拷贝、深拷贝

复制:直接赋值,传递对象的引用而已,原始对象改变,被赋值的对象也会做相同的改变

浅拷贝(切片操作、工厂函数、copy函数):没有拷贝子对象,所以原始数据改变,子对象会改变

深拷贝:包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

(4)模块依赖。

a.py文件中的代码:

1
2
3
4
import b
def f():
  return b.x
print f()

b.py文件中的代码:

1
2
3
4
import a
= 1
def g():
  print a.f()

import a不会有问题,但是import b就会有问题了

# module_x.py
def inc_count():
    import module_y
    module_y.count += 1
 
(5).元祖是不可变的吗?
 
 
 

 

 

 

 

技术分享

python开发中常见的小坑

标签:

原文地址:http://www.cnblogs.com/jiangjing/p/5428987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!