草庐IT

python - getattr() 的简洁方法,如果在 Python 中不是 None 则使用它

我发现自己经常做以下事情:attr=getattr(obj,'attr',None)ifattrisnotNone:attr()#Dosomething,eitherattr(),orfunc(attr),orwhateverelse:#Dosomethingelse有没有更Pythonic的写法?这是否更好?(至少在性能方面没有,IMO。)try:obj.attr()#orwhateverexceptAttributeError:#Dosomethingelse 最佳答案 由于您调用的是attr,您可以这样做:defdefault

python - 使用 None 的 NumPy 数组切片

这让我摸不着头脑。我无意中用None对数组进行切片,得到的不是错误(我预计会出错)。相反,它返回一个具有额外维度的数组。>>>importnumpy>>>a=numpy.arange(4).reshape(2,2)>>>aarray([[0,1],[2,3]])>>>a[None]array([[[0,1],[2,3]]])这种行为是故意的还是副作用?如果是故意的,有什么理由吗? 最佳答案 使用None等同于使用numpy.newaxis,所以是的,这是有意的。事实上,它们是同一个东西,但当然,newaxis更清楚。Thedocs:

python - 跳过 "return None"可以吗?

我想知道在不需要时跳过returnNone是否是一种不好的方式。例子:deffoo1(x):if[somecondition]:returnBaz(x)else:returnNonedeffoo2(x):if[somecondition]:returnBaz(x)bar1=foo1(x)bar2=foo2(x)在这两种情况下,当条件为假时,函数将返回None。 最佳答案 就像你说的,returnNone(几乎)从来不需要。但您应该考虑到,您的代码的意图使用显式returnNone会更加清晰。请记住:一段代码也需要人类可读,并且明确通

python - 访问 dict 键,如果不存在则返回 None

在Python中最有效的方法是什么:my_var=some_var['my_key']|None即。如果some_var包含'my_key',则将some_var['my_key']分配给my_var,否则为my_var为无。 最佳答案 如果字典中不存在key,Python将抛出KeyError,因此您无法以与JavaScript完全相同的方式编写代码。但是,如果您在示例中专门使用dicts操作,则有一个非常好的函数mydict.get('key',default)尝试从字典中获取key并返回默认值如果键不存在,则返回值。如果您只想

Python:如果不是 val,vs 如果 val 是 None

我一直以ifnotvalue的风格进行编码,但是,一些指南引起了我的注意,虽然这种风格有效,但它似乎有两个潜在的问题:它不完全可读;ifvalueisNone肯定更容易理解。这可能会在以后产生影响(并导致细微的错误),因为像[]和0这样的东西也会评估为False。我也开始将这个想法应用到其他比较中,例如:ifnotvaluevsifvalueisFalseifnotvaluevsifvalueis[]列表也是如此......问题是,你在原则上走了多远?在保证代码安全的同时,在哪里划清界限?无论如何我都应该使用ifvalueisNone样式吗? 最佳答案

python - 如何让 Python 生成器返回 None 而不是 StopIteration?

我正在使用生成器在列表中执行搜索,例如这个简单的示例:>>>a=[1,2,3,4]>>>(ifori,vinenumerate(a)ifv==4).next()3(只是为了举例说明,与上面的列表相比,我使用的列表要长得多,并且条目比int复杂一点。我这样做是为了每次我搜索它们时都不会遍历整个列表)现在,如果我将其改为i==666,它将返回一个StopIteration,因为它找不到任何666a中的条目。我怎样才能让它返回None呢?我当然可以将它包装在try...except子句中,但是有没有更Pythonic的方式来做到这一点? 最佳答案

python - django 模板中 "none"的等价物是什么?

我想查看Django模板中的字段/变量是否为空。正确的语法是什么?这是我目前拥有的:{%ifprofile.user.first_nameisnull%}--{%elif%}{{profile.user.first_name}}{{profile.user.last_name}}{%endif%}在上面的例子中,我会用什么来代替“null”? 最佳答案 None、False和True都在模板标签和过滤器中可用。None,False、空字符串('',"","""""")和空列表/元组都评估为False当由if评估时,你可以轻松做到{%

python - 检查 Django 中的 OneToOneField 是否为 None

我有两个这样的模型:classType1Profile(models.Model):user=models.OneToOneField(User,unique=True)...classType2Profile(models.Model):user=models.OneToOneField(User,unique=True)...如果用户有Type1或Type2配置文件,我需要做一些事情:ifrequest.user.type1profile!=None:#dosomethingelifrequest.user.type2profile!=None:#dosomethingelseel

python - NaN 和 None 有什么区别?

我正在使用pandasreadcsv()读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母的字符串。偶尔会出现单元格为空的情况。在我看来,读取到该字典条目的值应该是None而是分配了nan。当然None更能描述空单元格,因为它有一个空值,而nan只是表示读取的值不是数字。我的理解是否正确,None和nan有什么区别?为什么分配的是nan而不是None?另外,我的字典检查是否有任何空单元格一直在使用numpy.isnan():fork,vinmy_dict.iteritems():ifnp.isnan(v):但这给了我一个错误,说我不能对v使用此检查。我猜这是因为要使用整数或

python - 用 None 替换 Pandas 或 Numpy Nan 以与 MysqlDB 一起使用

我正在尝试使用MysqlDB将Pandas数据框(或可以使用numpy数组)写入mysql数据库。MysqlDB似乎不理解“nan”,我的数据库抛出一个错误,指出nan不在字段列表中。我需要找到一种将“nan”转换为NoneType的方法。有什么想法吗? 最佳答案 @bogatron说得对,你可以使用where,值得注意的是,您可以在pandas中本地执行此操作:df1=df.where(pd.notnull(df),None)注意:这会将所有列的dtype更改为object。例子:In[1]:df=pd.DataFrame([1,