老男孩python全栈就业班第9期第1部分基础+模块+面向对象+网络编程第10天-复习

第1部分 基础+模块+面向对象+网络编程

第10天 复习

# 函数

  # 可读性强 复用性强

# def 函数名():

  # 函数体

  # return 返回值

# 所有的函数 只定义不调用就一定不执行

  # 先定义后调用

# 函数名()  # 不接受返回值

# 返回值 = 函数名()  # 接受返回值

# 返回值

  # 没有返回值:默认返回 None

    # 不写 return:函数内的代码执行完毕自动结束

    # 只写 return:结束一个函数

    # return None

  # 返回一个值:结束了函数且返回一个值,可以是任意的值

  # 返回多个值:多个值之间用逗号隔开,接受的时候可以用一个变量接收(元组),也可以等量的多个变量接收

# 参数

  # 形参:定义函数的时候

    # 位置参数:必须传

    # *args:动态参数 可以接收任意多个按位置传入的参数

    # 默认参数:可以不传  —— 陷阱

    # **kwargs:动态参数 可以接受任意多个按关键字传入的参数         

  # 实参:调用函数的时候

    # 按照位置传参数

    # 按照关键字传参数

      # 可以混用 位置参数必须在关键字传参之前

      # 不能对一个参数重复赋值

 

#关于默认参数的陷阱
#如果默认参数的值是一个可变数据类型,那么每一次调用函数的时候,如果不传值就公用这个数据类型的资源
def qqxing(l = []):
    l.append(1)
    print(l)

#执行
qqxing()
qqxing()
qqxing()
qqxing()

#输出内容
[1]
[1, 1]
[1, 1, 1]
[1, 1, 1, 1]

#在执行
qqxing()
qqxing([])
qqxing()
qqxing()

#输出内容
[1]
[1]
[1, 1]
[1, 1, 1]

#修改函数
def qqxing(l = {}):
    l['k'] = 'v'
    print(l)

#在执行
qqxing()
qqxing()
qqxing()

#输出内容
{'k':'v'}
{'k':'v'}
{'k':'v'}

#再修改函数
def qqxing(k, l = {}):
    l['k'] = 'v'
    print(l)

#在执行
qqxing(1)
qqxing(2)
qqxing(3)

#输出内容
{'1':'v'}
{'1':'v', '2':'v'}
{'1':'v', '2':'v', '3':'v'}
  

 

  

posted on 2020-01-07 08:32  herisson_pan  阅读(6)  评论(0)    收藏  举报

导航