以下代码引发语法错误:
>>> for i in range(10):
... print i
... try:
... pass
... finally:
... continue
... print i
...
File "<stdin>", line 6
SyntaxError: 'continue' not supported inside 'finally' clause
Run Code Online (Sandbox Code Playgroud)
为什么continue
在finally
条款中不允许声明?
PS另一方面,这个其他代码没有问题:
>>> for i in range(10):
... print i
... try:
... pass
... finally:
... break
...
0
Run Code Online (Sandbox Code Playgroud)
如果重要,我使用的是Python 2.6.6.
在Java 5之前,没有注释.因此,您无法向类添加元数据.
要将类标记为可序列化,您必须实现Serializable接口(这只是一个标记)并使用更多transient
关键字将字段标记为不可序列化(如果需要),例如:
public class MyClass implements Serializable {
...
private transient Bla field;
...
}
Run Code Online (Sandbox Code Playgroud)
现在你理论上可以使用注释(这对他们来说是完美的用途)并且具有:
@Serializable
public class MyClass {
...
@Transient
private Bla field;
...
}
Run Code Online (Sandbox Code Playgroud)
但是不推荐使用接口和关键字,并且在Java 5中没有添加注释来替换它们.
保留界面和关键字的决定有哪些考虑因素?
当然,存在与Java 5之前的代码兼容的问题,但在某些时候它将结束(例如,与泛型的新功能相关,JLS指定未来版本的Java编程语言可能会禁止使用原始类型).那么为什么不为序列化注释做准备呢?
有什么想法吗?(虽然我更喜欢具体的参考文献:D 我无法找到)
在python教程中,它说" Python支持有限形式的多重继承 ".
有什么限制?
我正在寻找Python命名空间的一个很好的介绍.我发现这个教程很好,但我确信故事还有更多.
Python参考包含信息,但很难阅读.
请解释python命名空间.在您的解释中,请包括显示各种用途的完整示例.
我正在寻找使用Spring 3注释时的一些最佳实践.
我目前正在转向Spring 3,从我到目前为止所读到的内容,我看到很多重点都放在使用注释和远离XML配置上.
实际上推荐的是两种风格的混合,注释涵盖了不会经常变化的事物或者从一次运行到另一次运行的事物(例如@Controller
,应用程序的生命周期将保持不变),而变化的事物和必须可配置进入XML(例如邮件smtp地址,应用程序与之交谈的Web服务的端点等).
我的问题是应该注释注释到什么程度?
在哪一点上注释会使事情变得更难而不是更容易?技术(春季3)是否完全被采用以便能够做出这样的陈述,还是需要更多的时间让人们获得经验并然后反思这个问题?
在python 文档中(是的,我在文档中有这个东西)它说:
用户定义的类默认具有
__cmp__()
和__hash__()
方法; 与它们一起,所有对象都比较不等(除了自己)和x.__hash__()
返回id(x)
.
但是下面的代码显示了另一件事:
>>> class Test(object): pass
...
>>> t = Test()
>>>
>>> t.__hash__
<method-wrapper '__hash__' of Test object at 0x01F2B5D0>
>>>
>>> t.__cmp__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Test' object has no attribute '__cmp__'
>>>
Run Code Online (Sandbox Code Playgroud)
那么__cmp__
我错过了哪里或什么?
我正在寻找一个Python的对象数据库(没有手工泡菜:D).
我有什么选择(除了明显的ZODB)?
我试图深入了解Python的数据模型,我不完全理解以下代码:
>>> x = 1
>>> isinstance(x,int)
True
>>> isinstance(x,numbers.Integral)
True
>>> inspect.getmro(int)
(<type 'int'>, <type 'object'>)
>>> inspect.getmro(numbers.Integral)
(<class 'numbers.Integral'>, <class 'numbers.Rational'>, <class 'numbers.Real'>,
<class 'numbers.Complex'>, <class 'numbers.Number'>, <type 'object'>)
Run Code Online (Sandbox Code Playgroud)
基于以上所述,它似乎int
并且number.Integral
不在同一层次结构中.
从Python参考(2.6.6)我看到
numbers.Integral - 这些表示来自整数的数学集合(正面和负面)的元素.
int
和之间有什么区别numbers.Integral
?它type int
与class numbers.Integral
我在上面的输出中看到的vs 有什么关系吗?
使用类型擦除实现Java泛型.这意味着如果我有一个方法:
public void setMapParam(Map<String, Integer> p) { ... }
Run Code Online (Sandbox Code Playgroud)
在编译之后,它将最终在.class中:
public void setMapParam(Map p) { ... }
Run Code Online (Sandbox Code Playgroud)
我有一个JAR文件,其中包含如上所述的泛型类和方法.它只是二进制文件.没有源代码也没有.
但是当我在代码中使用它时,Eclipse自动完成功能让我setMapParam(Map<String, Integer> p)
即使在二进制文件中也是如此setMapParam(Map p)
.
Map<String, Integer>
即使方法签名已被删除(to Map
),Eclipse现在如何使用type()?或者我错过了什么?
在Python的文档中,__getattr__
它所说的函数:
请注意,如果通过常规机制找到该属性,则不会调用__getattr __().(这是__getattr __()和__setattr __()之间的故意不对称.)这是出于效率原因而做的,因为否则__getattr __()将无法访问实例的其他属性.
我在理解最后一句话时遇到了问题:
无法访问实例的其他属性
究竟怎么没有办法访问其他属性?(我想这与无限递归有关,但是没有其他方法来访问实例属性,比如来自self.__dict__
directy?)
python ×7
java ×3
annotations ×2
attributes ×1
autocomplete ×1
comparison ×1
concept ×1
continue ×1
database ×1
default ×1
eclipse ×1
finally ×1
generics ×1
inheritance ×1
jar ×1
java-5 ×1
metadata ×1
methods ×1
namespaces ×1
nosql ×1
object ×1
spring ×1
spring-3 ×1
syntax-error ×1