首页
关于
Search
1
怎么快速从GitHub上下载代码
48 阅读
2
GitHub下载加速的有效方法
37 阅读
3
Python中的center()是怎么用的
35 阅读
4
如何在GitHub上下载旧版本
33 阅读
5
怎样删除GitHub存储库
32 阅读
Python
Github
IDC推荐
登录
Search
Xbe
累计撰写
242
篇文章
累计收到
1
条评论
首页
栏目
Python
Github
IDC推荐
页面
关于
搜索到
81
篇与
的结果
2025-03-20
Python新手常见问题二:不正确的使用类变量
不正确的使用类变量看下面一个例子:>>> class A(object): ... x = 1 ... >>> class B(A): ... pass ... >>> class C(A): ... pass ... >>> print A.x, B.x, C.x 1 1 1相关推荐:《Python视频教程》看起来没有问题。>>> B.x = 2 >>> print A.x, B.x, C.x 1 2 1嗯哈,还是和预想的一样。>>> A.x = 3 >>> print A.x, B.x, C.x 3 2 3我了个去。只是改变了A.x,为啥C.x也变了?在Python里,类变量通常在内部被当做字典来处理并遵循通常所说的方法解析顺序(Method Resolution Order (MRO))。因此在上面的代码中,因为属性x在类C中找不到,因此它会往上去它的基类中查找(在上面的例子中只有A这个类,当然Python是支持多重继承(multiple inheritance)的)。换句话说,C没有它自己独立于A的属性x。因此对C.x的引用实际上是对A.x的引用。(B.x不是对A.x的引用是因为在第二步里B.x=2将B.x引用到了2这个对象上,倘若没有如此,B.x仍然是引用到A.x上的。)相关推荐:python新手常见问题一:乱用表达式
2025年03月20日
1 阅读
0 评论
0 点赞
2025-03-20
Python新手常见问题三:在异常处理时错误的使用参数
在异常处理时错误的使用参数假设你有如下的代码:>>> try: ... l = ["a", "b"] ... int(l[2]) ... except ValueError, IndexError: # 想捕捉两个异常 ... pass ... Traceback (most recent call last): File "<stdin>", line 3, in <module> IndexError: list index out of range这里的问题在于except语句不会像这样去接受一系列的异常。并且,在Python 2.x里面,语法except Exception, e是用来将异常和这个可选的参数绑定起来(即这里的e),以用来在后面查看的。因此,在上面的代码中,IndexError异常不会被except语句捕捉到;而最终ValueError这个异常被绑定在了一个叫做IndexError的参数上。相关推荐:《Python视频教程》在except语句中捕捉多个异常的正确做法是将所有想要捕捉的异常放在一个元组(tuple)里并作为第一个参数给except语句。并且,为移植性考虑,使用as关键字,因为Python 2和Python 3都支持这样的语法,例如:>>> try: ... l = ["a", "b"] ... int(l[2]) ... except (ValueError, IndexError) as e: ... pass ... >>>相关推荐:Python新手常见问题二:不正确的使用类变量
2025年03月20日
2 阅读
0 评论
0 点赞
2025-03-20
Python新手常见问题四:误用Python作用域的规则
误用Python作用域的规则Python的作用域解析是基于叫做LEGB(Local(本地),Enclosing(封闭),Global(全局),Built-in(内置))的规则进行操作的。这看起来很直观,对吧?事实上,在Python中这有一些细微的地方很容易出错。看这个例子:>>> x = 10 >>> def foo(): ... x += 1 ... print x ... >>> foo() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in foo UnboundLocalError: local variable 'x' referenced before assignment这是怎么回事?这是因为,在一个作用域里面给一个变量赋值的时候,Python自动认为这个变量是这个作用域的本地变量,并屏蔽作用域外的同名的变量。相关推荐:《Python视频教程》很多时候可能在一个函数里添加一个赋值的语句会让你从前本来工作的代码得到一个UnboundLocalError。(感兴趣的话可以读一读这篇文章。)在使用列表(lists)的时候,这种情况尤为突出。看下面这个例子:>>> lst = [1, 2, 3] >>> def foo1(): ... lst.append(5) # 这没有问题... ... >>> foo1() >>> lst [1, 2, 3, 5] >>> lst = [1, 2, 3] >>> def foo2(): ... lst += [5] # ... 这就有问题了! ... >>> foo2() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in foo UnboundLocalError: local variable 'lst' referenced before assignment嗯?为什么foo2有问题,而foo1没有问题?答案和上一个例子一样,但是更加不易察觉。foo1并没有给lst赋值,但是foo2尝试给lst赋值。注意lst+=[5]只是lst=lst+[5]的简写,由此可以看到我们尝试给lst赋值(因此Python假设作用域为本地)。但是,这个要赋给lst的值是基于lst本身的(这里的作用域仍然是本地),而lst却没有被定义,这就出错了。相关推荐:Python新手常见问题三:在异常处理时错误的使用参数
2025年03月20日
2 阅读
0 评论
0 点赞
2025-03-20
python中数字列表的详细介绍
数字列表和其他列表类似,但是有一些函数可以使数字列表的操作更高效。我们创建一个包含10个数字的列表,看看能做哪些工作吧。# Print out the first ten numbers. numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]for number in numbers: print(number)range() 函数普通的列表创建方式创建10个数是可以的,但是如果想创建大量的数字,这种方法就不合适了。range() 函数就是帮助我们生成大量数字的。如下所示:# print the first ten number for number in range(1, 11): print(number)range() 函数的参数中包含开始数字和结束数字。得到的数字列表中包含开始数字但不包含结束数字。同时你也可以添加一个 step 参数,告诉 range() 函数取数的间隔是多大。如下所示:# Print the first ten odd numbers. for number in range(1,21,2): print(number)如果你想让 range() 函数获得的数字转换为列表,可以使用 list() 函数转换。如下所示:# create a list of the first ten numbers. numbers = list(range(1,11)) print(numbers)这个方法是相当强大的。现在我们可以创建一个包含前一百万个数字的列表,就跟创建前10个数字的列表一样简单。如下所示:# Store the first million numbers in a list numbers = list(range(1,1000001))# Show the length of the list print("The list 'numbers' has " + str(len(numbers)) + " numbers in it.")# Show the last ten numbers. print("\nThe last ten numbers in the list are:") for number in numbers[-10:]: print(number)min(), max() 和 sum() 函数如标题所示,你可以将这三个函数用到数字列表中。min() 函数求列表中的最小值,max() 函数求值,sum() 函数计算列表中所有数字之和。如下所示:ages = [23, 16, 14, 28, 19, 11, 38]youngest = min(ages) oldest = max(ages) total_years = sum(ages)print("Our youngest reader is " + str(youngest) + " years old.") print("Our oldest reader is " + str(oldest) + " years old.") print("Together, we have " + str(total_years) + " years worth of life experience.")
2025年03月20日
2 阅读
0 评论
0 点赞
2025-03-20
Python新手常见问题七:循环加载模块
循环加载模块假设你有两个文件,a.py和b.py,在这两个文件中互相加载对方,例如:在a.py中:import b def f(): return b.x print f()在b.py中:import a x = 1 def g(): print a.f()首先,我们试着加载a.py:>>> import a 1没有问题。也许让人吃惊,毕竟有个感觉应该是问题的循环加载在这儿。事实上在Python中仅仅是表面上的出现循环加载并不是什么问题。如果一个模块以及被加载了,Python不会傻到再去重新加载一遍。但是,当每个模块都想要互相访问定义在对方里的函数或者变量时,问题就来了。相关推荐:《Python视频教程》让我们再回到之前的例子,当我们加载a.py时,它再加载b.py不会有问题,因为在加载b.py时,它并不需要访问a.py的任何东西,而在b.py中唯一的引用就是调用a.f()。但是这个调用是在函数g()中完成的,并且a.py或者b.py中没有人调用g(),所以这会儿心情还是美丽的。但是当我们试图加载b.py时(之前没有加载a.py),会发生什么呢:>>> import b Traceback (most recent call last): File "<stdin>", line 1, in <module> File "b.py", line 1, in <module> import a File "a.py", line 6, in <module> print f() File "a.py", line 4, in f return b.x AttributeError: 'module' object has no attribute 'x'恭喜你,出错了。这里问题出在加载b.py的过程中,Python试图加载a.py,并且在a.py中需要调用到f(),而函数f()又要访问到b.x,但是这个时候b.x却还没有被定义。这就产生了AttributeError异常。解决的方案可以做一点细微的改动。改一下b.py,使得它在g()里面加载a.py:x = 1 def g(): import a # 只有当g()被调用的时候才加载 print a.f()这会儿当我们加载b.py的时候,一切安好:>>> import b >>> b.g() 1 # 第一次输出,因为模块a在最后调用了‘print f()’ 1 # 第二次输出,这是我们调用g()相关推荐:Python新手常见问题六:闭包时绑定变量
2025年03月20日
1 阅读
0 评论
0 点赞
1
2
3
...
17