- 定义函数
1.使用def,依次写出函数名、括号、括号中的参数和冒号def xxxxx(x):
,这里的参数不需要声明类型,函数要有return语句。使用def,依次写出函数名、括号、括号中的参数和冒号def xxxxx(x):
,这里的参数不需要声明类型,函数要有return语句。
2.空函数:用pass做占位符
def nop():
pass
3.返回多个值: return x1,x2,y1,y2
- 默认参数
例:
def power(x, n=2):
调用的时候power(3)
,n此时n=2.
也可以手动给n重新赋值 power(3,4)
注意:默认参数必须指向不变对象!!!
- 可变参数
传入的参数个数是可变的,从0个到n个。例如
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用时可以进行简化:
calc(1, 2, 3)
对于已有的list和tuple传入可变参数中:
也可以用*
num = [1,2,3]
cacl(*num)
- 关键字参数,允许传入任意个含参数名的参数,这写关键字参数在函数内部自动组装为一个dict,对函数的功能进行扩展。
def person(name, age, **kw):
- 调用带有可变长参数对象函数,可以先组装一个dict,然后把这个dict作为参数传进去。例如:
extra = [city:'Beijing',job:'Engineer']
person('Jack',24,**extra)
-
命名关键字参数
对于关键字参数,函数调用者可以传入任意不受限制的关键字参数,传入了哪些可以在函数内部中通过kw来进行检查。
如果要限制关键字参数的名字,就可以用命名关键字参数。例如:
def person(name, age, * ,city, job):
*后面的参数被命名为关键字参数。如果函数中已经有了一个可变参数,那么后面的关键字参数命名就不需要一个特殊的分隔符
'*'
了。例如def person(name,age,*args,city,job)
。命名关键字参数在函数调用时必须传入参数名,否则将报错
person('Jack', 24, 'Beijing', 'Engineer')
(该句代码会报错)命名关键字参数也可以有默认值,例如:
def person(name, age, *, city='Beijing', job):
在调用的时候可以不传入city参数:person('Jack', 24, job='Engineer')
-
参数组合
在Python中定义参数,可以选用必选参数,默认参数,可变参数,关键字参数和命名关键字参数,这五种参数可以组合进行使用。
例如:def f1(a, b, c=0, *args, **kw):
需要注意的是:虽然五种可以随意组合,但不要同时使用过多的组合,否则函数的接口理解性会很差。