这在某种程度上是学术性的,但不过.
Python语法禁止使用数字启动变量名称.但这可以像这样回避:
>>> globals()['1a'] = 1
>>> globals()['1a']
1
Run Code Online (Sandbox Code Playgroud)
同样地locals().
这是否意味着,Python实际上允许它,只是不是很明显?
编辑:
我的问题不是,是否允许.我知道,它在Python中是正式不允许的.问题是为什么我可以通过globals()直接解决来解决它,并且这会破坏其他规则或指导方针,甚至可能有一个很好的理由/应用程序来允许它.
我已经设置了一个简单的测试页来说明我遇到的问题.简而言之,这可以按预期工作(文本格式为粗体,带下划线的红色):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style>
[abc=x1] {
color: red;
text-decoration: underline;
font-weight: bold;
}
</style>
</head>
<body>
<div abc=x1>hello</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这不会(文本保持黑色,不应用格式):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style>
[abc=1] {
color: red;
text-decoration: underline;
font-weight: bold;
}
</style>
</head>
<body>
<div abc=1>hello</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在两个例子之间唯一改变的是从x1到1的属性值(在CSS和HTML中).
所以看起来你无法匹配数字属性.
有谁知道为什么这......非常......有用......特征......存在吗?
是否存在技术上的原因,为什么变量名称中不允许使用空格或者是否符合惯例?
例如,是什么阻止我们做这样的事情?:
average score = sum of scores / number of scores
Run Code Online (Sandbox Code Playgroud)
想到的唯一问题是关键字,但可以简单地限制它们在变量名中的使用,而词法分析器将能够区分变量的一部分和关键字.
variables programming-languages language-design variable-names
我注意到,如果id或类从number开始,则不应用css属性.例如,以下都不起作用:
.1ww{
/* some properties here */
}
Run Code Online (Sandbox Code Playgroud)
和
.1{
/* some properties here */
}
Run Code Online (Sandbox Code Playgroud)
和
#1{
/* some properties here */
}
Run Code Online (Sandbox Code Playgroud)
和
#1ww{
/* some properties here */
}
Run Code Online (Sandbox Code Playgroud)
为什么CSS不支持ID或类名,从数字开始?(例如,Javascript适用于数字ID和类)
我在PHP工作,我必须按顺序定义变量以保存在Mysql中.在我的情况下,字段名称和变量名称必须相同.
我可以声明这样的变量吗?
$1 OR $2 etc
Run Code Online (Sandbox Code Playgroud)
如果不是为什么不,如果是,为什么是?
我试过了:
$id = 0;
$6 = $_REQUEST['6'];
$7 = $_REQUEST['7'];
$8 = $_REQUEST['8'];
$xary = array('6','7','8','9')
$oAppl->save_record("tablename", $id, "id");
Run Code Online (Sandbox Code Playgroud)
这给了我错误.
我也可以在Mysql中创建和使用具有相同名称的字段吗?
标识符由Java语言规范,Java SE 7 Edition(§3.8)很好地定义
Run Code Online (Sandbox Code Playgroud)An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.
据我所知,由于方法名称是标识符,因此不可能在java中命名以数字开头的方法,并javac遵守此规则.
那么,为什么Java虚拟机似乎不遵守这个规则,允许我们在Bytecode中命名一个以数字开头的函数?
这个简单的代码片段实际上会打印f99()方法名称及其参数的值.
public class Test {
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.f99(100));
}
public int f99(int i){
System.out.println(Thread.currentThread().getStackTrace()[1].getMethodName());
return i;
}
}
Run Code Online (Sandbox Code Playgroud)
编译和执行:
$ javac Test.java
$ java Test
Run Code Online (Sandbox Code Playgroud)
输出:
f99
100
Run Code Online (Sandbox Code Playgroud)
可以在编译后反汇编代码,并f99通过99(在reJ之类的工具的帮助下 )重命名所有出现的代码.
$ java …Run Code Online (Sandbox Code Playgroud) 我尝试使用名称创建一个Controller类1BigController,但MVC不会让我这样做.它将控制器名称更改为_BigController.
为什么我不能用数字启动控制器名称?
我想在for循环内创建 10 个数组,使用数组名称 1、2、3、...、10。
我尝试了这样的操作,但它不起作用:
int n = 10;
for(int i = 0; i < n; i++)
{
String [] i = new String[];
}
Run Code Online (Sandbox Code Playgroud) 我想将软件许可证密钥存储在我的mysql数据库的一个字段中,但我希望以乱码格式存储许可证号,这样如果数据库被泄露,许可证密钥将无法使用.
许可证密钥字段有3种可能的方案:
我想在存储之前加扰许可证,然后在登录后向用户显示时,再次运行相同的加扰功能以解密许可证.
我想我需要先检查许可证的格式.
我设置了以下内容:
function scramble($scramblestr) {
// check string length
$length = strlen($scramblestr);
// if 10 digit license (all numbers)
if ($length == 10) {
$1st = substr($scramblestr, 0, 1);
$2nd = substr($scramblestr, 1, 1);
$3rd = substr($scramblestr, 2, 1);
$4th = substr($scramblestr, 3, 1);
$5th = substr($scramblestr, 4, 1);
$6th = substr($scramblestr, 5, 1);
$7th = substr($scramblestr, 6, 1);
$8th = substr($scramblestr, 7, 1);
$9th = substr($scramblestr, 8, 1); …Run Code Online (Sandbox Code Playgroud) 为什么typescript允许使用数字中的类字段名称
1: number = 1;
2: number = 2;
Run Code Online (Sandbox Code Playgroud)
根据这个讨论为什么变量名称不能以数字开头?我们不能创建以数字开头的类字段名称(JavaScript如果我们定义变量名称以数字开头,也不允许).但是在typescript中我们可以创建一个以数字(无论如何)开头的类字段名称.为什么?这是一个错误typescript吗?
我读了一些其他地方,以下是非法的
var 3po = true;
Run Code Online (Sandbox Code Playgroud)
但
var highNoon = false;
Run Code Online (Sandbox Code Playgroud)
是合法的.
有人能解释这是什么意思吗?为什么第一个声明是非法的而第二个是合法的?
css ×2
java ×2
javascript ×2
php ×2
variables ×2
angular ×1
arrays ×1
asp.net-mvc ×1
bytecode ×1
html ×1
identifier ×1
jvm ×1
mysql ×1
numbers ×1
python ×1
scramble ×1
syntax-error ×1
typescript ×1
whitespace ×1