函数的定义形式
def <name>(arg1, arg2,..., argN):
<statements>
函数的名字以字母开头,可以包括下划线,但不能使用python的关键字。函数体的每个语句都需要缩进。
1. 无返回值的函数
def hello():
print('hello python')
def hello1(name):
print('hello %s' %name)
2. 有返回值的函数
def sum(x, y):
return (x + y)
3.默认参数的函数
def func(x, y=100):
print(x, y)
func(10)
func(100, 200)
func(y = 500, x = 200)
输出
10 100
100 200
200 500
4.可变参数的函数
- 可变参数:参数前加星号,表示将其余位置参数收集到一个元组
- 不能收集关键字参数
def func(name, *nums):
print(name)
print(nums)
func('Tony',1,2,3,4,5)
输出
Tony
(1, 2, 3, 4, 5)
5.关键字参数的函数
- 关键字参数:调用函数传入参数时提供参数名
- 参数前加两个星号,可以把关键字参数收集到字典
def function(name, **kvs):
print(name)
print(kvs)
function('Jobs', city='shenzhen', addr='futian')
输出
Jobs
{'city': 'shenzhen', 'addr': 'futian'}
6.命名关键字参数的函数
def func(*, city, addr): # *用于和普通参数作分割,*args是一个效果
print(city, addr)
func(city='beijing', addr='tiananmen')# 必须传入参数名
输出
beijing tiananmen
7.复杂参数
def func(a, b, c=0, *args, **kvs):
print(a,b,c,args,kvs)
func(1,2)
func(1,2,3)
func(1,2,3,4,'a','b')
func(1,2,3,4,'a','b',city='Beijing',addr='Tiananmen')
func(1,2,3,*(4,'a','b'),**{'city':'Beijing','addr':'Tiananmen'})
输出结果
1 2 0 () {}
1 2 3 () {}
1 2 3 (4, 'a', 'b') {}
1 2 3 (4, 'a', 'b') {'city': 'Beijing', 'addr': 'Tiananmen'}
1 2 3 (4, 'a', 'b') {'city': 'Beijing', 'addr': 'Tiananmen'}
lambda函数
定义lambda函数的形式:
lambda 参数 : 表达式
举个例子
g = lambda x,y: x*y
print(g(3,4))
# 带有默认参数
add = lambda x,y=0,z=0: x+y+z
print(add(1))
print(add(3,4,5))