有人可以解释在Python中对象名称之前有前导下划线的确切含义吗?另外,解释单个和双重前导下划线之间的区别.此外,无论所讨论的对象是变量,函数,方法等,这个含义是否保持不变?
以下代码确实有效,但我找不到任何关于帮助和插图中" .."(点点)运算符的文档data.table:
library(data.table)
cols <- c("mpg", "gear")
DT <- as.data.table(mtcars)
DT[ , ..cols]
Run Code Online (Sandbox Code Playgroud)
输出是:
mpg gear
1: 21.0 4
2: 21.0 4
3: 22.8 4
4: 21.4 3
5: 18.7 3
...
Run Code Online (Sandbox Code Playgroud)
为什么这样做,是否有任何文件?
PS:通常我会使用mget等...
编辑1:这不是保留名称的一个简单的ř特征...,..1,..2等等,这些都是用来指从主叫功能(参见向下传递的参数?Reserved).我的例子不使用数字,而是使用两个点后的字符.
编辑2:这不重复,因为Rich Scriven的示例显示:
> mtcars[, ..cols]
Error in `[.data.frame`(mtcars, , ..cols) : object '..cols' not found
Run Code Online (Sandbox Code Playgroud) 从R语言定义引用:
请注意,ls函数默认不列出以句点开头的标识符,并且'.'和'..1','..2'等是特殊的.
以下标识符具有特殊含义,不能用于对象名称,否则重复,而函数用于下一个中断TRUE FALSE NULL Inf NaN NA NA_integer_ NA_real_ NA_complex_ NA_character_ ... ..1 ..2等.
但是它没有给出任何进一步的细节.有人可以详细说明吗?