如果没有return值,则会返回None。
pass作为占位符,表示什么都不会做。如果没想好怎么写函数中的代码,可以先用pass让代码运行起来。而缺少了pass,代码会报错。
函数可以返回多个返回值,但其实是返回的单一值:tuple。但写起来方便,可以使用多个变量来接受一个tuple。
def test(x):
return 1,2
x, y = test('a')
print(test('a'))
输出:
(1, 2)
函数除了必选参数外,还提供了默认参数,可变参数和关键字参数,使得定义的函数能处理复杂的参数,简化开发者的调用。
1)默认参数:先定义power函数,计算x的n次方:
def enroll(name, gender, age=6, city='Beijing'):
# 第3、4个参数设置默认值
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
return
print(enroll('a', 'F')) # 等同于调用enroll('a','F',6,'Beijing')
print(enroll('a', 'F', city='BJ')) # 当参数不按定义的顺序传递时,需要把参数名写上,此时age还使用默认值
设置默认参数有几点需要注意:
必选参数在前,默认参数在后。否则无法判断参数的值该是哪个
变化大的参数放前面,变化小的参数放后面。变化小的可以设置为默认参数,好处就是降低了调用函数的难度。
默认参数必须指向不可变对象
2)可变参数,传入函数的参数个数是可变的,可以是0, 1...个。可变参数是在参数前面加上了*,例如:
def cacl(*number): # number接收的是一个tuple
for x in number:
print(x)
cacl()
cacl(1,2,3) # 函数可以传任意值
nums = [1,2,3]
cacl(*nums) # nums前加一个*,将list或tuple的值作为可变参数传递
3)关键字参数:允许传递0或任意个含参数名的参数,这些关键字参数在函数内部组装成一个dict。关键字参数可以扩展函数的功能。例如:
def person(name, age, **kw):
print('name', name, 'age', age, 'others', kw)
# 可传入任意个关键字参数
person('peter', 10, gender='M', job='Engineer')
# 可先组装dict,然后通过**dict将所有key-value用关键字参数传入函数的**kw,kw获得dict的一份拷贝,对kw的改动不会影响外面的dict
dict = {'gender':'M', 'job':'Engineer'}
person('peter', 10, **dict)
4)命名关键字参数:

函数调用者可以传入任意不受限制的关键字参数,在函数内部可以通过kw检查到底传递了哪些。例如:
如果要限制关键字参数的名字,可以使用命名关键字参数,和关键字参数**kw不同,命名关键字参数需要一个特殊的分隔符*,*后面的参数被视为命名关键字参数。例如:
函数内部可以调用其他函数,如果一个函数在内部调用本身,则这个函数是递归函数。例如:计算n的阶乘用递归方式写出来就是
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70754-4.html
说的太好了
康师傅在大陆确实赚的太多太多