容易混淆:
- () 与 [] 等 的区别
- ()
- 函数调用: 包围函数的参数
- 优先级分组:
- ()内为运算表达式, 提升其优先级
- ()内只有单个元素, 则忽略(), 视为该单个元素 *
- 元组 tuple
- ()内有多于1个元素, 则视为tuple *
- []
- 列表 list
- []内不管有没有元素, 都视为list *
- 索引 indexing
- 切片 slicing
- if 逻辑表达式 与 if 对象是否非空
- if (判断正确) == if True == if not False == if not None == if 非空对象 == if not 空对象
- if (判断不确) == if False == if None == if not True == if 空对象 == if not 非空对象
- 注意
- True == not False == not None
- 但是
- False != None
- not True == False
- 定义函数的默认参数时
- def myfun(var=None): if not var: var = "var"
- if not var == if not None == if not 空对象
- 此时, var不输入, 或输入其他空对象 都会被替换为"var"
- 例如输入var=空对象, 也会被替换
- def myfun(var=None): if var is None: var = "var"
- if var is None != if not None, 因为
- 例如输入var=空对象, 由于var is not None 所以不会被替换
- 所以 定义函数的默认参数时 选择
- if not var ( 即 结果包含 if not None 和 if not 空对象 )
- 或选择指定判断 if var is None
- 需根据实际要求
- 只要输入变量None和非空都要替换呢
- 还是允许输入变量为非空呢
- 只要输入变量None和非空都要替换
- if (var is None) or (len(var) == 0)
- 等效于 if not var
not None
not ""
not []
not 0
not 0.0在Python中,如果你想创建一个只包含一个元素的元组,你需要在元素后面添加逗号。例如,tup1 = (50,)就创建了一个只包含一个元素的元组²。
这是因为在Python中,括号可以用来定义元组,也可以用来改变运算的优先级。如果你写x = (50),Python会认为你想要定义一个数值50,而不是一个元组。但是,如果你写x = (50,),那么Python就会知道你想要创建一个元组²。
你可以使用len()函数来获取元组中的元素个数。例如,len(tup1)会返回1,因为tup1只包含一个元素¹。
# 允许列表, 元组(圆括号内单个字符串加一个逗号算元组)
# 避免字符串, 圆括号内单个字符串(不加逗号)
# type(tuple("123")) == tuple # isinstance(tuple("123"), tuple) == True # 但是其实是字符串, len, 下标, 遍历均视其为单个字符串# 允许列表, 元组(圆括号内单个字符串加一个逗号算元组)
# 避免字符串, 圆括号内单个字符串(不加逗号)
# type(tuple("123")) == tuple # isinstance(tuple("123"), tuple) == True # 但是其实是字符串, len, 下标, 遍历均视其为单个字符串
1)
if [] , if None , if False, if 空字符串(无空格) 等 : 都会不执行
3)
True == 1 但 != [1] , 2 等等;
False == 0 但 != None, [] 等等.
2)
if 非空列表, 非空字符串, not None, not False 等 : 都会执行
4)
not 否定 输出 True
(not None) == (not []) == (not False)
path = None
(path == None) == (not path)
# 如果path == None, 则默认指定path为某参数
if path == None:
print("执行path = ...")
if not path:
print("执行path = ...")
















