我正在使用perl中的哈希,但是不明白为什么哈希值会在以下内容中发生变化:
use strict;
sub test
{
my ($value_ref) = @_;
my %value = %$value_ref;
$value{'abc'}{'xyz'} = 1;
}
my %hash;
$hash{'abc'}{'xyz'} = 0;
test (\%hash);
print "$hash{'abc'}{'xyz'}\n";
Run Code Online (Sandbox Code Playgroud)
以上返回1,为什么它不会像这样返回0呢?
use strict;
sub test
{
my ($value_ref) = @_;
my %value = %$value_ref;
$value{'abc'} = 1;
}
my %hash;
$hash{'abc'} = 0;
test (\%hash);
print "$hash{'abc'}\n";
Run Code Online (Sandbox Code Playgroud)
我想它与我如何传递%hash有关.我错过了什么?
打印嵌套类的内容的最佳方法是什么?例如:
class Library():
def __init__(self):
self.shelves = []
self.shelf = self.Shelf()
class Shelf():
def __init__(self):
self.books = []
x = Library()
Run Code Online (Sandbox Code Playgroud)
我知道如果该类未嵌套,则vars(x)可以工作。但是,如果是这样,我会得到类似以下内容的信息:
{'shelf': <__main__.Shelf instance at 0x7f4bae723560>, 'shelves': []}
Run Code Online (Sandbox Code Playgroud)
作为输出。如何获取python将其打印为:
{'shelf': {'books': []}, 'shelves': []}
Run Code Online (Sandbox Code Playgroud)