### 定义函数
>>> def fib2(n): # return Fibonacci series up to n
... """Return a list containing the Fibonacci series up to n."""
... result = []
... a, b = 0, 1
... while a < n:
... result.append(a) # see below
... a, b = b, a+b
... return result
...
>>> f100 = fib2(100) # call it
>>> f100 # write the result
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
# 必传参数:没有默认值,如果不传会报错,顺序要相同
def add (a, b):
return a + b
result = (2, 3)
print (result)
# 默认参数:如果传入了默认参数,则使用传入的
def add (a, b = 1):
return a + b
result = add (1)
print (result)
print (add (1, 4))
# 不确定参数:不确定数量
# def add (*args, **kwargs)
# *args:将无参数的值合并成元组
# **kwargs:将有参数与默认值的语句合并成字典
def test (*args, **kwargs):
print (args, type (args))
print (kwargs, type (kwargs))
test (1,2,3,4,5,6,name='ddd',age=33,top=111)
#参数定义从左到右依次是必传、默认、可变
#def test (a, b = 1, *args, **kwargs)
# 参数定义类型
# 参数名+冒号+类型
def person (name:str, age:int=33):
print (name, age)
person ('sss', 11)
j = 5 #全局变量
def sum1 (i):
i = i + j #i为局部变量
return i
i = 8 #与函数中的i是不同的
#函数内部默认只能读取全局变量的值,若需要修改全局变量,则需要使用global关键字进行事先声明,否则在函数内修改全局变量会报错
def sum1(i):
global j
i = i + j # i为局部变量
j = j + 5
return i
如果在函数中要使用列表、字典,则不需要声明global
# 定义一个轻量化的函数
# 即用即删除
#lambda [para1, para2, ...]:expression 没有函数名称,参数可选,expression实现函数功能并返回操作结果,匿名函数在一行内实现所有定义
# 无参
f = lambda: 1
print (f())
# 有参
f1 = lambda x, y : x * y
print (f1 (3, 4))
f2 = lambda x, y = 2: x > y
print (f2(1))