我是Python的新手,我正在玩一些代码片段.
在我的代码中,我需要检查变量初始化,我正在使用这个成语:
if my_variable:
# execute some code
Run Code Online (Sandbox Code Playgroud)
但阅读一些帖子我发现这个其他成语用于:
if my_variable is not None:
# execute some code
Run Code Online (Sandbox Code Playgroud)
它们是等价的还是存在一些语义差异?
在布尔运算的上下文中,以及控制流语句使用表达式时,以下值被解释为false :
False,None所有类型的数字零,以及空字符串和容器(包括字符串,元组,列表,字典,集合)和frozensets).所有其他值都被解释为true.
所以,if my_variable将会失败,如果my_variable有任何上述falsy值,其中作为第二个将失败仅当my_variable是None.通常,变量用None占位符值初始化,如果它不在程序None中的某个时间点,那么它们将知道已经为其分配了一些其他值.
例如,
def print_name(name=None):
if name is not None:
print(name)
else:
print("Default name")
Run Code Online (Sandbox Code Playgroud)
这里,函数print_name需要一个参数.如果用户提供它,那么它可能不是None,所以我们打印用户传递的实际名称,如果我们没有传递任何东西,默认情况下None将被分配.现在,我们检查,如果name不None确保我们正在打印的实际名称代替Default name.
注意:如果您真的想知道您的变量是否已定义,则可能需要尝试此操作
try:
undefined_variable
except NameError as e:
# Do whatever you want if the variable is not defined yet in the program.
print(e)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1070 次 |
| 最近记录: |