Python学习 day10

一、默认参数的陷阱

  先看如下例子:

def func(li=[]):
    li.append(1)
    print(li)


func()
func()
func(li=['abc'])
func()

  结果:

  可以看到,默认参数不传值使用默认值时,多次调用函数li始终使用同一个列表。

  如果默认参数是一个可变数据类型,每一次调用函数时,不传值就公用这个数据类型的资源。

  使用pycharm写代码的时候,若在函数定义时将可变数据类型用作默认参数,pycharm会给出提示:

  Default argument value is mutable

  Inspection info: This inspection detects when a mutable value as list or dictionary is detected in a default value for an argument. Default argument values are evaluated only once at function definition time, which means that modifying the default value of the argument will affect all subsequent calls of the function.

二、三元运算符

  变量 = 条件返回True的结果 if 条件 else 条件返回False的结果,例:

# 定义一个求两数中较大值的函数
def max(a, b):
    return a if a > b else b


print(max(12, 7))
print(max(3, 5))

   系统中内置函数里也有max()函数,求取得是所有参数中的最大值,也可以传入iterable对象

三、命名空间

内置命名空间

  就是python解释器一启动就可以使用的名字存储在内置命名空间中

  内置的名字在启动解释器的时候被加载进内存里

全局命名空间

  

猜你喜欢

转载自www.cnblogs.com/misutang/p/9663443.html