这可能是个糟糕的标题,但我的意思是:
既然Python是动态类型的,为什么某些函数坚持只与某些数据类型一起使用,并且在必要时不自己处理转换本身?这会导致什么问题呢?
示例:
startswith():将strings和tuples作为参数。
为什么list也不呢?如果有一个很好的理由(很可能是这样),为什么它不简单地在内部转换呢?
join():只接受包含string项的容器。
为什么它不简单地做一个[str(x) for x in whatever]
从语言的设计来看,到目前为止,我的印象是它重视灵活性甚于纯洁性,因此上述行为似乎是不典型的。
另一个
我想我理解,但是每次我寻找弱类型的例子时,我最终都会找到一些编程语言的例子,这些语言可以自动地强制/转换类型。
例如,在这篇名为的文章中,Python是强类型的,因为如果您试图:
Python
1 + "1"
Traceback (most recent call last):
File "", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
然而,这样的事情在Java和C#中是可能的,而且我们不认为它们仅仅是弱类型的。
Jav
我正在为python使用eclipse,我面临着一个问题。我有许多具有许多属性的类,并且希望从我声明的一个类中获得一个对象列表。问题是:当我从列表中访问任何项时,IDE不知道它的类型,因为在python中,我们没有用类型声明变量,所以没有自动完成,我必须转到类来复制属性名。
为了使想法更清楚:
class AutomataBranch(object):
def __init__(selfparams):
self.Name="";
self.nodes=[];
class LanguageAutomata(object):
我遇到了python变量作用域的问题。
def getIP(data,address):
header = Header.fromData(data,0);
arcount = header._arcount //at this point arcount is some non-zero number
在后面的代码中(仍然在方法getIP中),我想看看arcount是否为零:
...
elif firstRR._type==RR.TYPE_NS:
while(nscount!=0):
print "arcount: ",ar
我试图运行以下代码:
import clr
import sys
#import System.Collections
clr.AddReference("System.Collections")
from System.Collections.Generic import List
from System import String
class MyClass(object):
def __init__(self, e=""):
self.title = e
li = List[MyClass]()
list(li)
然而,我得
我的问题是,“为什么语言设计人员会考虑允许不同数据类型之间的比较?”此外,这在函数式语言中更有意义吗?
例如,在erlang中,可以执行以下比较:
%% Tuples are greater than numbers
999999 < {1,2}.
true
%% Lists are greater than tuples
{90000} < [1].
true
%% Atoms are greater than numbers
1 < false.
true
在python 2.x中,
p = lambda x,y: x+y
p > (1)
True
p &l
在之后,我有一个我知道的从基类型DataPointProcessorBase继承的类型的实例,这个基类相对简单
public abstract class DataPointProcessorBase<T> : IDataPointProcessor<T> where T : class, IDataPointInput, new()
{
public abstract DataPointOutputBase GetOutput(T input);
}
Age_Input实现该接口,并设置Age_Processor来接收该接口
publi