我是Python新手,我对Python对待空对象的方式有点困惑。
考虑这段代码;
a = {}
if a:
print "a is alive!"
else:
print "a is NOT alive!"
if not a:
print "NOT a!"
else:
print "a!"
if a is None:
print "a is None!"
else:
print "a is NOT None!"
我得到了这个代码块的以下输出。
a
我只是想知道python中的空类大小背后的基本原理,在C++中,每个人都知道空类的大小总是会显示一个字节(据我所见),这使得运行时可以创建唯一的对象,并且我试图找出python中空类的大小:
class Empty:pass # i hope this will create empty class
当我做的时候
import sys
print ("show",sys.getsizeof(Empty)) # i get 1016
我想知道为什么Empty占用这么多1016(字节)?它返回的值(1016)是否是一个永远不会像C++那样改变(主要)的标准值?我们是否期望从pyth
我对Python有点陌生,所以我正在阅读Pro Python,其中有关于将变量关键字参数传递给函数的部分。在阅读了这一节之后,我编写了下面的代码,这些代码似乎不起作用。
def fun(**a):
return a['height'] if a is not {} else 0
当我在没有争论的情况下调用乐趣时,我遇到了一个关键的错误。我应该如何更改代码,以便如果a不是空字典,则返回‘HL.8’,如果它是空字典,则返回0?
我主要来自python背景,所以我希望for...in在空对象{}上循环,跳过所有循环。然而,情况并非如此。
我有一个循环,可以简化成这样:
for (let y in x) {
console.log(x[y]);
if (x[y]['amount'] >= 0){
x[y]['amount'] -= 1;
}
}
当类方法使用x = {}运行时,它会记录undefined,指示循环已经运行。
来自python,我希望它跳过循环,就像下面这样的代码:
for y in x:
print(y)
if x
我注意到文件对象是可哈斯的,可以用于Python字典中的键,但我似乎不知道文件对象是如何被散列的。这是否只是使用inode或类似的东西,取决于操作系统?
我试过查看Python2.7.6源代码,但结果是空的。看起来对象/fileobject.c对于tp_hash函数指针是空的。所以,我猜有一些默认的散列函数,文件对象是猪仔备份的。知道这是怎么回事吗?
另外请注意,我假设由于文件对象是可以使用的,所以可以将它们作为一个dict键使用。这件事有我看不到的坏处吗?
下面是一个证明“可拥有性”的例子:
In [1]: x = open('test.txt', 'r')
说“显式比隐式更好”。然而,检查是否为空的"pythonic“方法是使用隐式booleaness:
if not some_sequence:
some_sequence.fill_sequence()
如果some_sequence是空序列,但如果它是None或0,则也是如此。
与理论上的显式清空检查进行比较:
if some_sequence is Empty:
some_sequence.fill_sequence()
使用一些不受欢迎的变量名,用于检查是否为空的隐式booleaness变得更加混乱:
if saved:
mess_up()
请比较:
if
因此,我最近发布了一个csv,它太大了,无法使用互联网上的大规模删除。如何摆脱位于每个数据点之间的空白。我可以使用python,有人建议:
for line in open('filename'):
line = line.strip()
if line.empty():
continue
print line
然而,当我尝试它时,“空”函数似乎不起作用。无论是通过python还是其他任何方式,我都必须摆脱这些空白。谢谢!
我正在更改python代码,其中python代码中声明的设置的值是从json文件中读取的,主要问题之一是设置值之一是字符串数组
示例(json文件):
"list_of_names": {"names": ["Peter", "James"]} and i´m trying not to declare any value so it will be: "list_of_names": {[]}
当我在python代码示例:list_of_names(names=Ilist["names"])上看到
在下面的代码中,我将一个csv文件导入Python的熊猫库并显示前5行,并查询熊猫数据的“形状”。
import pandas as pd
data = pd.read_csv('my_file.csv')
data.head() #returns the first 5 rows of the dataframe
data.shape # displays the # of rows and # of columns of dataframe
为什么head()方法在head之后需要空括号,而shape不需要?这跟他们的类型有关吗?如果在调用head时不使用空括号,则不
下面的Python 2示例代码与Python 3兼容:
call = 'for i in {1..5}; do sleep 1; echo "Hello $i"; done'
p = subprocess.Popen(call, stdout=subprocess.PIPE, shell=True)
for line in iter(p.stdout.readline, ''):
print(line, end='')
这在Python2中很好,但是在Python3中,p.stdout不允许我指定编码,读取它将返回字节字符
我想知道python是否有任何函数,比如php空函数(),它会用以下条件检查变量是否为空
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)