我在下面写了python代码.我发现python2和python3对于1.1的输入有完全不同的运行结果.为什么python2和python3之间有这样的区别?对我来说,int(1.1)应该是1,那么position是0,1,2范围内的有效索引1.所以你能解释为什么python3有这样的结果吗?
s=[1,2,3]
while True:
value=input()
print('value:',value)
try:
position=int(value)
print('position',position)
print('result',s[position])
except IndexError as err:
print('out of index')
except Exception as other:
print('sth else broke',other)
$ python temp.py
1.1
('value:', 1.1)
('position', 1)
('result', 2)
$ python3 temp.py
1.1
value: 1.1
sth else broke invalid literal for int() with base 10: '1.1'
Run Code Online (Sandbox Code Playgroud) 作为标题,我在Linux的sh shell中运行上面的命令,但是我通过运行"ps -ef | grep dummy"找不到pid 7459的子进程.有人可以解释为什么这两个命令之间会有这样的差异吗?它们是活动进程,而不是LWP(线程),对吧?我怎样才能显示线程,顺便说一下?
sh-3.2$ pstree -p 7459
dummy(7459)-+-{dummy}(7508)
|-{dummy}(7528)
|-{dummy}(7529)
|-{dummy}(7530)
|-{dummy}(7551)
|-{dummy}(7552)
|-{dummy}(7553)
`-{dummy}(7554)
sh-3.2$ ps -ef | grep dummy
root 7459 7167 0 Aug28 ? 00:09:13 /usr/bin/dummy
erv 23720 17254 0 13:22 pts/4 00:00:00 grep dummy
sh-3.2$
Run Code Online (Sandbox Code Playgroud) 下面的数组@{$violated{$desc}||=[]}在下面的子程序中意味着什么?我理解的 @{$violated{$desc}}是被引用的匿名数组$violated{$desc}.
sub not_in_file_ok {
my ($filename, %regex) = @_;
open( my $fh, '<', $filename ) or die "couldn't open $filename for reading: $!";
my %violated;
while (my $line = <$fh>) {
while (my ($desc, $regex) = each %regex) {
if ($line =~ $regex) {
push @{$violated{$desc}||=[]}, $.;
}
}
}
if (%violated) {
fail("$filename contains boilerplate text");
diag "$_ appears on lines @{$violated{$_}}" for keys %violated;
} else {
pass("$filename contains no boilerplate text"); …Run Code Online (Sandbox Code Playgroud) 正如https://perldoc.perl.org/perlrun.html所示,
-F选项指定要为-a拆分的模式.该模式可以用//,""或"''包围,否则它将被放在单引号中.您不能在模式中使用文字空格或NUL字符.
我在文本上尝试了以下命令,但结果完全相同.
那么下面例子中这些模式引用的区别是什么?
$ perl -aF"\|" -lne 'print $F[0]' input
Time
2018-01-11 00:00:00
2018-01-11 00:15:00
$ perl -aF'\|' -lne 'print $F[0]' input
Time
2018-01-11 00:00:00
2018-01-11 00:15:00
$ perl -aF/\|/ -lne 'print $F[0]' input
T
2
2
$ perl -aF"|" -lne 'print $F[0]' input
T
2
2
$ perl -aF'|' -lne 'print $F[0]' input
T
2
2
$ perl -aF/|/ -lne 'print $F[0]' input
bash: /: Is a directory
Run Code Online (Sandbox Code Playgroud) perl ×2
arrays ×1
linux ×1
pstree ×1
python ×1
python-3.4 ×1
quotations ×1
reference ×1
sh ×1
shell ×1