我正在阅读一些旧代码,试图理解它的作用,我偶然发现了这个奇怪的声明:
*x ,= p
Run Code Online (Sandbox Code Playgroud)
p是这个上下文中的列表.我一直试图弄清楚这句话的作用.据我所知,它只是设置x为的值p.例如:
p = [1,2]
*x ,= p
print(x)
Run Code Online (Sandbox Code Playgroud)
只是给
[1, 2]
Run Code Online (Sandbox Code Playgroud)
这有什么不同x = p吗?知道这个语法在做什么吗?
目前我有一个xsl与以下代码,我正在尝试打印出"计数"只有它不等于N/A.但似乎"!="不起作用.
<xsl:for-each select="Directory/Match">
<xsl:if test = "Count != N/A">
<tr>
<td><xsl:value-of select="@bookName" /></td>
<td><xsl:value-of select="@AuthorName" /></td>
<td><xsl:value-of select="Count" /></td>
</tr>
</xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试将其与数值进行比较,它会起作用.
例:
<xsl:if test = "Occurrances != 0">
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我:如果我想比较字符串我可以使用什么?
为什么使用不同值初始化的范围在Python 3中相互比较?
当我在我的解释器中执行以下命令时:
>>> r1 = range(0)
>>> r2 = range(2, 2, 2)
>>> r1 == r2
True
Run Code Online (Sandbox Code Playgroud)
结果是True.为什么会这样?为什么range具有不同参数值的两个不同对象被视为相等?
使用Python 3:
>>> from collections import OrderedDict
>>> d1 = OrderedDict([('foo', 'bar')])
>>> d2 = OrderedDict([('foo', 'bar')])
Run Code Online (Sandbox Code Playgroud)
我想检查是否平等:
>>> d1 == d2
True
>>> d1.keys() == d2.keys()
True
Run Code Online (Sandbox Code Playgroud)
但:
>>> d1.values() == d2.values()
False
Run Code Online (Sandbox Code Playgroud)
你知道为什么价值观不平等吗?
我用Python 3.4和3.5进行了测试.
在这个问题之后,我发布了Python-Ideas邮件列表以获得更多详细信息:
https://mail.python.org/pipermail/python-ideas/2015-December/037472.html
我正在尝试生成每月数据的日期范围,其中日期始终是月初:
pd.date_range(start='1/1/1980', end='11/1/1991', freq='M')
Run Code Online (Sandbox Code Playgroud)
这会生成1/31/1980,2/29/1980等等.相反,我只是想1/1/1980,2/1/1980...
我已经看到有关生成始终在每个月的特定日期的数据的其他问题,答案说这是不可能的,但肯定必须在月初!
根据我的意识,使用[], {}或()实例化对象会分别返回一个list, dict或新的实例tuple; 具有新标识的新实例对象.
这对我来说非常清楚,直到我实际测试它并且我注意到() is ()实际返回True而不是预期False:
>>> () is (), [] is [], {} is {}
(True, False, False)
Run Code Online (Sandbox Code Playgroud)
正如所料,与创建对象时,这种行为还表现list(),dict()并tuple()分别为:
>>> tuple() is tuple(), list() is list(), dict() is dict()
(True, False, False)
Run Code Online (Sandbox Code Playgroud)
我可以在状态文档中tuple()找到的唯一相关信息:
[...]例如,
tuple('abc')退货('a', 'b', 'c')和tuple([1, 2, 3])退货(1, 2, 3).如果没有给出参数,构造函数会创建一个新的空元组().
可以说,这还不足以回答我的问题.
那么,为什么空元组具有相同的身份,而其他像列表或词典不具有相同的身份?
我正在尝试在基于arm的Linux机器上编译Python 3.6,
./configure输出:
如果您想要一个激活所有优化的版本构建(LTO,PGO等),请运行
./configure --enable-optimizations.
怎么--enable-optimizations办?
我从源代码安装了python 2.6,后来又错误地从包管理器中安装了另一个python 2.6.
我找不到卸载从源代码构建的python的方法,这可能/容易吗?
运行ubuntu 10.04.
在玩Python解释器时,我偶然发现了关于is运算符的这个冲突的情况:
如果评估发生在它返回的函数中True,如果它在外部完成则返回False.
>>> def func():
... a = 1000
... b = 1000
... return a is b
...
>>> a = 1000
>>> b = 1000
>>> a is b, func()
(False, True)
Run Code Online (Sandbox Code Playgroud)
由于is运营商评估id()的参与对象,这意味着a并b指向同一个int函数内声明的时候实例func,但是,相反,它们指向一个不同的对象时,它的外面.
为什么会这样?
注意:我知道identity(is)和equal(==)操作之间的区别,如了解Python的"is"操作符中所述.另外,我也知道python正在对范围内的整数执行缓存,[-5, 256]如"is"中所述,运算符与整数一起出现意外行为.
这不是这里的情况,因为数字超出了该范围,我确实想要评估身份而不是平等.
我终于升级了我的python版本,我发现了添加的新功能.除此之外,我正在摸索新__init_subclass__方法.来自文档:
只要包含类被子类化,就会调用此方法.然后cls是新的子类.如果定义为普通实例方法,则此方法将隐式转换为类方法.
所以我开始尝试一下,按照文档中的示例:
class Philosopher:
def __init_subclass__(cls, default_name, **kwargs):
super().__init_subclass__(**kwargs)
print(f"Called __init_subclass({cls}, {default_name})")
cls.default_name = default_name
class AustralianPhilosopher(Philosopher, default_name="Bruce"):
pass
class GermanPhilosopher(Philosopher, default_name="Nietzsche"):
default_name = "Hegel"
print("Set name to Hegel")
Bruce = AustralianPhilosopher()
Mistery = GermanPhilosopher()
print(Bruce.default_name)
print(Mistery.default_name)
Run Code Online (Sandbox Code Playgroud)
生成此输出:
Called __init_subclass(<class '__main__.AustralianPhilosopher'>, 'Bruce')
'Set name to Hegel'
Called __init_subclass(<class '__main__.GermanPhilosopher'>, 'Nietzsche')
'Bruce'
'Nietzsche'
Run Code Online (Sandbox Code Playgroud)
我知道这个方法是在子类定义之后调用的,但我的问题特别是关于这个特性的用法.我也阅读了PEP 487文章,但对我没什么帮助.这种方法在哪里有用?是为了:
另外,我是否需要了解它__set_name__以充分理解其用法?
python ×9
python-3.x ×6
identity ×3
linux ×2
python-3.6 ×2
class ×1
configure ×1
date-range ×1
dictionary ×1
int ×1
metaclass ×1
pandas ×1
python-2.x ×1
range ×1
subclass ×1
tuples ×1
ubuntu ×1
xslt ×1