函数以及参数
Posted sssun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数以及参数相关的知识,希望对你有一定的参考价值。
一、函数
1.作用: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
2.定义函数:
1)函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
2)任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
3)函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
4)函数内容以冒号起始,并且缩进。
5)return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def test(x): """ 简单的测试函数 :param x: :return: """ y = 2 * x + 1 return y v = test(3) print(v) # 7
3.函数返回值:函数可以只返回一个数据类型,也可返回多个数据类型和None,返回多个数据类型时相当于返回一个元组。
# 返回多个值 def test1(): a = 45, b = "Sun" c = {1: "xx", 2: "yy"} return a, b, c # 返回一个值 def test2(): a = 45, b = "Sun" c = {1: "xx", 2: "yy"} return c # 无返回值 def test3(): a = 45, b = "Sun" c = {1: "xx", 2: "yy"} def test4(): a = 45, b = "Sun" c = {1: "xx", 2: "yy"} return x = test1() y = test2() z = test3() v = test4() print(x) # ((45,), ‘Sun‘, {1: ‘xx‘, 2: ‘yy‘}) print(y) # {1: ‘xx‘, 2: ‘yy‘} print(z) # None print(v) # None
二、参数
1.位置参数(必选参数):必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
# 必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 def mytest1(v): print(v) mytest1(666) # 666
2.默认参数:降低调用函数的难度。
1)必须参数在前,默认参数在后。
2)变化大的参数放前面,变化小的参数放后面。变化小的参数可与作为默认参数。
3)当有多个默认参数时,调用该函数时可以按顺序提供默认参数,不需要指明,当不按顺序提供默认参数时,需要把参数写上。
4)默认参数必须传入不可变对象。
def mytest2(x, y=2, z=5): v = x + y + z return v p1 = mytest2(3) p2 = mytest2(1, 5) p3 = mytest2(2, 5, 6) p4 = mytest2(4, z=10, y=20) print(p1) # 10 print(p2) # 11 print(p3) # 13 print(p4) # 34
3.可变参数:实际上传入的是元组。
1)可传入0~N个参数。
2)如果传入的是list或者tuple,直接在参数前面加上“*”。
def mytest3(*num): sum = 0 for i in num: sum = sum + i return sum s1 = mytest3(5) print(s1) # 5 s2 = mytest3(5, 9, 8) print(s2) # 22 li = [25, 89, 78] s3 = mytest3(25, *li) print(s3) # 217
4.关键字参数:
1)允许传入0或任意个含参数名的参数,这些关键字在函数内部自动组装为一个dict。
2)当传入的是字典时,直接在参数前面加上“**”。
def mytest4(name, age, **kw): msg = "I am {}, age is {}, other is {}".format(name, age, kw) return msg m1 = mytest4("Sun", 20, **{"city": "SD", "job": "Stu"}) print(m1) # I am Sun, age is 20, other is {‘city‘: ‘SD‘, ‘job‘: ‘Stu‘} m2 = mytest4(name="Li", age=18, city="HN", job="Work") print(m2) # I am Li, age is 18, other is {‘city‘: ‘HN‘, ‘job‘: ‘Work‘}
5.命名关键字参数:
1)与关键字不同的是命名关键字参数需要一个特殊的分隔符“*”,“*”后面的参数被视为命名关键字参数。
2)必须传入参数名。
3)在定义参数时命名关键字参数可以被赋值。
4)如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符“*”了。
def mytest5(name, age, *, city="BJ", job): msg = "I am {}, age is {}, city is {}, job is {}".format(name, age, city, job) return msg t = mytest5("Sun", 18, job="Stu") print(t) # I am Sun, age is 18, city is BJ, job is Stu def mytest6(name, age, *args, city="BJ", job): msg = "I am {}, age is {}, other is {},city is {}, job is {}".format(name, age, args, city, job) return msg t = mytest6("Sun", 18, "吃", "喝", "拉", "撒", job="Stu") print(t) # I am Sun, age is 18, other is (‘吃‘, ‘喝‘, ‘拉‘, ‘撒‘),city is BJ, job is Stu
6.参数组合:
1)顺序:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。
2)对于任意的函数都可以通过类似func(*args.**kw)来调用。
以上是关于函数以及参数的主要内容,如果未能解决你的问题,请参考以下文章