网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月28日
漏签
0
天
芽筑说吧
关注:
94
贴子:
1,861
看贴
图片
吧主推荐
游戏
1
2
3
4
5
下一页
尾页
67
回复贴,共
5
页
,跳到
页
确定
<返回芽筑说吧
>0< 加载中...
<经验贴>Python编程时初学者易犯的错误
只看楼主
收藏
回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
送TA礼物
1楼
2018-08-14 16:57
回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
为了让初学 Python 的程序员避免犯同样的错误,以下列出了我学习 Python 时犯的三种错误。这些错误要么是我长期以来经常犯的,要么是造成了需要几个小时解决的麻烦
2楼
2018-08-14 16:57
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这些错误会造成很麻烦的问题,需要数小时才能解决。
当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python。
3楼
2018-08-14 16:57
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1、 可变数据类型作为函数定义中的默认参数
这似乎是对的?你写了一个小函数,比如,搜索当前页面上的链接,并可选将其附加到另一个提供的列表中。
4楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
def search_for_links(page, add_to=[]):
new_links = page.search_for_links()
add_to.extend(new_links)
return add_to
5楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
从表面看,这像是十分正常的 Python 代码,事实上它也是,而且是可以运行的。但是,这里有个问题。如果我们给 add_to 参数提供了一个列表,它将按照我们预期的那样工作。但是,如果我们让它使用默认值,就会出现一些神奇的事情。
6楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
def fn(var1, var2=[]):
var2.append(var1)
print var2
fn(3)
fn(4)
fn(5)
7楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
每次都使用的是同一个列表,输出为什么会是这样?在 Python 中,当我们编写这样的函数时,这个列表被实例化为函数定义的一部分。当函数运行时,它并不是每次都被实例化。这意味着,这个函数会一直使用完全一样的列表对象,除非我们提供一个新的对象:
8楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
fn(3, [4])
[4, 3]
9楼
2018-08-14 16:58
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
答案正如我们所想的那样。要想得到这种结果,正确的方法是:
def fn(var1, var2=None):
if not var2:
var2 = []
var2.append(var1)
10楼
2018-08-14 16:59
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
或是在第一个例子中:
def search_for_links(page, add_to=None):
if not add_to:
add_to = []
new_links = page.search_for_links()
add_to.extend(new_links)
return add_to
11楼
2018-08-14 16:59
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这将在模块加载的时候移走实例化的内容,以便每次运行函数时都会发生列表实例化。请注意,对于不可变数据类型,比如元组、字符串、整型,是不需要考虑这种情况的。这意味着,像下面这样的代码是非常可行的:
def func(message="my message"):
print message
12楼
2018-08-14 16:59
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
2、 可变数据类型作为类变量
这和上面提到的最后一个错误很相像。思考以下代码:
class URLCatcher(object):
urls = []
def add_url(self, url):
self.urls.append(url)
13楼
2018-08-14 16:59
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这段代码看起来非常正常。我们有一个储存 URL 的对象。当我们调用 add_url 方法时,它会添加一个给定的 URL 到存储中。看起来非常正确吧?让我们看看实际是怎样的:
a = URLCatcher()
a.add_url('
http://www.google.com
')
b = URLCatcher()
b.add_url('
http://www.bbc.co.hk
')
14楼
2018-08-14 16:59
回复
收起回复
早安午安晚安核
铁杆吧友
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
b.urls:
['
http://www.google.com
', '
http://www.bbc.co.uk
']
a.urls:
['
http://www.google.com
', '
http://www.bbc.co.uk
']
15楼
2018-08-14 17:00
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
2024贴吧年度盘点
2648730
2
美媒称中国新型战机令人震惊
2019966
3
C罗炮轰金球奖不公平
2007768
4
YSKM爆料S15新赛制
1412262
5
曝徐娇被起诉
1397318
6
崩铁3.1新角色缇宝公布
1288125
7
韩媒曝Zeus军训被霸凌
1108656
8
徐娇为《雄狮少年》怼素人
1017060
9
米哈游跌出手游收入前三
742522
10
《清明上河图密码》豆瓣7分
646590
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示