python基础 函数定义 返回值 参数

函数定义

#python中函数定义。def函数定义的关键字,fun1函数名,x为函数的形参可以有多个,多个之间用“,”隔开;return 函数返回值的关键字,python中return可以是非必要
def fun1(x):
    x += 1
    return x

函数返回值

# 函数返回值可以有多个,之间使用“’”分隔,返回值讲多个值组成的元组进行返回。 当无return时python会隐式return “None”,如果只返回一个值就返回这个值本身
def fun2(x, y):
    return x, y
print(fun2(3,4), type(fun2(3,4))) #(3, 4) <class ‘tuple‘>
print(fun1(5), type(fun1(5))) #6 <class ‘int‘>
def fun3(x,y):
    z = x + y
print(fun3(1,2),type(fun3(1,2))) #None <class ‘NoneType‘>

函数的参数以及调用

#函数调用形式:函数名(实参)fun3为函数名,1和2为函数实参,实参分别传递给fun3函数定义的形参x和y,两者一一对应。
fun3(1,2)

#函数非固定参数
#默认参数:函数定义时直接给形参赋值,此值即作为默认的实参值如果函数调用时实参没有给此传递实参,默认参数的形参需要写在所有参数的最后面
def fun4(x, y=2):
    print(x, y)
fun4(3, 4) #3 4
fun4(3) #3 2

#可变参数
#*args:可以接收多个实参,args是这多个实参组成的元组,*args需要写在非默认形参之后,默认形参之前
def fun5(*args):
    print("args is :", args)
    print("*args is :", *args)
fun5(1, 2, 3) #args is : (1, 2, 3);*args is : 1 2 3;
#相反的,当存在一个元组或者列表,我们想直接取其中的数值而不是列表本身也可以使用*符号,如下示例中fun6需要传入两个参数,而实际传递的为一个列表,可以对此列表取*操作
def fun6(x, y):
    print(x + y)
for i in [[1, 2], [3, 4], [5, 6]]:   # 3 7 11
    fun6(*i)


#**kwargs将多个关键字参数转换为字典,kwargs是这多个实参组成的字典,**kwargs需要写在*args之后,默认形参之前
def fun7(**kwargs):
    print("kwargs is :", kwargs) #**kwargs是多个键值对不是数据结构无法打印
fun7(name="xx1",age=29) #kwargs is : {‘name‘: ‘xx1‘, ‘age‘: 29}
#相反的,当存在一个字典,我们想直接取其中k:v不是字典本身也可以使用**符号,如下示例中fun6需要传入两个参数,而实际传递的为一个列字典,可以对此字典取**操作
for i in [{"x":1, "y":2}, {"x":3, "y":4}, {"x":5, "y":6}]:
    fun6(**i) # 3 7 11
 

相关推荐