首页 > 编程语言 > 详细

Python_复习_默认参数的陷阱_24

时间:2019-04-05 16:43:03      阅读:136      评论:0      收藏:0      [点我收藏+]
# 函数
# 可读性强 复用性强
# def 函数名():
# 函数体
#return 返回值
# 所有的函数 只定义不调用就一定不执行
#先定义后调用

#函数名() #不接收返回值
#返回值 = 函数名() #接收返回值

#返回值
# 没有返回值 :默认返回None
# 不写return:函数内的代码执行完毕自动结束
# 只写return:结束一个函数
# return None
# 返回一个值 :结束了函数且返回一个值,可以是任意的值
# 返回多个值 : 多个值之间用逗号隔开,接收的时候可以用一个变量接收(元组),也可以用等量的多个变量接收

# def f(a):
# return ‘栗子‘
#
# ret = f(‘苹果‘)
# print(f(‘苹果‘))

#参数
#形参 定义函数的时候
# 位置参数 :必须传
# *args :动态参数 可以接收任意多个按位置传入的参数
# 默认参数 : 可以不传 —— 陷阱
# **kwargs : 动态参数 可以接受任意多个按关键字传入的参数
#实参 调用函数的时候
# 按照位置传参数
# 按照关键字传参数
# 可以混用 位置参数必须在关键字传参之前
# 不能对一个参数重复赋值

# def 娃哈哈(*args):
# print(args)
#
# # 娃哈哈(1,2,3,4)
# l = [1,2,3,4]
# 娃哈哈(*l)






默认参数的陷阱

def qqxing(l = []):
    l.append(1)
    print(l)

qqxing()     #[1]
qqxing([])   #[1]
qqxing()     #[1,1]
qqxing()     #[1, 1, 1]

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



def qqxing(l = {}):
    # l.append(1)
    l[k] = v
    print(l)

qqxing()     #{‘k‘: ‘v‘}
qqxing()     #{‘k‘: ‘v‘}
qqxing()     #{‘k‘: ‘v‘}


def qqxing(k,l = {}):
    # l.append(1)
    l[k] = v
    print(l)

qqxing(1)     #{1: ‘v‘}
qqxing(2)     #{1: ‘v‘, 2: ‘v‘}
qqxing(3)     #{1: ‘v‘, 2: ‘v‘, 3: ‘v‘}

def qqxing(k, l = {}):
    # l.append(1)
    l[k] = v
    print(l)

qqxing(1)          #{1: ‘v‘}
qqxing(2, l={})    #{2: ‘v‘}
qqxing(3)          #{1: ‘v‘, 3: ‘v‘}

 

Python_复习_默认参数的陷阱_24

原文:https://www.cnblogs.com/LXL616/p/10659010.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!