容易混淆:

  • () 与 [] 等 的区别
  • ()
  • 函数调用: 包围函数的参数
  • 优先级分组:
  • ()内为运算表达式, 提升其优先级
  • ()内只有单个元素, 则忽略(), 视为该单个元素 *
  • 元组 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 = ...")