Python函数

文章目录

  • 函数
    • 定义函数
    • 函数的传参
    • 全局变量和局部变量
    • 匿名函数lambda

函数

定义函数

### 定义函数
>>> 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

# 定义一个轻量化的函数
# 即用即删除
#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))

你可能感兴趣的:(Python,python,开发语言)