我为该input()功能提供的输入有多大?
不幸的是,没有简单的方法来测试它.在使用了大量的复制粘贴之后,我input无法在我提供的任何输入上失败.(我最终放弃了)
该文档的input功能,并没有提及关于这样的东西:
如果
prompt参数存在,则将其写入标准输出而不带尾随换行符.然后,该函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行.读取EOF时,EOFError会引发.
那么,我猜是没有限制的?有没有人知道是否有,如果有,多少钱?
我们可以(浅)复制a list使用[:]:
l = [1, 2, 3]
z1 = l[:]
Run Code Online (Sandbox Code Playgroud)
我们也可以(浅)复制它[::]:
z2 = l[::]
Run Code Online (Sandbox Code Playgroud)
现在z1 == z2将True.在阅读了Explain Python的切片表示法中的答案之后,我理解这些切片是如何工作的.
但是,我的问题是,这两者内部有什么区别吗?复制中的一个比另一个更有效,还是做同样的事情?
当我在一张幻灯片(数字)中断言Pythons的函数是描述符时,我正在阅读关于Pythons的对象模型的演示文稿9.他提出的例子类似于我写的这个例子:
def mul(x, y):
return x * y
mul2 = mul.__get__(2)
mul2(3) # 6
Run Code Online (Sandbox Code Playgroud)
现在,我明白了这一点,因为函数定义了__get__它是一个描述符,正如我在Python文档的描述部分中所描述的那样.
我不明白的是,调用是如何产生输出的.
在上段自定义类的Python语言参考它指出:
特殊属性:
__name__是类名;__module__是定义类的模块名称;__dict__是包含类的命名空间的字典;__bases__是包含基类的元组(可能是空的或单例),按它们在基类列表中出现的顺序排列;__doc__是类的文档字符串,或者None是未定义的.
那么,__bases__对于自定义类可能"可能是空的"?如果所有内容都隐含object在Python中继承,那怎么能实现3呢?
一个空的唯一类__bases__是object本身:
>>> object.__bases__
()
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我一直在寻找的实施Complex中numbers模块,发现__sub__和__rsub__看起来像这样的实现:
def __sub__(self, other):
""" self - other """
return self + -other
def __rsub__(self, other):
""" other - self """
return -self + other
Run Code Online (Sandbox Code Playgroud)
这困惑了我.
首先,我不确定为什么要实现这些(猜测所有子类都Complex可以回退它?),其次,我无法理解为什么他们选择使用这样的一元-来实现它.
有任何想法吗?
python ×5
python-3.x ×4
class ×2
function ×2
descriptor ×1
list ×1
numbers ×1
python-2.7 ×1
slice ×1
string ×1